Bài giảng Lập trình hướng đối tượng - Bài 6: Kết tập và kế thừa - Nguyễn Thị Thu Trang

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 06. 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)  
4. Ví dụ và bài tập  
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. Ví dụ và bài tập  
4
1. Tái sử dụng mã nguồn (Re-usability)  
◼ Tái sử dụng mã nguồn: Sử  
dụng lại các mã nguồn đã  
viết  
◼
Lập trình cấu trꢀc: Tái sử dụng  
hàm/chương trình con  
◼
OOP: Khi mô hình thế giꢁi thực,  
tồn tại nhiều loại đối tượng có  
các thuộc tính và hành vi tương  
tự hoặc liên quan đến nhau  
◼
→ Làm thế nào để tái sử dụng  
lꢁp đã viết?  
5
1. Tái sử dụng mã nguồn (2)  
◼ Các cách sử dụng lại lꢁp đã có:  
◼
Sao chép lꢁp cũ thành 1 lꢁp khác → Dư thừa và  
khó quản lý khi có thay đꢂi  
◼
Tạo ra lꢁp mꢁi là sự tập hợp hoặc sử dụng các  
đối tượng của lꢁp cũ đã có → Kết tập  
(Aggregation)  
◼
Tạo ra lꢁp mꢁi trên cơ sở phát triển từ lꢁp cũ đã  
có → Kế thừa (Inheritance)  
6
Ưu điểm của tái sử dụng mã nguồn  
◼ Giảm thiểu công sức, chi phí  
◼ Nâng cao chất lượng phần  
mềm  
◼ Nâng cao khả năng mô hình  
hóa thế giꢁi thực  
◼ Nâng cao khả năng bảo trì  
(maintainability)  
7
Nội dung  
1. Tái sử dụng mã nguồn  
2. Kết tập (Aggregation)  
3. Kế thừa (Inheritance)  
4. Ví dụ và bài tập  
8
2. Kết tập  
◼ Ví dụ:  
◼
Điểm  
◼
Tứ giác gồm 4 điểm  
→ Kết tập  
◼ Kết tập  
◼
Quan hệ chứa/có ("has-  
a") hoặc là một phần  
(is-a-part-of)  
9
2.1. Bản chất của kết tập  
◼ Kết tập (aggregation)  
◼
Tạo ra các đối tượng của các lꢁp có sẵn trong  
lꢁp mꢁi → thành viên của lꢁp mꢁi.  
◼
Kết tập tái sử dụng thông qua đối tượng  
◼ Lꢁp mꢁi  
◼
Lꢁp toàn thể (Aggregate/Whole),  
◼ Lꢁp cũ  
◼
Lꢁp thành phần (Part).  
10  
2.1. Bản chất của kết tập (2)  
◼ Lꢁp toàn thể chứa đối tượng  
của lꢁp thành phần  
◼
Là một phần (is-a-part of) của  
lꢁp toàn thể  
◼
Tái sử dụng các thành phần dữ  
liệu và các hành vi của lꢁp thành  
phần thông qua đối tượng thành  
phần  
11  
2.2. Biểu diễn kết tập bằng UML  
◼ Sử dụng "hình thoi" tại đầu của  
lꢁp toàn thể  
◼ Sử dụng bội số quan hệ  
(multiplicity) tại 2 đầu  
◼
◼
◼
◼
1 số nguyên dương: 1, 2,...  
Dải số (0..1, 2..4)  
*: Bất kỳ số nào  
Không có: Mặc định là 1  
1
4
◼ Tên vai trò (rolename)  
TuGiac  
Diem  
◼
Nếu không có thì mặc định là  
tên của lꢁp (bỏ viết hoa chữ  
cái đầu)  
12  
Ví dụ  
13  
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 printDiem(){  
System.out.print("(" + x + ", " + y + ")");  
}
}
14  
class TuGiac {  
1
4
private Diem d1, d2;  
private Diem d3, d4;  
TuGiac  
Diem  
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();  
}
15  
}
public class Test {  
public static void main(String arg[])  
{
Diem d1 = new Diem(2,3);  
Diem d2 = new Diem(4,1);  
Diem d3 = new Diem (5,1);  
Diem d4 = new Diem (8,4);  
TuGiac tg1 = new TuGiac(d1, d2, d3, d4);  
TuGiac tg2 = new TuGiac();  
tg1.printTuGiac();  
tg2.printTuGiac();  
}
}
16  
Cách cài đặt khác  
1
4
TuGiac  
Diem  
class TuGiac {  
private Diem[] diem = new Diem[4];  
public TuGiac(Diem p1, Diem p2,  
Diem p3, Diem p4){  
diem[0] = p1; diem[1] = p2;  
diem[2] = p3; diem[3] = p4;  
}
public void printTuGiac(){  
diem[0].printDiem(); diem[1].printDiem();  
diem[2].printDiem(); diem[3].printDiem();  
System.out.println();  
}
}
17  
2.4. Thứ tự khởi tạo trong kết tập  
◼ Khi một đối tượng được tạo mꢁi, các thuộc  
tính của đối tượng đó đều phải được khởi tạo  
và gán những giá trị tương ứng.  
◼ Các đối tượng thành phần được khởi tạo  
trưꢁc  
→ Các phương thức khởi tạo của các lꢁp của  
các đối tượng thành phần được thực hiện  
trưꢁc  
18  
Nội dung  
1. Tái sử dụng mã nguồn  
2. Kết tập (Aggregation)  
3. Kế thừa (Inheritance)  
4. Ví dụ và bài tập  
19  
3.1. Tꢂng quan về kế thừa  
◼ Ví dụ:  
◼
Điểm  
◼
Tứ giác gồm 4 điểm  
→ Kết tập  
Tứ giác  
◼
◼
Hình vuông  
→ Kế thừa  
20  
Tải về để xem bản đầy đủ
pdf 54 trang yennguyen 66460 Free
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Lập trình hướng đối tượng - Bài 6: Kết tập và kế thừa - Nguyễn Thị Thu Trang", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfbai_giang_lap_trinh_huong_doi_tuong_bai_6_ket_tap_va_ke_thua.pdf