You are on page 1of 36

Chương 2

Cơ bản về Lập trình hướng đối tượng

1
Mục tiêu
• Giới thiệu các phương pháp lập trình (PPLT).
• Phân tích những ưu và nhược điểm của PPLT
cấu trúc.
• Giới thiệu các khái niệm cơ bản của PPLT
hướng đối tượng (HĐT).

2
1. Lịch sử phát triển các PP lập trình
• PP Lập trình tuyến tính.
• Dùng trong thời kỳ sơ khai của lập trình.
• Chỉ dùng cấu trúc tuần tự và lệnh nhảy.
• Việc lập trình là “nghệ thuật”.
• Không chia sẻ việc lập trình cho nhiều người.

3
1. Lịch sử phát triển các PP.. (tiếp)
• PP Lập trình cấu trúc (chức năng).
• Là kết quả của một cuộc cách mạng trong lập
trình.
• Chia chương trình thành các đơn thể
(module).
• Việc lập trình có thể thực hiện theo nhóm.
• Các đơn thể phải dùng chung dữ liệu do đó
khó thay đổi.
4
1. Lịch sử phát triển các PP.. (tiếp)
• PP Lập trình hướng đối tượng.
• Kế thừa những thành tựu của lập trình cấu
trúc.
• PP dựa trên các đối tượng của bài toán.
• Khi định nghĩa các đối tượng thì định nghĩa
luôn phương thức (các thao tác của đối
tượng).
• Khắc phục một số hạn chế của LTCT.
5
1. Lịch sử phát triển các PP.. (tiếp)
• Việc thay đổi và mở rộng chương trình được
thực hiện dễ dàng hơn.
• Dùng mô hình để tự động hơn việc lập trình.
• Việc lập trình gần với mô tả bài toán.

6
2. Một số khái niệm của LTHĐT
• Đối tượng (Object):
• Lớp đối tượng (Class)
• Bao bọc và che dấu thông tin
• Đa hình và nạp chồng
• Kế thừa giữa các lớp
• Cơ chế Liên kết động
• Truyền thông điệp giữa các đối tượng.

7
2.1 Đối tượng (Object)
• Đối tượng là những thực thể của hệ thống.
• Mỗi đối tượng có:
• Định danh (Identifier)
• Những đặc trưng riêng của đối tượng.
• Ví dụ: đối tượng là một sinh viên x
• Có các đặc trưng: họ tên “Nguyễn Văn A”, quê
quán “Bình Định”, năng khiếu “Thể thao”.
• Có các khả năng hoạt động: “đá bóng”, “hát”, …
• Đối tượng có thể là: người, vật, bảng dữ liệu, … hoặc
là những kiểu dữ liệu do người dùng định nghĩa.
8
2.1 Đối tượng (tiếp)
• Đối tượng là kết quả của sự phân tích bài toán
bằng PPLTHĐT.
• Khi cài đặt trên máy tính, đối tượng được cấp
phát một vùng nhớ để lưu trữ những đặc trưng.

9
2.2 Lớp đối tượng
• Lớp đối tượng (lớp – class) là sự trừu tượng hóa
các đối tượng trong hệ thống.
• Lớp là tập hợp những đặc trưng của một số các
đối tượng có những loại đặc trưng giống nhau.
• Ví dụ: những sinh viên trong bài toán quản lý
trường ĐH có chung những đặc trưng:

10
2.2 Lớp đối tượng (tiếp)
• Đều có: họ tên, quê quán, ngày sinh, giới
tính, điểm các môn học, …
• Có thể thực hiện các hành động: mượn tài
liệu ở TV, xem điểm môn học, trả lời tên của
mình, …
• Lớp là sự trừu tượng các đối tượng bằng cách
bỏ đi các đặc trưng không cần thiết, giữ lại
những đặc trưng cần cho hệ thống.

11
2.2 Lớp đối tượng (tiếp)
• Các đặc trưng trong Lớp gồm:
• Các thuộc tính (property, attribute): mô tả đối tượng
thuộc Lớp – còn gọi là dữ liệu.
• Các phương thức (method): là hành vi (thao tác,
hành động) mà đối tượng của Lớp có thể thực hiện.
• Các đặc trưng trong Lớp gọi là thành phần của Lớp.
• Hai đặc trưng trên phải gắn kết với nhau trong một
Lớp.
• Đối tượng được tạo ra từ Lớp đối tượng.
12
2.2 Lớp đối tượng (tiếp)
• Hãy xác định các lớp đối tượng trong bài toán
quản lý bệnh viện?
• Bác sỹ, Y tá, Dược sỹ,…
• Bệnh nhân
• Thuốc, Dụng cụ y tế
• ….
• Hãy xác định các đặc trưng của lớp Bác sỹ, lớp
Bệnh nhân
13
2.2 Lớp đối tượng (tiếp)
• Lớp Bác sỹ: • Lớp Bệnh nhân:
• Tên • Tên
• Chuyên khoa • Địa chỉ
• Nơi đào tạo • Triệu chứng bệnh
• Số năm công tác • Chuẩn đoán bệnh
• Khám bệnh • Khai họ tên
• Kê đơn thuốc • Khai tình trạng SK
• Tự học • Uống thuốc
14
2.2 Lớp đối tượng (tiếp)
• Các đặc trưng của Lớp được xây dựng qua quá trình phân
tích bài toán.
• Biểu diễn lớp bằng sơ đồ:

Tên Lớp
Các thuộc tính
Các phương thức

15
2.2 Lớp đối tượng (tiếp)
• Ví dụ: sơ đồ lớp Sinh Viên
Sinh viên
Họ tên: String
Ngày Sinh: Date
Điểm trung bình: Float
Lấy điểm trung bình()
Mượn sách(Sach)
Trả sách(Sach)

16
2.2 Lớp đối tượng (tiếp)
• Hãy vẽ sơ đồ của lớp Bác Sỹ.

17
2.3 Bao gói và che dấu thông tin
• Tính Bao gói (Encapsulation):
• Mỗi lớp đối tượng bao gói cả 2 thành phần
là: thuộc tính và phương thức.
• Tính Che giấu thông tin (Information Hiding):
• Các thành phần của một lớp có thể được che
giấu để bên ngoài phạm vi của lớp không
thấy (không sử dụng được).

18
2.3 Bao gói và che dấu TT (tiếp)
• Tính che giấu TT giúp việc bảo vệ dữ liệu của các đối
tượng.
• Những thành phần của Lớp được nhìn thấy từ bên
ngoài gọi là Giao diện (Interface).
• Các thành phần của lớp có 3 phạm vi truy xuất:
• public: được phép sử dụng mọi nơi.
• private: chỉ được phép sử dụng trong lớp.
• protected: chỉ được kế thừa cho các lớp con và sử
dụng trong lớp.
19
2.3 Bao gói và che dấu TT (tiếp)
• Ký hiệu phạm vi truy xuất trong lớp:
• public: +
• private: -
Sinh viên
• protected: #
-Họ tên: String
• Ví dụ lớp Sinh viên -Ngày Sinh: Date
-Điểm trung bình: Float
+Lấy họ tên(): String
+Lấy điểm trung bình():Float
+Mượn sách(Sach)
+Trả sách(Sach) 20
2.4 Kế thừa
• Kế thừa (Inheritance):
• Định nghĩa một lớp mới từ một lớp đã có.
• Lớp cho phép kế thừa gọi là: lớp cơ sở (base class) hay
lớp cha (super class).
• Lớp được kế thừa gọi là lớp dẫn xuất (delived class) hay
lớp con (sub class)
• Lớp con có được một số thành phần đã được khai báo trong
lớp cha.
• Lớp con có thể định nghĩa những thành phần riêng của
mình.
21
2.4 Kế thừa (tiếp)
• Các thành phần được kế thừa:
• Thành phần public
• Thành phần protected
• Lớp con có thể cho phép lớp khác kế thừa, khi đó
nó trở thành lớp cha.
• Sơ đồ kế thừa: Lớp Cơ sở

Lớp dẫn xuất

22
2.4 Kế thừa (tiếp)
• Ví dụ: lớp Sinh viên sư phạm (SVSP) kế thừa từ lớp Sinh
viên (SV)

23
SV
#Họ tên: String
#Ngày Sinh: Date
#Điểm trung bình: Float
+Lấy họ tên(): String
+Lấy điểm trung bình():Float
+Mượn sách(Sach)
+Trả sách(Sach)

SVSP
#Nơi Thực tập: String
#Điểm thực tập: Int
+Lấy nơi TT(): String
+Lấy điểm TT():Int 24
2.4 Kế thừa (tiếp)
• Định nghĩa lại (overwritten):
• Lớp con có thể định nghĩa lại các thành phần
được kế thừa trong lớp cha.
• Các đối tượng trong lớp con khi sử dụng các
thành phần định nghĩa lại sẽ dùng các thành
phần định nghĩa ở lớp con.
• Ví dụ:

25
HINH
+ dienTich():Float
+ chuVi(): Float

HCN
- dai: Float
- rong: Float
+ dienTich(): Float
+ chuVi(): Float

26
2.4 Kế thừa (tiếp)
• Phân loại kế thừa:
• Kế thừa đơn: lớp con có 1 lớp cha.
• Đa kế thừa: lớp con có nhiều lớp cha.

27
2.5 Đa hình và nạp chồng
• Đa hình (Polymorphism):
• Các đối tượng khác nhau có chung tên phương thức.
• Các phương thức đa hình phân biệt giữa các loại đối
tượng.
• Ví dụ: các lớp HCN, HTG, HTRON đều có chung các
phương thức dienTich(), chuVi() nhưng khác nhau
giữa các lớp.
• Tính đa hình giúp cho việc lập trình đơn giản hơn khi
thực hiện các chức năng của các đối tượng.

28
2.5 Đa hình và nạp chồng (tiếp)
• Nạp chồng (Overloading):
• Một phương thức (hàm) có thể có nhiều dạng khác
nhau trong một lớp.
• Các hàm cùng tên nhưng khác nhau tham số.
• Khi sử dụng sẽ tự động nhận biết hàm phù hợp nhất.
• Ví dụ: các dạng khác nhau của hàm max:
• Max(int, int): int
• Max(float, float): float
• Max(int, int, int): int
• …
29
2.6 Liên kết muộn
• Liên kết muộn (Late Binding):
• Liên kết các đối tượng với các chức năng khi
gọi thực hiện.
• Trong PPLTCT liên kết ngay khi biên dịch.
• Nhờ liên kết muộn mà thực hiện được đa hình,
định nghĩa lại, nạp chồng,….

30
2.7 Truyền thông báo
• Truyền thông báo (TTB)(Message Passing)
• Sự trao đổi giữa các đối tượng trong chương trình HĐT.
• Là việc gọi thực hiện một phương thức của một đối
tượng.
• Ví dụ: x.muonSach(s);
• Cơ chế TTB trong LTHĐT giúp mô phỏng gần thực tế hơn.
• Khi TTB phải chỉ rõ: đối tượng, phương thức và những
thông tin kèm theo phương thức.
• Việc TTB chỉ thực hiện trong khi đối tượng tồn tại.

31
3. Các bước LTHĐT
• Phân tích chương trình thành các lớp đối tượng
với các thuộc tính và phương thức cần thiết.
• Tạo ra các đối tượng từ các lớp đối tượng.
• Xác định việc truyền thông báo giữa các đối
tượng.

32
4. Các ưu điểm của PPLTHĐT
• Nhờ kế thừa tiết kiệm được thời gian viết mã
lệnh và bảo trì.
• Việc xây dựng chương trình thực hiện theo quy
trình (nhờ TTB).
• Che giấu thông tin giúp chương trình an toàn.
• Dễ dàng ánh xạ các đối tượng của bài toán vào
chương trình.

33
4. Các ưu điểm của PPLTHĐT (tiếp)
• Do đặt trọng tâm vào đối tượng nên chương
trình gần với thực tế.
• Dễ nâng cấp, mở rộng.
• PPLTHĐT thường dùng cho những hệ thống
lớn.

34
5. Các ngôn ngữ LTHĐT
• Một số NNLTHĐT:
• Smalltack
• Object Pascal
• C++
• Java
•…

35
Lịch sử phát triển các NNLT

36

You might also like