Bài giảng Chương 2: Giới thiệu về lập trình hướng đối tượng OOP sẽ giới thiệu tới các bạn tổng quan về các kỹ thuật lập trình: Lập trình cổ điển, lập trình cấu trúc, lập trình hướng đối tượng; một số khái niệm cơ bản về lập trình hướng đối tượng.
Trang 1Chương 2: GiỚI THIỆU VỀ LẬP TRÌNH
HƯỚNG ĐỐI TƯỢNG OOP
NỘI DUNG
Trang 2I GiỚI THIỆU
• Lập trình cấu trúc là phương pháp tổ chức, phân chia chương trình thành các chương trình con (hàm, thủ tục) Mỗi hàm có dữ liệu riêng, thực hiện các công việc rời rạc Thông qua các ngôn ngữ Foxpro, Pascal, C
đa số những người làm tin học đã khá quen biết với phương pháp lập trình này
• Lập trình hướng đối tượng dựa trên việc tổ chức
chương trình thành các lớp Khác với hàm và thủ tục, lớp là một đơn vị bao gồm cả dữ liệu và các phương thức xử lý Vì vậy lớp có thể mô tả các thực thể một cách chân thực, đầy đủ cả thành phần dữ liệu và yêu cầu quản lý Tư tưởng lập trình hướng đối tượng được
áp dụng trong các ngôn ngữ như Microsoft Access, Visual Basic, C++, Visual C, C#,
Trang 3II TỔNG QUAN VỀ CÁC KỸ THUẬT LẬP TRÌNH
1 Lập trình cổ điển:
a Lập trình tuyến tính
Máy tính đầu tiên được lập trình bằng mã nhị phân,
sử dụng các công tắc cơ khí để nạp chương trình
Cùng với sự phát triển máy tính, ngôn ngữ lập trình
cấp cao cũng ra đời và đưa vào sử dụng Ngôn ngữ
lập trình tuyến tính đầu tiên thiết kế làm các công việc đơn giản như tính toán, chương trình ngắn
• Giải quyết các bài toán tương đối nhỏ, đơn
giản
• Sử dụng biến tổng thể, lạm dụng lệnh GOTO
Trang 4Lập trình tuyến tính
Đặc điểm:
• Chỉ gồm một chương trình chính
• Chỉ dùng hai cấu trúc lệnh là cấu trúc lệnh tuần tự
(sequential) và nhảy không điều kiện (goto)
• Không sử dụng lại được các đoạn mã
• Không có khả năng kiểm soát phạm vi truy
xuất dữ liệu
• Hệ thống thư viện nghèo nàn và lập trình trở
nên khó khăn
• Mọi dữ liệu trong chương trình là toàn cục
• Dữ liệu có thể bị sửa đổi ở bất cứ vị trí nào
trong chương trình
Trang 5b Lập trình cấu trúc / lập trình thủ tục
(structured/procedural programming)
• Ra đời vào những năm 70.
• Các ngôn ngữ như: Pascal, C, Foxpro…
• Người lập trình phân tích nhiệm vụ lớn thành nhiều
công việc nhỏ hơn, sau đó dần dần chi tiết hơn, cụ thể hơn Tức là chương trình được chia nhỏ thành những chương trình con Trong Pascal chương trình con là 2 kiểu thủ tục (Procedure) và hàm (Function), trong C chỉ có 1 loại là hàm
• Lập trình theo nguyên lý từ trên xuống.
• Các chương trình con:
- Độc lập với nhau và có dữ liệu riêng Chúng được ghép nối với nhau cho ra một hệ thống chương trình
Trang 6Lập trình cấu trúc
• Chương trình được cục bộ hóa, do đó dễ
hiểu, dễ bảo trì hơn
• Dễ dàng tạo ra các thư viện phần mềm.
• Dữ liệu và code xử lý tách rời
• Người lập trình phải biết cấu trúc dữ liệu.
• Khi thay đổi cấu trúc dữ liệu thì code phải thay
đổi theo
• Khó đảm bảo tính đúng đắn của dữ liệu
• Không tự động khởi tạo hay giải phóng dữ liệu
động
Trang 73 Lập trình hướng đối tượng
(Object Oriented Programming)
• Là phương pháp lập trình:
– Lấy đối tượng (Object) làm nền tảng để xây dựng
giải thuật, xây dựng chương trình Đối tượng đóng vai trò trung tâm của lập trình, nên gọi là nguyên lý lập trình từ dưới lên
– Đối tượng được hiểu như một thực thể (instance),
đối tượng được đặc trưng bởi một số thao tác và các thông tin
– Chương trình được chia thành các lớp đối tượng– Dữ liệu được đóng gói, che dấu và bảo vệ
– Đối tượng làm việc qua thông báo.
Trang 8Ưu điểm của OOP
• Ưu điểm chính:
– Loại bỏ các đoạn mã lặp lại, viết code hiệu
quả hơn, dễ bổ sung và dễ mở rộng
– Dễ học hơn lập trình thủ tục
– Tạo ra các chương trình an toàn, bảo mật
– Rút ngắn thời gian xây dựng hệ thống
– Chương trình được thiết kế theo đúng qui
trình, …
Trang 9Một số ngôn ngữ OOP
• Hầu hết các ngôn ngữ lập trình đều hỗ trợ
OOP, có thể chia thành 2 loại:
– Ngôn ngữ hỗ trợ hướng đối tượng:
• Object C, Pascal, C++, Delphi…
– Ngôn ngữ hướng đối tượng:
• SmallTalk, JAVA
• Một số ngôn ngữ OOP hiện nay:
– Visual C++
– VB.NET, C#
Trang 10– Cơ sở dữ liệu hướng đối tượng
– Hệ siêu văn bản, đa phương tiện
– Trí tuệ nhân tạo
– Lập trình song song, mạng nơron …
Trang 11III Một số khái niệm cơ bản
về lập trình hướng đối tượng
- Hệ thống hướng đối tượng
- Lớp và đối tượng
- Thuộc tính và Phương thức
- Lớp & Lớp con
- Lớp cơ sở trừu tượng
- Truyền thông điệp
- Sự trừu tượng hoá
- Sự đóng gói và che dấu thông tin
- Thừa kế
- Đa hình
Trang 132 Lớp (class) và đối tượng (Object)
• Lớp đối tượng là khuôn mẫu để sinh ra đối
tượng
• Đối tượng
- Là thể hiện (instance) của một lớp
- Là khái niệm trừu tượng phản ánh các thực thể trong thế giới thực
- Có thể là một thực thể vật lý
- Có thể là một khái niệm trừu tượng
- Chính là các thực thể trong hệ thống hướng đối
tượng
• Đối tượng có: Định danh (tên), thuộc tính (dữ
liệu), hành vi (phương thức)
• Sự khác biệt giữa lớp và đối tượng giống như sự
khác biệt giữa tập hợp và phần tử trong tập hợp
Trang 14Lớp (Class) và Lớp con (SubClass)
Lớp: là tập hợp các đối tượng có cùng thuộc tính
• Những đối tượng của cùng một lớp có cùng định
nghĩa về các thao tác và cùng cấu trúc dữ liệu của chúng
Lớp con :
– Là lớp thông thường
– Có thêm tính chất kế thừa đặc tính của lớp khác
Trang 153 Thuộc tính lớp và phương thức lớp
Thuộc tính lớp (class attribute) là một hạng mục dữ liệu liên kết với một lớp cụ thể mà không liên kết với các thể hiện của lớp Nó được định nghĩa bên trong định nghĩa lớp và được chia sẻ bởi tất cả các thể hiện của lớp
Phương thức lớp (class method) là một phương thức được triệu gọi mà không tham khảo tới bất kỳ một đối tượng nào Tất cả các phương thức lớp ảnh hưởng đến toàn bộ lớp chứ không ảnh hưởng đến một lớp riêng rẽ
Trang 164 Thuộc tính và phương thức
• Thuộc tính (attribute) là dữ liệu trình bày các đặc
điểm về một đối tượng
• Thuộc tính của đối tượng bao gồm:
– Hằng, biến
– Tham số nội tại.
• Thuộc tính được xác định kiểu, gồm:
– Kiểu cổ điển
– Kiểu do người dùng định nghĩa
Trang 17Thuộc tính và phương thức
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)
• Phương thức là:
– Các hàm nội tại của đối tượng
– Có kiểu trả về
– Tên gọi khác hàm thành viên.
• Một đối tượng sau khi khai báo sẽ được cấp phát
một vùng nhớ riêng chứa các thuộc tính, nhưng không có vùng nhớ riêng cho các phương thức
Trang 184 Lớp cơ sở trừu tượng
• Là lớp mà nó không thể trở thành một lớp thực tế
nào
• Là lớp chỉ được dùng cơ sở cho lớp khác.
• Được thiết kế nhằm tạo ra lớp có đặc tính tổng
quát
• Bản thân nó chưa có ý nghĩa nên chưa thể viết
mã cho đối tượng
• Không hề có đối tượng nào của lớp trừu tượng
được tạo ra
Trang 195 Thông điệp và truyền thông điệp
Thông điệp (message): là một lời yêu cầu một hoạt động 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
Truyền thông điệp: 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
-Truyền thông điệp ta hiểu là sử dụng đối tượng để gọi
các phương thức của đối tượng đó
Hệ thống yêu cầu đối tượng thực hiện phương
thức như sau:
-Gửi thông báo và tham số cho đối tượng
-Kiểm tra tính hợp lệ của thông báo
Trang 206 Sự trừu tượng hoá
• Khái niệm:
– Là khả năng bỏ qua hay không để ý tới các
thành phần không quan trọng
• Các loại trừu tượng hoá:
– Trừu tượng hoá dữ liệu: không quan tâm các
chi tiết không quan trọng bên trong
– Trừu tượng hoá chức năng: không quan tâm
làm thế nào để thực hiện công việc
• Tóm lại:
– Chỉ quan tâm tới đặc điểm quan trọng
– Bỏ qua các chi tiết không liên quan
Trang 217 Sự đóng gói (Encapsulation)
và che dấu thông tin
• Khái niệm:
– Là cơ chế ràng buộc dữ liệu và các thao tác trên
dữ liệu thành thể thống nhất, thuận tiện cho việc
sử dụng lại Sự đóng gói không chỉ là gom chung
dữ liệu và chương trình thành một khối mà phải
có sự đồng nhất dữ liệu và các thao tác lên nó
• Đóng gói gồm:
– Bao gói: người dùng giao tiếp với hệ thống qua
giao diện
– Che dấu: ngăn chặn các thao tác không được
phép từ bên ngoài Che dấu người lập trình khác
có khả năng thay đổi dữ liệu bên trong lớp
• Ưu điểm: Quản lý sự thay đổi, bảo vệ dữ liệu.
Trang 22dụng lại bởi lớp khác
Trang 23Thừa kế
– Khả năng cho phép xây dựng lớp mới được thừa
hưởng các thuộc tính của lớp đã có (lớp cơ sở)
Do đó lớp mới không phải xây dựng lại từ đầu
– Lớp mới nhận được có thể bổ sung các thành
phần khác lớp cơ sở
– Những lớp thừa kế những hành vi và dữ liệu của
lớp cơ sở gọi là lớp dẫn xuất Lớp dẫn xuất có thể là lớp cơ sở của lớp dẫn xuất khác
• Các loại kế thừa:
– Đơn kế thừa
– Đa kế thừa
Trang 24đối tượng/các lớp khác nhau
– Khả năng đưa một phương thức có cùng tên
Trang 2510 Các bước thiết kế chương trình OOP
• Các bước chính:
– Xác định các dạng đối tượng (lớp)
– Tìm dữ liệu dùng chung, chia xẻ
– Xác định lớp cơ sở dựa vào dữ liệu dùng
chung
– Xây dựng lớp dẫn xuất từ lớp cơ sở