TNG QUAN V LP TRNH HNG I
TNG
ThS. Trn Anh Dng
Ni dung
14/09/2014 Lp trnh hng i tng 2
Gii thiu 1
Cc phng php lp trnh 2
Mt s khi nim c bn 3
Cc c im quan trng ca OOP 4
Mt s thut ng OOP 5 5
Gii thiu
Mc tiu ca k s lp trnh:
To ra sn phm tt mt cch c hiu qu
Nm bt c cng ngh
14/09/2014 Lp trnh hng i tng 3
Gii thiu
phc tp v ln ngy cng cao:
Mt s h Unix cha khong 4M dng lnh
MS Windows cha hng chc triu dng lnh
Ngi dng ngy cng i hi nhiu chc
nng, c bit l chc nng thng minh
Phn mm lun cn c sa i
14/09/2014 Lp trnh hng i tng 4
Gii php
Cn kim sot chi ph:
Chi ph pht trin
Chi ph bo tr
Gii php chnh l s dng li (ti s
dng):
Gim chi ph v thi gian pht trin
Nng cao cht lng
14/09/2014 Lp trnh hng i tng 5
Gii php
s dng li (m ngun):
Cn d hiu
c coi l chnh xc
C giao din r rng
Tnh module ha
Khng yu cu thay i khi s dng trong
chng trnh mi
14/09/2014 Lp trnh hng i tng 6
Mc tiu ca vic thit k mt phn mm
Tnh ti s dng (reusability): thit k cc
thnh phn c th c s dng trong
nhiu phn mm khc nhau
Tnh m rng (extensibility)
Tnh mm do (flexibility):
C th d dng thay i khi thm mi d liu
hay tnh nng.
Cc thay i khng lm nh hng nhiu n
ton b h thng
14/09/2014 Lp trnh hng i tng 7
Cc phng php lp trnh
S tin ha ca cc phng php lp
trnh:
Lp trnh khng c cu trc
Lp trnh c cu trc (lp trnh th tc), hng
chc nng
Lp trnh hng i tng
14/09/2014 Lp trnh hng i tng 8
Lp trnh khng c cu trc
L phng php xut hin u tin:
Cc ngn ng nh Assembly, Basic
S dng cc bin ton cc
Lm dng lnh GOTO
Nhc im?
Kh hiu, kh bo tr, hu nh khng th s dng li
Cht lng km, Chi ph cao
Khng th pht trin cc ng dng ln
14/09/2014 Lp trnh hng i tng 9
Lp trnh khng c cu trc
V d:
10 k =1
20 gosub 100
30 if y > 120 goto 60
40 k = k+1
50 goto 20
60 print k, y
70 stop
100 y = 3*k*k + 7*k-3
110 return
14/09/2014 Lp trnh hng i tng 10
Lp trnh c cu trc
T chc thnh cc chng trnh con (hay cc
module)
Mi chng trnh con m nhn x l mt cng
vic nh hay mt nhm cng vic trong ton b
h thng.
Mi chng trnh con ny li c th chia nh
thnh cc chng trnh con nh hn.
14/09/2014 Lp trnh hng i tng 11
Chng trnh = Cu trc d liu + Gii thut
Lp trnh c cu trc
S dng cc lnh c cu trc: for, do, while, if
then else...
Cc ngn ng: Pascal, C,...
Chng trnh l tp cc hm/th tc
u im?
Chng trnh c module ha, do d hiu, d bo
tr hn
D dng to ra cc th vin phn mm
14/09/2014 Lp trnh hng i tng 12
Lp trnh c cu trc
V d:
struct Date {
int year, mon, day;
};
//...
void print_date(Date d) {
printf(%d / %d / %d\n, d.day, d.mon, d.year);
}
14/09/2014 Lp trnh hng i tng 13
Lp trnh c cu trc
Nhc im?
D liu v m x l l tch ri
Ngi lp trnh phi bit cu trc d liu
Khi thay i cu trc d liu thut ton phi thay i
theo
Kh m bo tnh ng n ca d liu
Khng t ng khi to hay gii phng d liu ng
Khng m t c y , trung thc h thng trong
thc t
14/09/2014 Lp trnh hng i tng 14
Lp trnh hng i tng
Trong th gii thc, chung quanh chng ta l
nhng i tng, l cc thc th c mi quan
h vi nhau.
V d: Cc phng trong mt cng ty
Lp trnh hng i tng (Object Oriented
Programming LTHT)?
L phng php lp trnh ly i tng lm nn tng
xy dng thut gii, xy dng chng trnh.
14/09/2014 Lp trnh hng i tng 15
Lp trnh Hng i tng
14/09/2014 Lp trnh hng i tng 16
Lp trnh hng i tng l phng php
lp trnh da trn kin trc lp (class)
v i tng (object)
Mt s khi nim c bn
i tng (object)
Lp (class)
14/09/2014 Lp trnh hng i tng 17
Mt s khi nim c bn
i tng (object):
Trong th gii thc, i tng c hiu nh l mt
thc th: ngi, vt hoc mt bng d liu
Mi i tng s tn ti trong mt h thng v c
ngha nht nh trong h thng.
i tng gip biu din tt hn th gii thc trn
my tnh
Mi i tng bao gm 2 thnh phn: thuc tnh v
thao tc (hnh ng).
14/09/2014 Lp trnh hng i tng 18
Mt s khi nim c bn
V d i tng: mt ngi
Mt ngi c cc thuc tnh: tn, tui, a ch,
mu mt
Cc hnh ng: i, ni, th
14/09/2014 Lp trnh hng i tng 19
Mt i tng l 1 thc th bao gm thuc tnh v hnh ng
Mt s khi nim c bn
Lp (class):
Cc i tng c cc c tnh tng t nhau c
gom chung thnh lp i tng. Mt lp i tng
c trng bng cc thuc tnh, v cc hnh ng
(hnh vi, thao tc).
Thuc tnh (Attribute): Mt thnh phn ca i tng,
c gi tr nht nh cho mi i tng ti mi thi im
trong h thng.
Thao tc (Operation): Th hin hnh vi ca mt i
tng tc ng qua li vi cc i tng khc hoc
vi chnh n. 14/09/2014 Lp trnh hng i tng 20
Mt s khi nim c bn
Mi thao tc trn mt lp i tng c th tng
ng vi mt ci t c th khc nhau. Mt ci t
nh vy c gi l mt phng thc (method).
Cng mt phng thc c th c p dng cho
nhiu lp i tng khc nhau, mt thao tc nh
vy c gi l c tnh a hnh (polymorphism).
Mt i tng c th thuc mt lp c gi l
mt th hin (instance) ca lp .
14/09/2014 Lp trnh hng i tng 21
Interacting Objects
14/09/2014 Lp trnh hng i tng 22
Class A Class B
Private:
data members
Private:
data members
Member methods Member methods
Constructor
Other
public methods
Public:
Destructor
Constructor
Other
public methods
Public:
DestructorMessage passing
Private:
methods
Private:
methods
S i tng
Ta dng s i tng m t cc lp i
tng. S i tng bao gm s lp v
s th hin.
S lp m t cc lp i tng trong h
thng, mt lp i tng c din t bng
mt hnh ch nht gm 3 phn:
Phn u ch tn lp
Phn 2 m t cc thuc tnh
Phn 3 m t cc thao tc ca cc i tng trong lp
14/09/2014 Lp trnh hng i tng 23
S lp v s th hin
14/09/2014 Lp trnh hng i tng 24
Sinh vien
Ho ten
Nam sinh
Ma so
iem TB
i hoc
i thi
Phan loai
(Sinh vien)
Nguyen Van A
1984
0610234T
9.2
Ten lp
Thuoc tnh
Thao tac
S o lp S o the hien
i tng = D liu + Phng thc
Thit k theo hng i tng
Tru tng ha d liu v cc hm/th tc
lin quan.
Chia h thng ra thnh cc lp/i tng.
Mi lp/i tng c cc tnh nng v
hnh ng chuyn bit.
Cc lp c th c s dng to ra
nhiu i tng c th.
14/09/2014 Lp trnh hng i tng 25
Cc c im quan trng ca OOP
14/09/2014 Lp trnh hng i tng 26
Cc lp i tng - Classes
ng gi - Encapsulation
Tha k - Inheritance
a hnh - Polymorphism
Tru tng ha
14/09/2014 Lp trnh hng i tng 27
Thc th
Thuc tnh
Hnh ng
Th gii thc Tru tng ha Phn mm
D liu
hm
Tru tng ha
Cch nhn khi qut ha v mt tp cc i
tng c chung cc c im c quan tm (v
b qua nhng chi tit khng cn thit).
14/09/2014 Lp trnh hng i tng 28
ng gi Che du thng tin
14/09/2014 Lp trnh hng i tng 29
ng gi: Nhm nhng g c lin quan vi
nhau vo lm mt, sau ny c th dng
mt ci tn gi n
Cc hm/ th tc ng gi
cc cu lnh
Cc i tng ng gi
d liu ca chng v
cc th tc c lin quan
ng gi Che du thng tin
Che du thng tin: ng gi che mt s
thng tin v chi tit ci t ni b bn
ngoi khng nhn thy
Che giu nhng g m ngi dng khng cn.
Che giu nhng g m mnh cn gi b mt.
14/09/2014 Lp trnh hng i tng 30
Tha k
L c ch cho php mt lp D c c cc thuc
tnh v thao tc ca lp C, nh th cc thuc tnh
v thao tc c nh ngha ti lp D.
Cho php ci t nhiu quan h gia cc i
tng:
c bit ha (l)
Khi qut ha
14/09/2014 Lp trnh hng i tng 31
a hnh
L c ch cho php mt tn thao tc hoc
thuc tnh c th c nh ngha ti nhiu
lp v c th c nhiu ci t khc nhau ti
mi lp trong cc lp .
14/09/2014 Lp trnh hng i tng 32
Cc u im ca OOP
Nguyn l k tha: trnh lp, ti s dng.
Nguyn l ng gi che du thng tin:
chng trnh an ton khng b thay i bi
nhng on chng trnh khc
D m rng, nng cp
M phng th gii thc tt hn.
14/09/2014 Lp trnh hng i tng 33
Cc c tnh chnh ca OOP
Chng trnh c chia thnh cc i
tng.
Cc cu trc d liu c thit k sao cho
c t c i tng.
Cc hm thao tc trn cc vng d liu
ca i tng c gn vi cu trc d
liu .
14/09/2014 Lp trnh hng i tng 34
Cc c tnh chnh ca OOP
D liu c ng gi li, c che giu v
khng cho php cc hm ngoi lai truy nhp
t do.
Cc i tng tc ng v trao i thng tin
vi nhau qua cc hm.
C th d dng b sung d liu v cc hm
mi vo i tng no khi cn thit.
Chng trnh c thit k theo cch tip cn
t di ln (bottom-up).
14/09/2014 Lp trnh hng i tng 35
Mt s thut ng OOP
OOM (Object Oriented Methodology): Phng
php lun hng i tng
OOA (Object Oriented Analysis): Phn tch hng i tng.
OOD: Object Oriented Design (Thit k hng i tng).
OOP: Object Oriented Programming (LTHT).
Inheritance: K tha
Polymorphism: a hnh
Encapsulation: Tnh ng gi.
14/09/2014 Lp trnh hng i tng 36
Ngn ng OOP
Cung cp c nhng kh nng lp trnh
hng i tng.
Cung cp kh nng kim sot truy cp
K tha
a hnh
14/09/2014 Lp trnh hng i tng 37
Bi kim tra 1
Vit chng trnh cho php nhp mt
dy phn s. Ci t hm tnh tng
cc phn s v tm phn s ln nht.
14/09/2014 Lp trnh hng i tng 38
Q & A