12. OOP: Kh叩i ni畛m12
L畉p tr狸nh c坦 c畉u tr炭c/l畉p tr狸nh th畛 t畛c
Nh動畛c i畛m
d畛 li畛u v m達 x畛 l箪 l t叩ch r畛i
ng動畛i l畉p tr狸nh ph畉i bi畉t c畉u tr炭c d畛 li畛u (v畉n 畛 ny
m畛t th畛i gian di 動畛c coi l hi畛n nhi棚n)
khi thay 畛i c畉u tr炭c d畛 li畛u th狸 m達 x畛 l箪 (thu畉t to叩n)
ph畉i thay 畛i theo
kh坦 畉m b畉o t鱈nh 炭ng 畉n c畛a d畛 li畛u
kh担ng t畛 畛ng kh畛i t畉o hay gi畉i ph坦ng d畛 li畛u 畛ng
13. OOP: Kh叩i ni畛m13
T畉i sao ph畉i thay 畛i c畉u tr炭c d畛 li畛u?
C畉u tr炭c d畛 li畛u l m担 h狸nh c畛a bi to叩n c畉n gi畉i
quy畉t
Do thi畉u ki畉n th畛c v畛 bi to叩n, v畛 mi畛n 畛ng d畛ng...,
kh担ng ph畉i l炭c no c滴ng t畉o 動畛c c畉u tr炭c d畛 li畛u
hon thi畛n ngay t畛 畉u.
T畉o ra m畛t c畉u tr炭c d畛 li畛u h畛p l箪 lu担n l v畉n 畛 au
畉u c畛a ng動畛i l畉p tr狸nh.
B畉n th但n bi to叩n c滴ng kh担ng b畉t bi畉n
C畉n ph畉i thay 畛i c畉u tr炭c d畛 li畛u 畛 ph湛 h畛p v畛i c叩c
y棚u c畉u thay 畛i.
14. OOP: Kh叩i ni畛m14
C叩c v畉n 畛
Thay 畛i c畉u tr炭c
d畉n 畉n vi畛c s畛a l畉i m達 ch動董ng tr狸nh (thu畉t to叩n)
t動董ng 畛ng v lm chi ph鱈 ph叩t tri畛n tng cao.
kh担ng t叩i s畛 d畛ng 動畛c c叩c m達 x畛 l箪 畛ng v畛i c畉u tr炭c
d畛 li畛u c滴.
畉m b畉o t鱈nh 炭ng 畉n c畛a d畛 li畛u
m畛t trong nh畛ng nguy棚n nh但n ch鱈nh g但y ra l畛i ph畉n
m畛m l g叩n c叩c d畛 li畛u kh担ng h畛p l畛
c畉n ph畉i ki畛m tra t鱈nh 炭ng 畉n c畛a d畛 li畛u m畛i khi
thay 畛i gi叩 tr畛
15. OOP: Kh叩i ni畛m15
V鱈 d畛: MyDate
MyDate.java:
class MyDate {
private int year, month, day;
}
MyCalendar.java:
MyDate d = new MyDate();
d.day = 32; // invalid day
d.day = 31; d.month = 2; // how to check
d.day = d.day + 1; //
16. OOP: Kh叩i ni畛m16
V鱈 d畛: MyDate (2)
Thay 畛i c畉u tr炭c d畛 li畛u:
MyDate.java:
class MyDate {
public short year;
public short mon_n_day;
}
17. OOP: Kh叩i ni畛m17
Gi畉i ph叩p
Che gi畉u d畛 li畛u (che gi畉u c畉u tr炭c)
Truy c畉p d畛 li畛u th担ng qua giao di畛n x叩c 畛nh
class MyDate {
private int year, mon, day;
public int getDay() {...}
public boolean setDay(int day)
{day=day}
...
}
18. OOP: Kh叩i ni畛m18
S畛 d畛ng giao di畛n
MyCalendar.java:
MyDate d = new MyDate();
...
d.day = 32; // error
d.setDay(32);
d.setMonth(2); // should return False
19. OOP: Kh叩i ni畛m19
Data
Method 1 Method 2 Method 3
Data
Method 1 Method 2 Method 3
an object
another object
Function 1 Function 2
Global data
Function 4 Function 3
20. OOP: Kh叩i ni畛m20
坦ng g坦i/che gi畉u th担ng tin
坦ng g坦i d畛 li畛u v c叩c thao t叩c t叩c 畛ng l棚n d畛 li畛u
thnh m畛t th畛 th畛ng nh畉t (l畛p 畛i t動畛ng) thu畉n ti畛n
cho s畛 d畛ng l畉i
Che gi畉u th担ng tin
thao t叩c v畛i d畛 li畛u th担ng qua c叩c giao di畛n x叩c 畛nh
che gi畉u ng動畛i l畉p tr狸nh kh叩ch (client programmer) c叩i c坦
kh畉 nng thay 畛i (t叩ch c叩i b畉t bi畉n ra kh畛i c叩i kh畉 bi畉n)
21. OOP: Kh叩i ni畛m21
L畛p v 畛i t動畛ng
L畛p 畛i t動畛ng (class) l khu担n m畉u 畛 sinh ra 畛i
t動畛ng
畛i t動畛ng l th畛 hi畛n (instance) c畛a m畛t l畛p. 畛i
t動畛ng c坦
thu畛c t鱈nh (d畛 li畛u)
畛nh danh
hnh vi (ph動董ng th畛c)