Professional Documents
Culture Documents
KTLT HDT
KTLT HDT
I. Khi nim
i tng trong th gii thc
V d mt chic t
Lin quan n chic t: Cc thng tin v chic xe nh: mu sc, tc , s km i c,... Cc hot ng ca chic xe nh: tng tc khi nhn ga, gim tc khi p phanh,...
Mt i tng trong th gii thc l mt thc th c th m thng thng chng ta c th s, nhn thy hay cm nhn c. Tt c c trng thi (state) v hnh ng (behaviour)
3
i tng phn mm
Cc i tng phn mm c th c dng biu din cc i tng th gii thc. Cng c trng thi v hnh ng
Trng
thi: thuc tnh (attribute; property) Hnh ng: phng thc (method)
4
1. i tng
i tng phn mm
i tng phn mm Xe p
i tng (object) l mt thc th phn mm bao bc cc thuc tnh v cc phng thc lin quan.
2. M hnh ha i tng
House Reality Tree Tom Car
Object-oriented modeling
Car Tree
Gi hm vs. Gi thng ip
Gi hm (Call function)
Ch ra chnh xc on m no s c thc hin. Ch c duy nht mt s thc thi ca mt hm vi mt tn no . Khng c hai hm trng tn
Gi thng ip
Yu cu mt dch v t mt i tng v i tng s quyt nh cn phi lm g Cc i tng khc nhau s c cc cch thc thi cc thng ip theo cch khc nhau.
Phng thc
Th tc/hm trong ngn ng lp trnh cu trc L s thc thi dch v c yu cu bi thng ip L on m s c thc thi p ng thng ip c gi n cho i tng
10
4. Lp i tng
Trong th gii thc c nhiu i tng cng loi. Chng trnh hng i tng c nhiu i tng cng loi chia s nhng c im chung. V d
11
Lp
Mt lp l mt thit k (blueprint) hay mu (prototype) cho cc i tng cng kiu
V d: lp XeDap l mt thit k chung cho nhiu i tng xe p c to ra
Lp nh ngha cc thuc tnh v cc phng thc chung cho tt c cc i tng ca cng mt loi no Mt i tng l mt th hin c th ca mt lp.
V d: mi i tng xe p l mt th hin ca lp XeDap
12
V d Lp Xe p
Khai bo cho lp XeDap i tng ca lp XeDap
13
Lp vs. i tng
Lp l m hnh khi nim, m t cc thc th Lp nh mt bn mu, nh ngha cc thuc tnh v phng thc chung ca cc i tng Mt lp l s tru tng ha ca mt tp cc i tng i tng l s vt tht, l thc th thc s i tng l mt th hin (instance) ca mt lp, d liu ca cc i tng khc nhau l khc nhau Mi i tng c mt lp xc nh d liu v hnh vi ca n.
14
II. Cc nguyn l c bn
Hng i tng
M-un ha
Tru tng ha
Phn cp
ng gi
15
16
16
V d: Tru tng ha
Sinh vin
Gio vin
Kha hc (v d i s)
17
Cn n gin ha, b qua nhng chi tit khng cn thit Ch trch rt ly nhng thng tin lin quan, thng tin quan tm, quan trng vi bi ton
19
20
21
unclassified "things"
22
23
24
2. ng gi (Encapsulation)
Che giu, n i chi tit thc hin bn trong
Cung cp cho th gii bn ngoi mt giao din Ngi dng khng ph thuc vo vic sa i s thc thi bn trong
25
ng gi
Mt i tng l mt thc th c ng gi, cung cp tp cc dch v nht nh Mt i tng c ng gi c th c xem nh mt hp en cc cng vic bn trong l n so vi client D thay i thit k/m
ngun bn trong nhng giao din bn ngoi khng b thay i theo
Input
Output
26
ng gi i tng
Client Methods
27
Minh ha vic ng gi
Giao din thng ip (phng thc) ca i tng Gio s Clark c yu cu dy 4 lp thng ti
Gio s Clark
SetMaxLoad(4)
TakeSabbatica l()
28
ng gi
D liu/thuc tnh v hnh vi/phng thc c ng gi trong mt lp Encapsulation
29
c. M un ha (Modularity)
Chia nh h thng phc tp thnh nhng thnh phn nh c th qun l c. Cho php ngi dng hiu bit v h thng.
30
30
V d: M un ha
V d, chia nh mt h thng phc tp thnh cc m un nh hn.
d. Phn cp (Hierarchy)
Gia tng mc tru tng ha
Ti sn
Chng khon
Bt ng sn
Tit kim
Tin gi
C phiu
Cc loi giy t c gi tr
32
32
III. KHAI BO
34
1. Khai bo lp
Lp ng gi cc thnh vin (member)
Cc trng/thuc tnh (field/attribute) Cc hm/phng thc (function/method):
String owner; double balance;
Attribute declarations
Method declarations
35
Khai bo lp
Trong Java, cc lp c nhm li thnh package Package bao gm mt tp hp cc lp c quan h logic vi nhau, Package c coi nh cc th mc, l ni t chc cc lp, gip xc nh v tr d dng v s dng cc lp mt cch ph hp. V d: Mt s package c sn ca Java: java.lang, javax.swing, java.io Package c th do ta t t
Cch nhau bng du . Quy c s dng k t thng t tn package V d: package oop.k52.cnpm;
36
C php khai bo
package tenpackage; chi_dinh_truy_cap class TenLop {
// Than lop
chi_dinh_truy_cap:
public: Lp c th c truy cp t bt c u, k c bn ngoi package cha lp . private: Lp ch c th c truy cp trong phm vi lp Khng c (mc nh): Lp c th c truy cp t bn trong package cha lp .
37
V d - Khai bo lp
package oop.k52.cnpm; public class Student {
38
public
Khng c
private
public
private
Yes No No
40
a. Thuc tnh
Cc thuc tnh phi c khai bo bn trong lp Mi i tng c bn sao cc thuc tnh ca ring n
Gi tr ca mt thuc tnh thuc cc i tng khc nhau l khc nhau.
Thuc tnh
Thuc tnh c th c khi to khi khai bo Cc gi tr mc nh s c s dng nu khng c khi to.
b. Phng thc
Xc nh cch mt i tng p ng li thng ip Phng thc xc nh cc hot ng ca lp Bt k phng thc no cng phi thuc v mt lp no
boolean
43
44
* Kiu d liu tr v
Khi phng thc tr v t nht mt gi tr hoc mt i tng th bt buc phi c cu lnh return tr iu khin cho i tng gi phng thc. Nu phng thc khng tr v 1 gi tr no (void) v c th khng cn cu lnh return C th c nhiu lnh return trong mt phng thc; cu lnh u tin m chng trnh gp s c thc thi.
45
V d:
final double PI = 3.141592653589793; public final int VAL_THREE = 39; private final int[] A = { 1, 2, 3, 4, 5, 6 };
47
48
Cc i tng khc mun truy nhp vo d liu ring t ny phi thng qua cc phng thc public
50
51
4. Khai bo i tng
D liu cn c khi to trc khi s dng Li khi to l mt trong cc li ph bin Vi kiu d liu n gin, s dng ton t = Vi i tng Cn dng phng thc khi to
Student name address studentID dateOfBirth
Nguyn Hong Nam Nguyn Thu Hng
52
Hi Phng
Khi to v hy b i tng
Mi i tng khi tn ti v hot ng c h iu hnh cp pht mt vng nh lu li cc gi tr ca d liu thnh phn Khi to ra i tng HH s gn gi tr khi to cho cc d liu thnh phn Phi c thc hin t ng trc khi ngi lp trnh c th tc ng ln i tng S dng hm/phng thc khi to Ngc li khi kt thc cn phi gii phng hp l tt c cc b nh cp pht cho i tng. Java: JVM C++: Hm hy (destructor)
54
56
57
b. Khi to i tng
i tng c to ra, th hin ha (instantiate) t mt mu chung (lp). Cc i tng phi c khai bo kiu ca i tng trc khi s dng: Kiu ca i tng l lp cc i tng V d:
String strName; BankAccount acc;
59
Mt i tng c khi to mc nh l null i tng c thao tc thng qua tham chiu (~ con tr). V d:
BankAccount acc1; acc1 = new BankAccount();
60
V d:
BankAccount account = new BankAccount();
61
62
63
V d 1
class BankAccount{ private String owner; private double balance; } public class Test{ public static void main(String args[]){ BankAccount acc1 = new BankAccount();
} }
V d 2
public class BackAccount{ private String owner; private double balance; public BankAccount(){ owner = noname; } } public class Test{ public static void main(String args[]){ BankAccount acc1 = new BankAccount(); } }
V d 3
public class BankAccount { private String owner; private double balance; public BankAccount(String name){ setOwner(name); } public void setOwner(String o){ owner = o; } } public class Test{ public static void main(String args[]){ //Error BankAccount account1 = new BankAccount(); BankAccount account2 = new BankAccount(Hoang); } } 66
67
68
public class BankAccount{ private String owner; private double balance; public BankAccount(String name) {
setOwner(name);
} public void setOwner(String o){ owner = o; } public String getOwner(){ return owner; } } public class Test{ public static void main(String args[]){ BankAccount acc1 = new BankAccount(); BankAccount acc2 = new BankAccount(Hong); acc1.setOwner(Hoa); System.out.println(acc1.getOwner() + + acc2.getOwner()); }
69
70
public class BankAccount{ private String owner; private double balance; public BankAccount() { } public void setOwner(String owner){
this.owner = owner;
} public String getOwner(){ return owner; } } public class Test{ public static void main(String args[]){ BankAccount acc1 = new BankAccount(); BankAccount acc2 = new BankAccount();
acc1.setOwner(Hoa); acc2.setOwner(Hong);
System.out.println(acc1.getOwner() + + acc2.getOwner()); }
71
V d
public Polygon polygonFrom(Point[] corners) { // method body goes here }
72
Sau khi truyn cho phng thc, i tng c t nht 2 tham chiu
75
V d
public class Point { private double x; private double y; public Point() { } public Point(double x, double y) { this.x = x; this.y = y; } public void setX(double x) { this.x = x; } public void setY(double y) { this.y = y; } public void printPoint() { System.out.println("X: " + x + " Y: " + y); } }
76
arg1.setX(100); arg1.setY(100); Point temp = arg1; arg1 = arg2; arg2 = temp; } public static void main(String [] args) { Point pnt1 = new Point(0,0); Point pnt2 = new Point(0,0); pnt1.printPoint(); pnt2.printPoint(); System.out.println(); tricky(pnt1, pnt2); pnt1.printPoint(); pnt2.printPoint();
}
}
77
78
V. KT TP V K THA
1. 2. 3. 4.
81
82
im ca ti s dng m ngun
Gim thiu cng sc, chi ph Nng cao cht lng phn mm Nng cao kh nng m hnh ha th gii thc Nng cao kh nng bo tr (maintainability)
83
2. Kt tp
V d:
im
T gic gm 4 im Kt tp
Kt tp
Quan h cha/c (hasa) hoc l mt phn (is-a-part-of)
84
2.1. Bn cht ca kt tp
Kt tp (aggregation)
To ra cc i tng ca cc lp c sn trong lp mi thnh vin ca lp mi. Kt tp ti s dng thng qua i tng
Lp mi
Lp ton th (Aggregate/Whole),
Lp c
Lp thnh phn (Part).
85
86
Diem
87
V d
88
89
class TuGiac { 1 4 TuGiac Diem private Diem d1, d2; private Diem d3, d4; public TuGiac(Diem p1, Diem p2, Diem p3, Diem p4){ d1 = p1; d2 = p2; d3 = p3; d4 = p4; } public TuGiac(){ d1 = new Diem(); d2 = new Diem(0,1); d3 = new Diem (1,1); d4 = new Diem (1,0); } public void printTuGiac(){ d1.printDiem(); d2.printDiem(); d3.printDiem(); d4.printDiem(); System.out.println(); } } 90
public class Test { public static void main(String arg[]) { Diem d1 = new Diem(2,3); Diem d2 = new Diem(4,1); Diem d3 = new Diem (5,1); Diem d4 = new Diem (8,4); TuGiac tg1 = new TuGiac(d1, d2, d3, d4); TuGiac tg2 = new TuGiac(); tg1.printTuGiac(); tg2.printTuGiac(); } }
91
92
3. K tha
V d:
im T gic gm 4 im Kt tp T gic Hnh vung K tha
93
Bn cht k tha
Lp c:
Lp cha (parent, superclass), lp c s (base class)
Lp mi:
Lp con (child, subclass), lp dn xut (derived class)
94
95
Cu trc phn cp hnh cy, biu din mi quan h k tha gia cc lp. B Dn xut trc tip
B dn xut trc tip t A
Vehicle
Moto
SportCar
Compact
SportMoto
96
V d
Cc lp con c cng lp cha gi l anh ch em (siblings) Thnh vin c k tha s c k tha xung di trong cy phn cp Lp con k tha tt c cc lp t tin ca n Trong gi java.lang, nu mt lp khng c nh ngha l lp con ca mt lp khc th mc nh n l lp con trc tip ca lp Object. Lp Object l lp gc trn cng ca tt c cc cy phn cp k tha
Hnh
Hnh ba chiu
Hnh trn
T gic
Tam gic
Hnh cu
Hnh lng tr
T din
97
4. So snh kt tp v k tha
Ging nhau
u l k thut trong OOP ti s dng m ngun
Khc nhau?
98
99
VI. A HNH
1. Khi nim
Cc lp khc nhau c th p ng danh sch cc thng ip ging nhau, v vy cung cp cc dch v ging nhau Cch thc p ng thng ip, thc hin dch v khc nhau Chng c th tro i cho nhau m khng nh hng n i tng gi thng ip a hnh
101
Khi nim
Polymorphism: Nhiu hnh thc thc hin, nhiu kiu tn ti a hnh trong lp trnh
a hnh phng thc:
Phng thc trng tn, phn bit bi danh sch tham s.
a hnh i tng
Nhn nhn i tng theo nhiu kiu khc nhau Cc i tng khc nhau cng p ng chung danh sch cc thng ip c gii ngha thng ip theo cch thc khc nhau.
102
public class Test3 { public static void main(String args[]){ Person p1 = new Employee(); Person p2 = new Manager(); Employee e = (Employee) p1; Manager m = (Manager) p2;
103
3. Lin kt ng
Cc i tng khc nhau gii ngha cc thng ip theo cc cch thc khc nhau
Li gi phng thc c quyt nh khi thc hin (run-time)
Late binding/Run-time binding La chn phin bn ca phng thc ph hp vi i tng c gi.
V d: Person p1 = new Person(); Person p2 = new Employee(); Person p3 = new Manager(); // ... System.out.println(p1.getDetail()); System.out.println(p2.getDetail()); System.out.println(p3.getDetail());
104