
8/24/2011
1
Bộ môn Công nghệ Phầ n mề m
Việ n CNTT & TT
Trư ờ ng Đạ i họ c Bách Khoa Hà Nộ i
LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Bài 05. Kế t tậ p và kế thừ a
Mụ c tiêu bài họ c
Giả i thích về khái niệ m tái sử dụ ng mã nguồ n
Chỉ ra đư ợ c bả n chấ t, mô tả các khái niệ m
liên quan đế n đế n kế t tậ p và kế thừ a
So sánh kế t tậ p và kế thừ a
Biể u diễ n đư ợ c kế t tậ p và kế thừ a trên UML
Giả i thích nguyên lý kế thừ a và thứ tự khở i
tạ o, hủ y bỏ đố i tư ợ ng trong kế thừ a
Áp dụ ng các kỹ thuậ t, nguyên lý về kế t tậ p
và kế t thừ a trên ngôn ngữ lậ p trình Java
2
Nộ i dung
1. Tái sử dụ ng mã nguồ n
2. Kế t tậ p (Aggregation)
3. Kế thừ a (Inheritance)
3
Nộ i dung
1. Tái sử dụ ng mã nguồ n
2. Kế t tậ p (Aggregation)
3. Kế thừ a (Inheritance)
4
1. Tái sử dụ ng mã nguồ n (Re-usability)
5
1. Tái sử dụ ng mã nguồ n (2)
Các cách sử dụ ng lạ i lớ p đã có:
6

8/24/2011
2
Ư u điể m củ a tái sử dụ ng mã nguồ n
7
Nộ i dung
1. Tái sử dụ ng mã nguồ n
2. Kế t tậ p ( Aggregation)
3. Kế thừ a (Inheritance)
8
2. Kế t tậ p
Ví dụ :
9
2.1. Bả n chấ t củ a kế t tậ p
Lớ p toàn thể chứ a đố i tư ợ ng
củ a lớ p thành phầ n
10
2.2. Biể u diễ n kế t tậ p bằ ng UML
11
TuGiac Diem
4
1
Ví dụ
12

8/24/2011
3
2.3. Minh họ a trên Java
class Diem {
private int x, y;
public Diem(){}
public Diem(int x, int y) {
this.x = x; this.y = y;
}
public void setX(int x){ this.x = x; }
public int getX() { return x; }
public void hienThiDiem(){
System.out.print("(" + x + ", "
+ y + ")");
}
}13
class TuGiac {
private Diem d1, d2;
private Diem d3, d4;
public TuGiac(Diem p1, Diem p2,
Diem p3, Diem p4){
d1 = p1; d2 = p2; d3 = p3; d4 = p4;
}
public TuGiac(){
d1 = new Diem(); d2 = new Diem(0,1);
d3 = new Diem (1,1); d4 = new Diem (1,0);
}
public void printTuGiac(){
d1.printDiem(); d2.printDiem();
d3.printDiem(); d4.printDiem();
System.out.println();
}
}14
15
Ví dụ khác về Kế t tậ p
Mộ t trò chơ i gồ m 2 đố i thủ , 3 quân súc sắ c
và 1 trọ ng tài.
16
Die
- value : int
+ throw()
Arbitrator
- name : String
+ countingPoints()
Player
- name : String
- points : int
+ throwDie()
Game
…
…
3
2
2.4. Thứ tự khở i tạ o trong kế t tậ p
17
Nộ i dung
1. Tái sử dụ ng mã nguồ n
2. Kế t tậ p (Aggregation)
3. Kế thừ a (I nheritance)
18

8/24/2011
4
3.1. Tổ ng quan về kế thừ a
Ví dụ :
19
3.1.1. Bả n chấ t kế thừ a
Kế thừ a (Inherit, Derive)
20
3.1.1. Bả n chấ t kế thừ a (2)
Lớ p con
Là mộ t loạ i (is-a-kind-of) củ a lớ p cha
21
3.1.2. Biể u diễ n kế thừ a trong UML
Mammal
Whale Horse
22
3.1.3. Kế t tậ p và kế thừ a
So sánh kế t tậ p và kế thừ a?
Giố ng nhau?
Khác nhau?
23
Phân biệ t kế thừ a và kế t tậ p
Kế thừ a Kế t tậ p
24

8/24/2011
5
3.1.4. Cây phân cấ p kế thừ a
(Inheritance hierarchy)
25
A
B
C
Vehicle
Spor tCar Com pa ct
Moto
SportMoto
Car
3.1.4. Cây phân cấ p kế thừ a (2)
Siblings
26
Hình
Hình hai chiề u Hình ba chiề u
Hình tròn Tứ giác Tam giác Hình cầ u Hình lăng trụ Tứ diệ n
Lớ p Object
Trong gói java.lang
27
Lớ p Object (2)
28
3.2. Nguyên lý kế thừ a
public Không có protected private
Cùng lớ p
Lớ p con
cùng gói
Lớ p con
khác gói
Khác gói,
non-inher
29
3.2. Nguyên lý kế thừ a (2)
Các trư ờ ng hợ p không đư ợ c phép kế thừ a?
30

