1. Đối tượng Object
2. Lớp trừu tượng
1. Đối tượng Object
Đây là đối tượng cấp cao nhất của mọi lớp trong
Java. Mọi lớp trong Java đều kế thừa từ lớp này.
Đối tượng Object có một số phương thức:
•public boolean equals(Object) •
public String toString()
4
Ta có thể dùng tham chiếu của lớp Object để tham
chiếu đến một đối tượng thuộc lớp bất kỳ.
• Ví dụ: Object o = new SinhVien(…);
7 trang |
Chia sẻ: candy98 | Lượt xem: 573 | Lượt tải: 0
Bạn đang xem nội dung tài liệu Bài giảng Lập trình hướng đối tượng (OOP) - Chương 5: Lớp trừu tượng - Văn Thị Thiên Trang, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
1Chương 5:
LỚP TRỪU TƯỢNG
1
Mục đích & yêu cầu
Giới thiệu một thành phần cơ bản: Đối tượng
Object, Lớp trừu tượng, gói, giao diện.
Giải thích được lớp trừu tượng là gì, Gói, giao
diện là gì?
2
Sử dụng các thành phần này, viết một chương
trình đơn giản.
Nội dung chính
1. Đối tượng Object
2. Lớp trừu tượng
3
1. Đối tượng Object
Đây là đối tượng cấp cao nhất của mọi lớp trong
Java. Mọi lớp trong Java đều kế thừa từ lớp này.
Đối tượng Object có một số phương thức:
• public boolean equals(Object)
• public String toString()
4
Ta có thể dùng tham chiếu của lớp Object để tham
chiếu đến một đối tượng thuộc lớp bất kỳ.
• Ví dụ: Object o = new SinhVien();
22- Lớp trừu tượng
Lớp trừu tượng là gì?
• Xem kết qủa của việc khái quát hóa sau:
class ANIMAL
void Travel();
Bạn có hình
dung nổi một
ANIMAL di
chuyển như thế
nào không?
Không Î
Trừu tượng
5
class Bird
void Travel()
class Fish
void Travel()
class Snake
void Travel()Bạn có hình dung nổi
một đối tượng thuộc
các lớp này di chuyển
như thế nào không? Có Î cụ thể
Là kết qủa của việc khái quát hóa cao đến nỗi
2 - Lớp trừu tượng
không biết viết code thế nào.
Là lớp có những hành vi chỉ khai báo mà không
viết code. Để dành code cụ thể sẽ được hiện thực
ở các lớp dẫn xuất ( lớp cụ thể hơn).
Tư duy tự nhiên:
6
• Từ các đối tượng cụ thể Î Lớp cụ thể.
• Từ các lớp cụ thể có cùng tính chất Î lớp trừu tượng.
2 - Lớp trừu tượng
Phương thức trừu tượng là phương thức
khô ài đặ hi iếng c t c t t.
Khai báo PTTT:
abstract ;
Ví dụ: khai báo phương thức duocTN()
7
của lớp SV.
abstract boolean duocTN();
2 - Lớp trừu tượng
Lớp trừu tượng là lớp chứa ít nhất một PTTT.
ớ ừ dù để là ở đ h hĩ L p tr u tượng ng m cơ s ịn ng a
các lớp khác.
Khai báo lớp trừu tượng:
abstract class
{
8
khai báo các thành phần của lớp
}
32 - Lớp trừu tượng
Ví dụ: khai báo lớp trừu tượng SV
abstract class SV
{
abstract public boolean duocTN();
}
Lưu ý: không thể tạo đối tượng từ lớp trừu
9
tượng.
Ví dụ: không thể tạo đối tượng từ lớp SV
SV s = new SV(); Æ sai
2 - Lớp trừu tượng
Lớp kế thừa từ lờp trừu tượng phải khai
báo tường minh các PTTT nếu không cũng
là lớp trừu tượng.
Ví dụ: khai báo lớp SVSP kế thừa từ lớp
SV
10
class SVSP extends SV{
public boolean duocTN(){}
}
2 - Lớp trừu tượng
Ví dụ: lớp sinh viên tại chức (SVTC) kế
thừ từ lớ SV là lớ t ừ tượa p , p r u ng.
abstract class SVTC extends SV
{
Protected String noiCT;
11
//abstract public boolean duocTN();
}
2 - Lớp trừu tượng
Hành vi không có
chỉ thị abstract
thì phải có code
12
Có hành vi
abstract mà
lớp không
có chỉ thị
abstract
4Ch hể iế d ì l 1 ời
2 - Lớp trừu tượng
ưa t v t co e v ương ngư =
lương cơ bản * hệ số
13
5.3- Đặc điểm của lớp trừu tượng.
Không thể
khởi tạo
một đối
tượng thuộc
lớp trừu
tượng
(abstract)
mà chỉ khởi
14
tạo đối
tượng thuộc
lớp cụ thể
(concrete).
2 - Lớp trừu tượng
Vì biến đối tượng là tham
khảo chỉ đến đối tượng
nên một biến thuộc lớp
15
cha nhưng lại chỉ đến
một lớp con là lớp trừ tượng
hoặc là lớp cụ thề.
ĐÂY LÀ CÁCH DÙNG TÍNH
ĐA HÌNH TRONG OOP
• Lớp con cũng là lớp trừu tượng
2 - Lớp trừu tượng
16
Biến lớp ông chỉ đến
đối tượng lớp cháu
52 - Lớp trừu tượng
17
Chú ý về kết hợp
abstract với các
chỉ thị khác
2.2 Ví dụ
Ví dụ: xây dựng các lớp tính diện tích
các hình: tròn, tam giác, chữ nhật.
Chương trình minh họa gồm một mảng
các đối tượng và tính tổng diện tích của
các hình trong mảng.
18
Lớp HINH
abstract class HINH
{
abstract double dienTich();
}
19
Lớp HinhTron
class HinhTron extends HINH
{
double bk;
public HinhTron(double b){ bk = b;}
public double dienTich()
{
20
return bk*bk*Math.PI;
}
}
6Lớp HinhCN
class HinhCN extends HINH
{
double dai,rong;
public HinhCN(double d, double r)
{ dai = d; rong = r;}
public double dienTich()
21
{
return dai*rong;
}
}
Lớp TamGiac
class TamGiac extends HINH
{
double c1,c2,c3;
public TamGiac(double a, double b, double c)
{ c1 = a; c2 = b; c3 = c;}
public double dienTich()
{
22
double p = (c1+c2+c3)/2
return Math.sqrt(p*(p-c1)*(p-c2)*(p-c3));
}
}
Lớp DTHINH
class DTHINH
{
public static void main(String args[])
{
HINH ds[]=new HINH[5];
ds[0]=new HinhTron(1.3);
ds[1]=new TamGiac(3,4,5);
ds[2]=new HinhCN(2,5);
ds[3]=new HinhTron(3.0);
ds[4]=new HinhCN(4 3);
23
,
//Tính tổng diện tích các hình
double tongDT=0;
for(int i=0;i<5;i++) tongDT+=ds[i].dienTich();
System.out.println(“Tong dien tich ”+ tongDT);
}
}
Bài tập
Quản lý tài liệu ở thư viện
Một thư viện gồm các loại tài liệu sau:
• Sách(Mã sách, Tên Sách, Tác giả, NXB, Năm XB, Vị trí)
• Tạp chí (Mã tạp chí, Tên tạp chí, Chuyên ngành, Số,
Năm, Vị trí)
• CD(Mã CD, Tên CD, Số thứ tự, Nội dung, Vị trí)
Hãy tổ chức các lớp sao cho có thể lập trình để
thực hiện được các chức năng sau:
• Lưu danh sách các tài liệu có trong thư viện.
• Liệt kê toàn bộ tài liệu có trong thư viện.
24
• Liệt kê từng loại tài liệu có trong thư viện.
• Xem thông tin về tài liệu khi biết mã tài liệu.
• Tìm kiếm một tài liệu theo: Tên và tác giả đối với sách;
Tên tạp chí, Chuyên ngành, số, năm đối với tạp chí, Tên
CD, Số thứ tự và nội dung đối với CD.
7Thực hành
1. Thực hành bài quản lý danh sách nhân
iê bằ 2 á hv n ng c c :
• Không dùng lớp trừu tượng.
• Dùng lớp trừu tượng.
2. Thực hành bài DTHINH cài đặt bằng
giao diện
25
.
3. Thực hành bài quản lý tài liệu thư
viện.