Tải bản đầy đủ (.ppt) (45 trang)

chương 5 lớp trừu tượng, gói, giao diện

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.21 MB, 45 trang )



1
1
Chương 5. Lớp trừu
Chương 5. Lớp trừu
tượng, Gói, Giao diện
tượng, Gói, Giao diện
2
Mục đích & yêu cầu
Mục đích & yêu cầu

Giới thiệu một thành phần cơ bản: Đối tượng
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.
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
Giải thích được lớp trừu tượng là gì, Gói, giao
diện là gì?
diện là gì?

Sử dụng các thành phần này, viết một
Sử dụng các thành phần này, viết một
chương trình đơn giản.
chương trình đơn giản.
3
Nội dung chính
Nội dung chính
1.
1.


Đối tượng Object
Đối tượng Object
2.
2.
Lớp trừu tượng
Lớp trừu tượng
3.
3.
Gói - Packages
Gói - Packages
4.
4.
Giao diện – Interfaces
Giao diện – Interfaces
4
1. Đối tượng Object
1. Đối tượng Object

Đây là đối tượng cấp cao nhất của mọi lớp trong
Đâ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.
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:
Đối tượng Object có một số phương thức:

public boolean equals(Object)
public boolean equals(Object)

public String toString()

public String toString()

Ta có thể dùng tham chiếu của lớp Object để
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ỳ.
tham chiếu đến một đối tượng thuộc lớp bất kỳ.

Ví dụ: Object o = new SinhVien(…);
Ví dụ: Object o = new SinhVien(…);
5
2- Lớp trừu tượng
2- Lớp trừu tượng

Lớp trừu tượng là gì?
Lớp trừu tượng là gì?

Xem kết qủa của việc khái quát hóa sau:
Xem kết qủa của việc khái quát hóa sau:
class ANIMAL
void Travel();
class Bird
void Travel()
class Fish
void Travel()
class Snake
void Travel()
Bạn có hình
dung nổi một
ANIMAL di
chuyển như thế

nào không?
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?
Không 
Trừu tượng
Có  cụ thể
6

Là kết qủa của việc khái quát hóa
Là kết qủa của việc khái quát hóa
cao đến nỗi
cao đến nỗi
không biết viết code thế nào.
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
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
viết code. Để dành code cụ thể sẽ được hiện thực
ở các lớp dẫn xuất
ở các lớp dẫn xuất
( lớp cụ thể hơn).
( lớp cụ thể hơn).

Tư duy tự nhiên:
Tư duy tự nhiên:

Từ các đối tượng cụ thể

Từ các đối tượng cụ thể


Lớp cụ thể.
Lớp cụ thể.

Từ các lớp cụ thể có cùng tính chất
Từ các lớp cụ thể có cùng tính chất


lớp trừu tượng.
lớp trừu tượng.
2 - Lớp trừu tượng
2 - Lớp trừu tượng
7
2 - Lớp trừu tượng
2 - Lớp trừu tượng

Phương thức trừu tượng là phương
Phương thức trừu tượng là phương
thức
thức
không cài đặt chi tiết
không cài đặt chi tiết
.
.

Khai báo PTTT:
Khai báo PTTT:
abstract <khai báo phương thức>;

abstract <khai báo phương thức>;

Ví dụ: khai báo phương thức
Ví dụ: khai báo phương thức
duocTN() của lớp SV.
duocTN() của lớp SV.
abstract boolean duocTN();
abstract boolean duocTN();
8
2 - Lớp trừu tượng
2 - Lớp trừu tượng

Lớp trừu tượng
Lớp trừu tượng
là lớp chứa ít nhất một
là lớp chứa ít nhất một
PTTT.
PTTT.

Lớp trừu tượng dùng để làm cơ sở định
Lớp trừu tượng dùng để làm cơ sở định
nghĩa các lớp khác.
nghĩa các lớp khác.

Khai báo lớp trừu tượng:
Khai báo lớp trừu tượng:
abstract class <tên lớp>
abstract class <tên lớp>
{
{

khai báo các thành phần của lớp
khai báo các thành phần của lớp
}
}
9
2 - Lớp trừu tượng
2 - Lớp trừu tượng

Ví dụ: khai báo lớp trừu tượng SV
Ví dụ: khai báo lớp trừu tượng SV
abstract class SV
abstract class SV
{
{


abstract public boolean duocTN();
abstract public boolean duocTN();
}
}

Lưu ý: không thể tạo đối tượng từ lớp trừu
Lưu ý: không thể tạo đối tượng từ lớp trừu
tượng.
tượng.

Ví dụ: không thể tạo đối tượng từ lớp SV
Ví dụ: không thể tạo đối tượng từ lớp SV
SV s = new SV(…);
SV s = new SV(…);



sai
sai
10
2 - Lớp trừu tượng
2 - Lớp trừu tượng

Lớp kế thừa từ lờp trừu tượng phải khai
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
báo tường minh các PTTT nếu không cũng
là lớp trừu tượng.
là lớp trừu tượng.

Ví dụ: khai báo lớp SVSP kế thừa từ lớp SV
Ví dụ: khai báo lớp SVSP kế thừa từ lớp SV
class SVSP extends SV{
class SVSP extends SV{


public boolean duocTN(){…}
public boolean duocTN(){…}
}
}
11
2 - Lớp trừu tượng
2 - Lớp trừu tượng

Ví dụ: lớp sinh viên tại chức (SVTC)

Ví dụ: lớp sinh viên tại chức (SVTC)
kế thừa từ lớp SV, là lớp trừu tượng.
kế thừa từ lớp SV, là lớp trừu tượng.
abstract class SVTC extends SV
abstract class SVTC extends SV
{
{
Protected String noiCT;
Protected String noiCT;


//abstract public boolean duocTN();
//abstract public boolean duocTN();
}
}
12
Có hành vi
abstract mà
lớp không
có chỉ thị
abstract
Hành vi không có
chỉ thị abstract
thì phải có code
2 - Lớp trừu tượng
2 - Lớp trừu tượng
13
Chưa thể viết code vì lương 1 người =
lương cơ bản * hệ số
2 - Lớp trừu tượng

2 - Lớp trừu tượng
14
5.3- Đặc điểm của lớp trừu tượng.
5.3- Đặc điểm của lớp trừu tượng.



Không thể
Không thể
khởi tạo
khởi tạo
một đối
một đối
tượng thuộc
tượng thuộc
lớp trừu
lớp trừu
tượng
tượng
(abstract)
(abstract)
mà chỉ khởi
mà chỉ khởi
tạo đối
tạo đối
tượng thuộc
tượng thuộc
lớp cụ thể
lớp cụ thể
(concrete).

(concrete).
15
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
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
2 - 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

Lớp con cũng là lớp trừu tượng
2 - Lớp trừu tượng
2 - Lớp trừu tượng
17
Chú ý về kết hợp
Chú ý về kết hợp
abstract với các
abstract với các
chỉ thị khác
chỉ thị khác
2 - Lớp trừu tượng
2 - Lớp trừu tượng
18
2.2 Ví dụ

2.2 Ví dụ

Ví dụ: xây dựng các lớp tính diện tích
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
các hình: tròn, tam giác, ch


nhật.
nhật.

Chương trình minh họa gồm mộ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
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.
tích của các hình trong mảng.
19
Lớp HINH
Lớp HINH
abstract class HINH
abstract class HINH
{
{
abstract double dienTich();
abstract double dienTich();
}
}
20
Lớp HinhTron

Lớp HinhTron
class HinhTron extends HINH
class HinhTron extends HINH
{
{
double bk;
double bk;
public HinhTron(double b){ bk = b;}
public HinhTron(double b){ bk = b;}
public double dienTich()
public double dienTich()
{
{
return bk*bk*Math.PI;
return bk*bk*Math.PI;
}
}
}
}
21
Lớp HinhCN
Lớp HinhCN
class HinhCN extends HINH
class HinhCN extends HINH
{
{
double dai,rong;
double dai,rong;
public HinhCN(double d, double r)
public HinhCN(double d, double r)

{ dai = d; rong = r;}
{ dai = d; rong = r;}
public double dienTich()
public double dienTich()
{
{
return dai*rong;
return dai*rong;
}
}
}
}
22
Lớp TamGiac
Lớp TamGiac
class TamGiac extends HINH
class TamGiac extends HINH
{
{
double c1,c2,c3;
double c1,c2,c3;
public TamGiac(double a, double b, double c)
public TamGiac(double a, double b, double c)
{ c1 = a; c2 = b; c3 = c;}
{ c1 = a; c2 = b; c3 = c;}
public double dienTich()
public double dienTich()
{
{
double p = (c1+c2+c3)/2

double p = (c1+c2+c3)/2
return Math.sqrt(p*(p-c1)*(p-c2)*(p-c3));
return Math.sqrt(p*(p-c1)*(p-c2)*(p-c3));
}
}
}
}
23
Lớp DTHINH
Lớp DTHINH
class DTHINH
class DTHINH
{
{
public static void main(String args[])
public static void main(String args[])
{
{


HINH ds[]=new HINH[5];
HINH ds[]=new HINH[5];


ds[0]=new HinhTron(1.3);
ds[0]=new HinhTron(1.3);


ds[1]=new TamGiac(3,4,5);
ds[1]=new TamGiac(3,4,5);



ds[2]=new HinhCN(2,5);
ds[2]=new HinhCN(2,5);


ds[3]=new HinhTron(3.0);
ds[3]=new HinhTron(3.0);


ds[4]=new HinhCN(4,3);
ds[4]=new HinhCN(4,3);
//Tính tổng diện tích các hình
//Tính tổng diện tích các hình
double tongDT=0;
double tongDT=0;
for(int i=0;i<5;i++) tongDT+=ds[i].dienTich();
for(int i=0;i<5;i++) tongDT+=ds[i].dienTich();
System.out.println(“Tong dien tich ”+ tongDT);
System.out.println(“Tong dien tich ”+ tongDT);
}
}
}
}
24
3. Packages
3. Packages

Giới thiệu
Giới thiệu


Những thành phần cơ bản của 1 chương trình
Những thành phần cơ bản của 1 chương trình
Java:
Java:

Gói (Packages)
Gói (Packages)

Giao diện (Interfaces)
Giao diện (Interfaces)

Những phần của một chương trình Java:
Những phần của một chương trình Java:

Lệnh khai báo gói(
Lệnh khai báo gói(
package )
package )

Lệnh chỉ định gói được dùng (Lệnh i
Lệnh chỉ định gói được dùng (Lệnh i
mport)
mport)

Khai báo lớp public (một file java chỉ chứa 1 lớp public
Khai báo lớp public (một file java chỉ chứa 1 lớp public
class)
class)


Các lớp khác (classes private to the package)
Các lớp khác (classes private to the package)

T
T
ập tin nguồn Java có thể chứa tất cả hoặc một
ập tin nguồn Java có thể chứa tất cả hoặc một
vài trong số các phần trên.
vài trong số các phần trên.
25
3. Packages
3. Packages

Tương tự như
Tương tự như
t
t
h
h
ư mục lưu trữ những
ư mục lưu trữ những
lớp, interface và các gói con khác. Đó
lớp, interface và các gói con khác. Đó
là những thành viên của gói
là những thành viên của gói

×