Tải bản đầy đủ (.pdf) (80 trang)

Chương 03 LỚP – KIỂU DỮ LIỆU TRỪU TƯỢNG CLASS – ABSTRACT DATA TYPE ppt

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 (685.24 KB, 80 trang )

Slide 1/81
Ch ng 03ươ
L P – KI U D LI U TR U T NGỚ Ể Ữ Ệ Ừ ƯỢ
CLASS – ABSTRACT DATA TYPE
Slide 2/81
Ôn t pậ

ADT : Khaí quát hóa m t t p đ i t ng thành m t ki u d li u.ộ ậ ố ượ ộ ể ữ ệ

ADT có th là m t c u trúc ho c m t class.ể ộ ấ ặ ộ

Object = các thu c tính mô t (thành ph n d li u)+ các hành vi ộ ả ầ ữ ệ
(thành ph n hàm)ầ

class: ADT cho m t t p các đ i t ng t ng t nhau (cùng data, ộ ậ ố ượ ươ ự
cùng functions).

Instance: M t mô t c a đ i t ng trong b nh c a ch ng trình.ộ ả ủ ố ượ ộ ớ ủ ươ

Ba khái ni m c b n trong OOP: Đóng gói, Th a k , đa hình.ệ ơ ả ừ ế

Đóng gói (encapsulation) : Gói d li u + hành vi (code), bên ngoài ữ ệ
ch có th truy c p m t s thu c tính ho c hành vi c a đ i t ng ỉ ể ậ ộ ố ộ ặ ủ ố ượ
c a m t l p thông qua các công c giao ti p.ủ ộ ớ ụ ế

Th a k : M t l p có th th a h ng d li u và hành vi c a l p ừ ế ộ ớ ể ừ ưở ữ ệ ủ ớ
cha. M t ngôn ng OOP có th h tr đ n th a k ho c đa th a ộ ữ ể ỗ ợ ơ ừ ế ặ ừ
k .ế

Đa hình: Kh năng cho phép vi t l i code c a m t hành vi đ c ả ế ạ ủ ộ ượ
th a k đ t o ra nh ng khác bi t trong ng x gi a l p cha và l p ừ ế ể ạ ữ ệ ứ ử ữ ớ ớ


con cho cùng m t hành vi.ộ

G i thông đi p là yêu c u m t đ i t ng th c thi m t hành vi mà ử ệ ầ ộ ố ượ ự ộ
đ i t ng này có.ố ượ
Slide 3/81
M c tiêuụ

N m v ng c u trúc c a m t l p.ắ ữ ấ ủ ộ ớ

N m v ng các ch th truy c p.ắ ữ ỉ ị ậ

Gi i thích đ c constructor và destructor.ả ượ

Gi i thích đ c khái ni m đ i t ng hi n ả ượ ệ ố ượ ệ
hành.

Truy c p thành ph n th a k t l p cha.ậ ầ ừ ế ừ ớ

Hi n th c đ c l p b ng Java.ệ ự ượ ớ ằ
Slide 4/81
N i dungộ
3.1- C u trúc 1 l p và access modifiersấ ớ
3.2- S d ng m t l pử ụ ộ ớ
3.3- Ch th thisỉ ị
3.4- Overloading m t hành viộ
3.5- Hành vi kh i t o (constructor)ở ạ
3.6- Ch th superỉ ị
3.7- Hành vi h y (destructor)ủ
3.8- Thành ph n staticầ
3.9- Ch th finalỉ ị

3.10- Ph ng pháp gi i bài toán v i Javaươ ả ớ
3.11- Ch y ch ng trình có tham s v i JCreatorạ ươ ố ớ
3.12- M t s l p c b n c a Javaộ ố ớ ơ ả ủ
Slide 5/81
3.1- C u trúc 1 l p và access modifiersấ ớ

L p: Hi n th c chung cho m t t p các đ i t ng có ớ ệ ự ộ ậ ố ượ
cùng đ c đi m và hành vi.ặ ể

M t l p có th là l p con c a m t l p đã có.ộ ớ ể ớ ủ ộ ớ

Hi n th c l p:ệ ự ớ

Khai báo m c cho phép s d ng.ứ ử ụ

Khai báo l p chaớ

Khai báo các thành ph n thu c tính.ầ ộ

Hi n th c code các hành vi.ệ ự

L p và m i thành ph n c n ph i ch đ nh m c đ cho ớ ỗ ầ ầ ả ỉ ị ứ ộ
phép truy c p (tính b o m t) ậ ả ậ  access modifier

M i ngôn ng OOP quy đ nh cú pháp riêng cho vi c ỗ ữ ị ệ
hi n th c l p.ệ ự ớ
Slide 6/81
C u trúc m t l pấ ộ ớ
Field_1
Field_2


Method_1()
Method_2()

class B
Các gi i h n truy c pớ ạ ậ
1. Cho phép truy c p t do (ậ ự public)
2. Ch cho phép trong cùng m t gói ỉ ộ
truy c pậ
3. Không cho bên ngoài truy c p ậ
(private).
4. Ch cho l p con truy c p ỉ ớ ậ
(protected).
5. Không cho phép l p con hi u ớ ệ
ch nh (ỉ final).
Access Modifiers
class A
là con
Slide 7/81
Cú pháp khai báo class trong Java
[Modifier] class CLASSNAME
extends FATHERCLASSNAME
{
[Modifier] DataType1 Property1 [=Value];
[Modifier] DataType2 Property2 [=Value];
[Modifier] DataType MethodName( DataType Arg,…)
{ <code>
}
}
Không có modifier : M c đ nh là friendly, cho phép các đ i t ng ặ ị ố ượ

thu c các class cùng package ( cùng th m c)truy c pộ ư ụ ậ
Slide 8/81
Đ c tính truy xu tặ ấ
Modifier private friendly protected public
Cùng class YES YES YES YES
Cùng gói, khác
class
NO YES YES YES
l p con trong ớ
cùng gói v i ớ
l p chaớ
NO YES YES YES
Khác gói, khác
l pớ
NO NO NO YES
L p con khác ớ
gói v i l p chaớ ớ
NO NO YES YES
Slide 9/81
3.2- S d ng m t l pử ụ ộ ớ

Đ nh nghĩa bi n ị ế
đ i t ng.ố ượ

Bi n đ i t ng ế ố ượ
trong Java là
tham kh o (đ a ả ị
ch ) c a vùng ỉ ủ
nh ch a d li u ớ ứ ữ ệ
c a đ i t ng.ủ ố ượ

obj 1000
data
1000
ClassName obj ; obj= new ClassName();
Slide 10/81
Thí d 1ụ
L p public thì tên file.java ph i trùng v i tên l pớ ả ớ ớ
Vì khi bên ngoài truy c p, nhìn tên file là bi t tên l pậ ế ớ
Error
N u không là l p public, ế ớ
tên l p và tên file có th khác nhauớ ể
Vì l p này ch dùng trong m t gói (package)ớ ỉ ộ
Slide 11/81
Thí d 2ụ
t khóa this đ ừ ể
ch th đ i ỉ ị ố
t ng đang ượ
thao tác. Nh ờ
đó phân bi t ệ
đ c tham s ượ ố
x và thành
ph n xầ
Slide 12/81
Thí d 3ụ
access
modifier là
private mà
trong main
v n truy ẫ
c p đ c ậ ượ

vì main
n m trong ằ
khai báo
l pớ
Slide 13/81
Thí d 4ụ
S a l i l p ử ạ ớ
VONGTRON:
không có main
Xây d ng l p SDVT s d ng l p ự ớ ử ụ ớ
VONGTRON đ trong cùng th m c.ể ư ụ
Biên d ch có l i vì trong l p SDVT ị ỗ ớ
không th truy c p private methodể ậ
c a l p VONGTRONủ ớ
Slide 14/81
Thí d 5ụ
L p SDVT truy c p tr c ti p đ c thu c tính x c a ớ ậ ự ế ượ ộ ủ
vong tròn v vì khai báo thu c tính này là “ộ friendly” –
không ch đ nh modifier. ỉ ị
Hai file này cùng th m c nên SDVT truy c p đ c ư ụ ậ ượ
thu c tính này.ộ
Slide 15/81
Thí d 6ụ
Trong l p ớ
VONGTRON,
x,y,r có thu c tínhộ
protected. Nh ng,ư
l p SDVT cùng thớ ư
m c v i l pụ ớ ớ
VONGTRON nên có

th truy c p thu cể ậ ộ
tính này.
Slide 16/81
3.3- Ch th thisỉ ị

Khi hi n th c hành vi c a 1 l p. Truy xu t m t ệ ự ủ ớ ấ ộ
thành ph n b ng chính tên c a thành ph n này ầ ằ ủ ầ
ho c ặ this.tênThànhPh nầ .

Khi tham s trùng v i tên thu c tính thì nh t ố ớ ộ ờ ừ
khóa this chúng ta phân bi t rõ thu c tính v i ệ ộ ớ
tham s .ố

Các môi tr ng l p trình Java hi n nay h u h t ườ ậ ệ ầ ế
đ u có tr giúp ng c nh. Do v y, qua t khóa ề ợ ữ ả ậ ừ
this, ng i l p trình d truy c p 1 thành ph n ườ ậ ễ ậ ầ
c a l p.ủ ớ
Slide 17/81
Thí dụ
Slide 18/81
Thí dụ
Truy c p thành ph n ậ ầ
qua t khóa thisừ
Truy c p thành ph n ậ ầ
không qua t khóa thisừ
Slide 19/81
3.4- Overloading m t hành viộ

Overloading: K thu t cho phép xây d ng ỹ ậ ự
các hành vi trùng tên nh ng khác ch ký ư ữ

(signature) trong cùng m t l p.ộ ớ

Ch kýữ bao g m:ồ

S l ng tham s .ố ượ ố

Th t các ki u c a các tham s .ứ ự ể ủ ố
Slide 20/81
Thí dụ
3 hành vi cùng
có tên là
setData
Slide 21/81
3.5- Hành vi kh i t o (constructor)ở ạ

Hành vi đ c th c thi ngay vào lúc kh i ượ ự ở
t o đ i t ng.ạ ố ượ

M t l p có th có 0/1/n contructor.ộ ớ ể

Cú pháp constructor
[Modifier] ClassName ( Parameters)
{ <code> }
Chú ý:
-
Constructor không có ki u tr tr . ể ả ị
Slide 22/81
constructor
-
Constructor không tham s còn đ c g i là ố ượ ọ

constructor chu n.ẩ
-
Ngôn ng có s n 1 constructor chu n làm công ữ ẵ ẩ
vi c xóa tr ng vùng nh ch a d li u c a đ i ệ ố ớ ứ ữ ệ ủ ố
t ng ượ  Tr 0/null.ị
-
Khi m t l p đã có constructor thì constructor m c ộ ớ ặ
đ nh c a ngôn ng không còn đ c áp d ng ị ủ ữ ượ ụ
n a.ữ
-
T p các constructor hình thành các cách đ nh ậ ị
nghĩa đ i t ng.ố ượ
-
Đ nh nghĩa m t đ i t ng không theo m t m u ị ộ ố ượ ộ ẫ
constructor s gây l i.ẽ ỗ
Slide 23/81
Thí d : constructor c a ngôn ng (gõ 3 phím)ụ ủ ữ
b
x
y
z
1000
b
0
0
0
1000
N u là constructor t t o thì vi cế ự ạ ệ
kh i t o tr ban đ u đ c n đ nhở ạ ị ầ ượ ấ ị
b i code trong constructor.ở

Slide 24/81
Thí d : constructor là m u kh i t o đ i t ngụ ẫ ở ạ ố ượ
N u m t l p có constructor thì constructor m c đ nh c a ngôn ng ế ộ ớ ặ ị ủ ữ
không đ c s d ng n a.ượ ử ụ ữ
Slide 25/81
Thí d : l p có nhi u constructorụ ớ ề
Vi t l i default constructorế ạ
constructor t t oự ạ
Copy constructor

×