Xem mẫu
- om
Bộ môn Công nghệ Phần mềm
.c
Viện CNTT & TT
ng
Trường Đại học Bách Khoa Hà Nội
co
an
th
ng
LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
o
du
Bài 06. Kết tập và kế thừa
u
cu
CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Mục tiêu bài học
om
◼ Giải thích về khái niệm tái sử dụng mã nguồn
.c
◼ Chỉ ra được bản chất, mô tả các khái niệm
ng
liên quan đến đến kết tập và kế thừa
co
So sánh kết tập và kế thừa
an
◼
th
Biểu diễn được kết tập và kế thừa trên UML
ng
◼
o
Giải thích nguyên lý kế thừa và thứ tự khởi
du
◼
tạo, hủy bỏ đối tượng trong kế thừa
u
cu
◼ Á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
CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Nội dung
om
1. Tái sử dụng mã nguồn
.c
2. Kết tập (Aggregation)
ng
Kế thừa (Inheritance)
co
3.
an
4. Ví dụ và bài tập
th
o ng
du
u
cu
3
CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Nội dung
om
1. Tái sử dụng mã nguồn
.c
2. Kết tập (Aggregation)
ng
Kế thừa (Inheritance)
co
3.
an
4. Ví dụ và bài tập
th
o ng
du
u
cu
4
CuuDuongThanCong.com https://fb.com/tailieudientucntt
- 1. Tái sử dụng mã nguồn (Re-usability)
om
◼ Tái sử dụng mã nguồn: Sử
.c
dụng lại các mã nguồn đã
ng
viết
co
Lập trình cấu trúc: Tái sử dụng
an
◼
hàm/chương trình con
th
ng
◼ OOP: Khi mô hình thế giới thực,
o
du
tồn tại nhiều loại đối tượng có
các thuộc tính và hành vi tương
u
cu
tự hoặc liên quan đến nhau
◼ → Làm thế nào để tái sử dụng
lớp đã viết? 5
CuuDuongThanCong.com https://fb.com/tailieudientucntt
- 1. Tái sử dụng mã nguồn (2)
om
◼ Các cách sử dụng lại lớp đã có:
.c
◼ Sao chép lớp cũ thành 1 lớp khác → Dư thừa và
ng
khó quản lý khi có thay đổi
co
Tạo ra lớp mới là sự tập hợp hoặc sử dụng các
an
◼
đối tượng của lớp cũ đã có → Kết tập
(Aggregation) th
o ng
Tạo ra lớp mới trên cơ sở phát triển từ lớp cũ đã
du
◼
có → Kế thừa (Inheritance)
u
cu
6
CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Ưu điểm của tái sử dụng mã nguồn
om
◼ Giảm thiểu công sức, chi phí
.c
◼ Nâng cao chất lượng phần
ng
mềm
co
Nâng cao khả năng mô hình
an
◼
hóa thế giới thực th
ng
Nâng cao khả năng bảo trì
o
du
◼
(maintainability)
u
cu
7
CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Nội dung
om
1. Tái sử dụng mã nguồn
.c
2. Kết tập (Aggregation)
ng
Kế thừa (Inheritance)
co
3.
an
4. Ví dụ và bài tập
th
o ng
du
u
cu
8
CuuDuongThanCong.com https://fb.com/tailieudientucntt
- 2. Kết tập
om
◼ Ví dụ:
.c
◼ Điểm
ng
Tứ giác gồm 4 điểm
co
◼
→ Kết tập
an
Kết tập
th
◼ ng
◼ Quan hệ chứa/có ("has-
o
du
a") hoặc là một phần
u
(is-a-part-of)
cu
9
CuuDuongThanCong.com https://fb.com/tailieudientucntt
- 2.1. Bản chất của kết tập
om
◼ Kết tập (aggregation)
.c
◼ Tạo ra các đối tượng của các lớp có sẵn trong
ng
lớp mới → thành viên của lớp mới.
co
Kết tập tái sử dụng thông qua đối tượng
an
◼
th
◼ Lớp mới ng
Lớp toàn thể (Aggregate/Whole),
o
◼
du
◼ Lớp cũ
u
cu
◼ Lớp thành phần (Part).
10
CuuDuongThanCong.com https://fb.com/tailieudientucntt
- 2.1. Bản chất của kết tập (2)
om
◼ Lớp toàn thể chứa đối tượng
.c
của lớp thành phần
ng
Là một phần (is-a-part of) của
co
◼
lớp toàn thể
an
Tái sử dụng các thành phần dữ
th
◼ ng
liệu và các hành vi của lớp thành
o
phần thông qua đối tượng thành
du
phần
u
cu
11
CuuDuongThanCong.com https://fb.com/tailieudientucntt
- 2.2. Biểu diễn kết tập bằng UML
om
◼ Sử dụng "hình thoi" tại đầu của
lớp toàn thể
.c
Sử dụng bội số quan hệ
ng
◼
(multiplicity) tại 2 đầu
co
◼ 1 số nguyên dương: 1, 2,...
an
th
◼ Dải số (0..1, 2..4) ng
◼ *: Bất kỳ số nào
o
du
◼ Không có: Mặc định là 1
u
◼ Tên vai trò (rolename) 1 4
cu
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
CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Ví dụ
om
.c
ng
co
an
th
o ng
du
u
cu
13
CuuDuongThanCong.com https://fb.com/tailieudientucntt
- 2.3. Minh họa trên Java
om
class Diem {
private int x, y;
.c
public Diem(){}
ng
public Diem(int x, int y) {
co
this.x = x; this.y = y;
an
}
th
public void setX(int x){ this.x = x; }
ng
public int getX() { return x; }
o
du
public void printDiem(){
System.out.print("(" + x + ", " + y + ")");
u
cu
}
}
14
CuuDuongThanCong.com https://fb.com/tailieudientucntt
- class TuGiac {
1 4
private Diem d1, d2; TuGiac Diem
private Diem d3, d4;
public TuGiac(Diem p1, Diem p2,
om
Diem p3, Diem p4){
.c
d1 = p1; d2 = p2; d3 = p3; d4 = p4;
ng
}
co
public TuGiac(){
an
d1 = new Diem(); d2 = new Diem(0,1);
th
d3 = new Diem (1,1); d4 = new Diem (1,0);
ng
}
o
du
public void printTuGiac(){
u
d1.printDiem(); d2.printDiem();
cu
d3.printDiem(); d4.printDiem();
System.out.println();
}
15
} CuuDuongThanCong.com https://fb.com/tailieudientucntt
- public class Test {
public static void main(String arg[])
{
om
Diem d1 = new Diem(2,3);
.c
Diem d2 = new Diem(4,1);
Diem d3 = new Diem (5,1);
ng
Diem d4 = new Diem (8,4);
co
an
TuGiac tg1 = new TuGiac(d1, d2, d3, d4);
TuGiac tg2 = new TuGiac();
th
tg1.printTuGiac();
ng
tg2.printTuGiac();
o
}
du
}
u
cu
16
CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Cách cài đặt khác
1 4
TuGiac Diem
om
class TuGiac {
private Diem[] diem = new Diem[4];
.c
public TuGiac(Diem p1, Diem p2,
ng
Diem p3, Diem p4){
co
diem[0] = p1; diem[1] = p2;
an
th
diem[2] = p3; diem[3] = p4; ng
}
o
public void printTuGiac(){
du
diem[0].printDiem(); diem[1].printDiem();
u
cu
diem[2].printDiem(); diem[3].printDiem();
System.out.println();
}
} 17
CuuDuongThanCong.com https://fb.com/tailieudientucntt
- 2.4. Thứ tự khởi tạo trong kết tập
om
◼ Khi một đối tượng được tạo mới, các thuộc
.c
tính của đối tượng đó đều phải được khởi tạo
ng
và gán những giá trị tương ứng.
co
◼ Các đối tượng thành phần được khởi tạo
an
th
trước ng
→ Các phương thức khởi tạo của các lớp của
o
du
các đối tượng thành phần được thực hiện
u
cu
trước
18
CuuDuongThanCong.com https://fb.com/tailieudientucntt
- Nội dung
om
1. Tái sử dụng mã nguồn
.c
2. Kết tập (Aggregation)
ng
Kế thừa (Inheritance)
co
3.
an
4. Ví dụ và bài tập
th
o ng
du
u
cu
19
CuuDuongThanCong.com https://fb.com/tailieudientucntt
- 3.1. Tổng quan về kế thừa
om
◼ Ví dụ:
.c
◼ Điểm
ng
◼ Tứ giác gồm 4 điểm
co
→ Kết tập
an
th
◼ Tứ giác
ng
◼ Hình vuông
o
du
→ Kế thừa
u
cu
20
CuuDuongThanCong.com https://fb.com/tailieudientucntt
nguon tai.lieu . vn