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

Chương 03: LỚP – KIỂU DỮ LIỆU TRỪU TƯỢNG pptx

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

×