1 Lập trình cấu trúc Structured Programming2 Sự trừu tượng hóa Abtraction 3 Lập trình hướng đối tượng 4 Một số khái niệm cơ bản 5 Các tính chất của lập trình hướng đối tượng 6 Lịch sử 7
Trang 1Giới thiệu về lập trình
hướng đối tượng
Trang 21) Lập trình cấu trúc (Structured Programming)
2) Sự trừu tượng hóa (Abtraction)
3) Lập trình hướng đối tượng
4) Một số khái niệm cơ bản
5) Các tính chất của lập trình hướng đối tượng
6) Lịch sử
7) Các ngôn ngữ lập trình hướng đối tượng
Trang 3Lâp trình hướng cấu trúc (Structured programming)
Tập trung vào công việc cần thực hiện (thuật toán)
Chương trình lớn được chia thành các hàm nhỏ hơn
Phần lớn các hàm sử dụng dữ liệu chung
Dữ liêu được chuyển từ hàm này sang hàm khác
Hàm biến đổi dữ liệu từ dạng này sang dạng khác
Sử dụng cách tiếp cận top-down trong thiết kế chương trình
Trang 4Sự trừu tượng hóa (Abstraction)
Khả năng quan sát một sự việc mà không cần xem xét đến các chi tiết bên trong của nó
Trừu tượng hóa theo chức năng
(Functional abstraction)
Trừu tượng hóa dữ liệu (Data abstraction)
Trang 5Khái niệm lập trình hướng đối tượng
Lập trình hướng đối tượng là một phương pháp thiết kế
và phát triển phần mềm dựa trên kiến trúc lớp và đối
Trang 6Lập trình hướng đối tượng (Object-Oriented Programming)
Tập trung vào dữ liệu thay cho các hàm
Chương trình được chia thành các đối tượng
Dữ liệu được đóng gói lại, không cho phép các hàm ngoại lai truy nhập tự do
Các đối tượng tác động và trao đổi thông tin với nhau qua các hàm
Chương trình được thiết kế theo cách tiếp cận từ dưới lên(bottom- up)
Trang 7Một số khái niệm cơ bản
Đối tượng (Object)
Trang 8Đối tượng (Object)
Đối tượng (object) là một thực thể phần mềm bao bọc các thuộc tính và các phương thức liên quan
Trạng thái Hành động
Xe đạp
Trang 9Đối tượng (Object)
Thuộc tính = biến
Phương thức = hàm
Trang 10Lớp (Class)
Lớp (class) là một thiết kế (blueprint) hay một mẫu ban đầu (prototype) định nghĩa các thuộc tính và các phương thức chung cho tất cả các đối tượng của cùng một loại
Class defines the abstract characteristics of a thing (object), including the thing's characteristics (its attributes, fields or properties) and the thing's behaviors (the things it can do, or methods, operations or features).
Đối tượng là một thể hiện của một lớp (instance of a class)
Trang 11Lớp (Class)
Trang 12Lớp (Class)
Trang 13Data member (fields, attributes)
Thuộc tính (attribute) là dữ liệu trình bày các đặc điểm
Trang 14Phương thức (Method)
Phương thức (method) có liên quan tới những thứ mà đối tượng có thể làm Một phương thức đáp ứng một chức năng tác động lên dữ liệu của đối tượng (thuộc tính)
Methods (sometimes referred to as "functions") are an object's abilities (In language, methods are verbs)
Trang 15Thông điệp (Message)
Một thông điệp (message) là một lời yêu cầu một hoạt động Một thông điệp được truyền khi một đối tượng
triệu gọi một hay nhiều phương thức của đối tượng khác
để yêu cầu thông tin
Message passing is the process by which an object
sends data to another object or asks the other object to invoke a method
Trang 16Thông điệp (Message)
Một thông điệp gồm có:
Đối tượng nhận thông điệp
Tên của phương thức thực hiện
Các tham số mà phương thức cần
Trang 17Các tính chất của lập trình hướng đối tượng
Tính trừu tượng (abstraction)
Tính đóng gói (encapsulation)
Tính đa hình (polymorphism)
Tính kế thừa (inheritance)
Trang 18Tính trừu tượng (abstraction)
Không chú ý đến một số khía cạnh của thông tin
Tập trung vào những cốt lõi cần thiết
Lớp trừu tượng (abstract class)
Trang 20Tính đa hình (polymorphism)
Với cùng một hành động (phương thức) ứng dụng cho các đối tượng thuộc các lớp khác nhau thì có thể đưa đến những kết quả khác nhau
Tinh_chu_vi P = (a + b) * 2
P = 2 * r * Pi Tinh_chu_vi
Trang 21Tính kế thừa (inheritance)
Thừa kế nghĩa là các hành động (phương thức) và các thuộc tính được định nghĩa trong một lớp có thể được thừa kế hoặc được sử dụng lại bởi lớp khác
Trang 22Hinh_chu_nhat Hinh_tron
Hinh_vuong Tinh_chu_vi
Tinh_chu_vi Tinh_chu_vi
Tinh_chu_vi
Trang 23Lịch sử
Thập niên 1960: xuất hiện (PDP-1 của MIT, Simula)
Thập niên 1980: phát triển (C++, GUI)
Thập niên 1990: công nghệ máy ảo (Java Virtual Machine, Microsoft.NET Framework)
Trang 24Ngôn ngữ lập trình hướng đối tượng