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 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 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 kế th a 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 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