Chng 1
LP TRÌNH HNG I TNG
Mc tiêu
Kt thúc chng, hc viên có th:
nh ngha Lp trình hng i tng (Object-oriented Programming).
Nhn thc v Tru tng hóa D liu (Data Abstraction).
nh ngha mt Lp (Class).
nh ngha mt i tng (Object).
Nhn thc đc s khác bit gia Lp và i tng.
Nhn thc đc s cn thit đi vi Thit lp (Construction) và Hy
(Destruction).
nh ngha tính Bn vng (Persistence).
Hiu bit v tính Tha k (Inheritance).
nh ngha tính a hình (Polymorphism).
Lit kê nhng thun li ca phng pháp hng i tng.
1.1 Gii thiu v Lp trình hng i tng (Object-oriented Programming)
Lp trình hng i tng (OOP) là mt phng pháp thit k và phát trin phn mm.
Nhng ngôn ng OOP không ch bao gm cú pháp và mt trình biên dch (compiler) mà
còn có mt môi trng phát trin toàn din. Môi trng này bao gm mt th vin đc
thit k tt, thun li cho vic s dng các đi tng.
i vi mt ngôn ng lp trình h tr OOP thì vic trin khai k thut lp trình hng
đi tng s d dàng hn. K thut lp trình hng đi tng ci tin vic phát trin các
h thng phn mm. K thut y đ cao nhân t chc nng (fucntionality) và các mi
quan h d liu.
OOP là phng thc t duy mi đ gii quyt vn đ bng máy tính. đt kt qu, lp
trình viên phi nn vn đ thành mt thc th quen thuc vi máy tính. Cách tip cn
hng đi tng cung cp mt gii pháp toàn vn đ gii quyt vn đ.
Hãy xem xét mt tình hung cn đc trin khai thành mt h thng trên máy vi tính:
vic mua bán xe hi. Vn đ vi tính hóa vic mua bán xe hi bao gm nhng gì?
Nhng yu t rõ ràng nht liên quan đn vic mua bán xe hi là:
1) Các kiu xe hi (model).
2) Nhân viên bán hàng.
3) Khách hàng.
Nhng hot đng liên quan đn vic mua bán:
1) Nhân viên bán hàng đa khách hàng tham quan phòng trng bày.
2) Khách hàng chn la mt xe hi.
3) Khách hàng đt hóa đn.
4) Khách hàng tr tin.
5) Chic xe đc trao cho khách hàng.
Mi vn đ đc chia ra thành nhiu yu t, đc gi là các i tng (Objects) hoc
các Thc th (Entities). Chng hn nh ví d trên, khách hàng, xe hi và nhân viên bán
hàng là nhng đi tng hoc thc th.
Lp trình viên luôn luôn c gng to ra nhng kch bn (scenarios) tht quen thuc vi
nhng tình hung đi sng thc. Bc th nht trong đng hng này là làm cho máy
tính liên kt vi nhng đi tng th gii thc.
Tuy nhiên, máy tính ch là mt c máy. Nó ch thc hin nhng công vic đc lp trình
mà thôi. Vì th, trách nhim ca lp trình viên là cung cp cho máy tính nhng thông tin
theo cách thc mà nó cng nhn thc đc cùng nhng thc th nh chúng ta nhn thc.
ó chính là lãnh vc ca k thut hng đi tng. Chúng ta s dng k thut hng đi
tng đ ánh x nhng thc th chúng ta gp phi trong đi sng thc thành nhng thc
th tng t trong máy tính.
Phát trin phn mm theo k thut lp trình hng đi tng có kh nng gim thiu s
ln ln thng xy ra gia h thng và lãnh vc ng dng.
Lp trình hng đi tng đ cp đn d liu và th tc x lý d liu theo quan đim là
mt đi tng duy nht. Lp trình hng đi tng xem xét d liu nh là mt thc th
hay là mt đn v đc lp, vi bn cht riêng và nhng đc tính ca thc th y. Bây gi
chúng ta hãy kho sát nhng hn t ‘đi tng’ (object), ‘d liu’ (data) và ‘phng
thc’ (method).
Có nhiu loi đi tng khác nhau. Chúng ta có th xem các b phn khác nhau trong
mt c quan là các đi tng. in hình là mt c quan có nhng b phn liên quan đn
vic qun tr, đn vic kinh doanh, đn vic k toán, đn vic tip th … Mi b phn có
nhân s riêng, các nhân s đc trao cho nhng trách nhim rõ ràng. Mi b phn cng
có nhng d liu riêng chng hn nh thông tin cá nhân, bng kim kê, nhng th thc
kinh doanh, hoc bt k d liu nào liên quan đn chc nng ca b phn đó. Rõ ràng là
mt c quan đc chia thành nhiu b phn thì vic qun tr nhân s và nhng hot đng
doanh nghip d dàng hn. Nhân s ca c quan điu khin và x lý d liu liên quan
đn b phn ca mình.
Chng hn nh b phn k toán chu trách nhim v lng bng đi vi c quan. Nu
mt ngi đn v tip th cn nhng chi tit liên quan đn lng bng ca đn v mình,
ngi y ch cn liên h vi b phn k toán. Mt ngi có thm quyn trong b phn k
toán s cung cp thông tin cn bit, nu nh thông tin y có th chia s đc. Mt ngi
không có thm quyn t mt b phn khác thì không th truy cp d liu, hoc không th
thay đi làm h hng d liu. Ví d này minh chng các đi tng là hu dng trong
vic phân cp và t chc d liu.
Hình 1.1 Minh ha cu trúc ca mt c quan đin hình.
Khái nim v đi tng có th đc m rng đn hu ht các lãnh vc đi sng, và hn
na, đn th gii lp trình. Bt k ng dng nào đu có th đc đnh ngha theo hn t
thc th hoc đi tng đ to ra tin trình x lý mô phng theo tin trình x lý mà con
ngi ngh ra.
Phng pháp gii quyt ‘top-down’ (t trên xung) cng còn đc gi là ‘lp trình hng
cu trúc’ (structured programming). Nó xác đnh nhng chc nng chính ca mt chng
trình và nhng chc nng này đc phân thành nhng đn v nh hn cho đn mc đ
thp nht. Bng k thut này, các chng trình đc cu trúc theo h thng phân cp các
module. Mi mt module có mt đu vào riêng và mt đu ra riêng. Trong mi module,
s điu khin có chiu hng đi xung theo cu trúc ch không có chiu hng đi lên.
Phng pháp OOP c gng qun lý vic tha k phc tp trong nhng vn đ đi thc.
làm đc vic này, phng thc OOP che giu mt vài thông tin bên trong các đi
tng. OOP tp trung trc ht trên d liu. Ri gn kt các phng thc thao tác trên d
liu, vic này đc xem nh là phn tha k ca vic đnh ngha d liu. Bng 1.1 minh
ha s khác bit gia hai phng pháp:
Phng pháp Top-Down OOP
Chúng ta s xây dng mt khách sn. Chúng ta s xây dng mt tòa nhà 10 tng
vi nhng dãy phòng trung bình, sang
trng, và mt phòng hp ln.
Chúng ta s thit k các tng lu, các phòng
và phòng hp.
Chúng ta s xây dng mt khách sn vi
nhng thành phn trên.
Bng 1.1 Mt ví d v hai phng pháp gii quyt OOP và Structured
Phòng Nhân s Phòng K toán
Phòng Kinh doanh
Hình 1.1
1.2 Tru tng hóa d liu (Data Abstraction)
Khi mt lp trình viên phi phát trin mt chng trình ng dng thì không có ngha là
ngi y lp tc vit mã cho ng dng y. Trc ht, ngi y phi nghiên cu ng dng
và xác đnh nhng thành phn to nên ng dng. K tip, ngi y phi xác đnh nhng
thông tin cn thit v mi thành phn.
Hãy kho sát chng trình ng dng cho vic mua bán xe hi nói trên. Chng trình phi
xut hóa đn cho nhng xe hi đã bán cho khách hàng. xut mt hóa đn, chúng ta
cn nhng thông tin chi tit v khách hàng. Vy bc th nht là xác đnh nhng đc tính
ca khách hàng.
Mt vài đc tính gn kt vi khách hàng là:
Tên.
a ch.
Tui.
Chiu cao.
Màu tóc.
T danh sách k trên, chúng ta xác đnh nhng đc tính thit yu đi vi ng dng. Bi
vì chúng ta đang đ cp đn nhng khách hàng mua xe, vì th nhng chi tit thit yu là:
Tên.
a ch.
Còn nhng chi tit khác (chiu cao, màu tóc …) là không quan trng đi vi ng dng.
Tuy nhiên, nu chúng ta phát trin mt ng dng h tr cho vic điu tra ti phm thì
nhng thông tin chng hn nh màu tóc là thit yu.
Bên cnh nhng chi tit v khách hàng, nhng thông tin sau cng cn thit:
Kiu xe đc bán.
Nhân viên nào bán xe.
Bên cnh nhng đc tính ca khách hàng, xe hi và nhân viên bán hàng, chúng ta cng
cn lit kê nhng hành đng đc thc hin.
Công vic xut hóa đn đòi hi nhng hành đng sau:
Nhp tên ca khách hàng.
Nhp đa ch ca khách hàng.
Nhp kiu xe.
Nhp tên ca nhân viên bán xe.
Xut hóa đn vi đnh dng đòi hi.
Khung thông tin bên di cho thy nhng thuc tính và nhng hành đng liên quan đn
mt hóa đn:
Các thuc tính
Tên ca khách hàng
a ch ca khách hàng
Kiu xe bán
Nhân viên bán xe
Các hành đng
Nhp tên
Nhp đa ch
Nhp kiu xe
Nhp tên nhân viên bán xe
Xut hóa đn
Tip theo, chúng ta mun ng dng tính toán tin hoa hng cho nhân viên bán hàng.
Nhng thuc tính liên kt vi nhân viên bán hàng có tng quan vi ng dng này là:
Tên.
S lng xe bán đc.
Tin hoa hng.
Nhng hành đng đòi buc đi vi công vic này là:
Nhp tên nhân viên bán xe.
Nhp s lng xe bán đc.
Tính tin hoa hng kim đc.
Nhng thuc tính
Tên
S lng xe bán đc
Tin hoa hng
Nhng hành đng
Nhp tên
Nhp s lng xe bán đc
nh ngha
S tru tng hóa d liu là tin trình xác đnh và nhóm các thuc tính và các hành
đng liên quan đn mt thc th đc thù, xét trong mi tng quan vi ng dng đang
phát trin.
Tính tin hoa hng
Nh th, vic tru tng hóa d liu tra đt ra câu hi ‘âu là nhng thuc tính và nhng
hành đng cn thit cho mt vn đ đt ra?’
1.2.1 Nhng thun li ca vic Tru tng hóa
Nhng thun li ca vic Tru tng hóa là:
Tp trung vào vn đ.
Xác đnh nhng đc tính thit yu và nhng hành đng đòi hi.
Gim thiu nhng chi tit không cn thit.
Vic tru tng hóa d liu là cn thit, bi vì không th mô phng tt c các hành đng
và các thuc tính ca mt thc th. Vn đ mu cht là tp trung đn nhng hành vi ct
yu và áp dng chúng trong ng dng.
Chng hn nh khách hàng hoc nhân viên bán hàng cng có th thc hin nhng hành
đng sau:
Ngi y đi li.
Ngi y nói chuyn.
Tuy nhiên, nhng hành đng này không liên quan đn ng dng. Vic tru tng hóa d
liu s loi b chúng.
1.3 Lp (Class)
Trong ng dng mua bán xe, chúng ta đã xác đnh các thuc tính và các hành đng cn
có đ xut mt hóa đn cho mt khách hàng.
Các hành đng và các thuc tính này là chung cho mi khách hàng mua xe. Ví th, chúng
có th đc nhóm li trong mt thc th đn nht gi là mt ‘lp’.
Hãy kho sát lp có tên là ‘khách hàng’ di đây. Lp này bao gm mi thuc tính và
hành đng đòi hi đi vi mt khách hàng.
Lp Khách hàng
Tên khách hàng
a ch khách hàng
Kiu xe đc bán
Nhân viên bán xe
Nhp tên
Nhp đa ch
Nhp kiu xe đc bán
Nhp tên nhân viên bán xe
Xut hóa đn
Mt lp là mt mô hình khái nim v mt thc th. Nó mang tính cách tng quát ch
không mang tính cách đc thù.
Khi đnh ngha mt lp, chúng ta mun phát biu rng mt lp s phi có mt tp hp
các thuc tính và các hành đng riêng. Chng hn nh mt đnh ngha lp di đây:
Lp Con ngi
Tên
Chiu cao
Màu tóc
Vit
Nói
Lp này đnh ngha thc th ‘Con ngi’. Mi thc th thuc kiu ‘Con ngi’ s đu có
nhng đc tính và nhng hành đng nh đã đc đnh ngha.
Mt khi mt lp đã đc đnh ngha, chúng ta bit đc nhng thuc tính và nhng hành
đng ca nhng thc th ‘trông ging’ nh lp này. Vì th, t bn cht mt lp là mt
nguyên mu (prototype).
Mt ví d khác v mt lp liên quan đn vic mua bán xe hi nh sau:
Lp Nhân viên bán hàng
Tên
S lng xe bán đc
Tin hoa hng
Nhp tên
Nhp s lng xe bán đc
Tính tin hoa hng
Lp trên đnh ngha các thuc tính và các hành đng đc trng cho mi nhân viên bán xe
hi.
nh ngha
Mt lp đnh ngha mt thc th theo nhng thuc tính và nhng hành đng chung.
Hoc
Nhng thuc tính và nhng hành đng chung ca mt thc th đc nhóm li đ to nên
mt đn v duy nht gi là mt lp.
Hoc
Mt lp là mt s xác đnh cp chng loi ca các thc th ging nhau.
1.4 i tng (Object)
Mt lp là mt nguyên mu phác ha nhng thuc tính và nhng hành đng kh th ca
mt thc th. có th s dng thc th mà lp đnh ngha, chúng ta phi to mt ‘đi
tng’ t lp đó.
Lp là mt khái nim, còn đi tng là mt mu thc đc đnh ngha bi lp.
Hãy kho sát lp ‘Khách hàng’ đc đnh ngha trên. Lp này đnh ngha mi thuc tính
và hành đng gn lin vi mt khách hàng.
Khi mt ngi mua mt xe hi mt ca hàng, ca hàng y có mt khách hàng mi.
Vào thi đim y, mt đi tng ging nh lp ‘Khách hàng’ đc to ra. i tng này
s phi có nhng giá tr thc đi vi các thuc tính ‘Tên’, ‘a ch’, ‘Kiu xe’ …
Chng hn nh mt khách hàng có tên là ‘Mark’, sng ‘London’ đã mua mt xe kiu
‘Honda Civic’ t nhân viên bán hàng tên là ‘Tom’. Nh th, ‘Mark’ là mt đi tng ca
kiu ‘Khách hàng’.
Mt đi tng là mt thc th c th (thông thng bn có th s chm, xem thy và cm
nhn).
K t lúc mt đi tng hin hu, nhng thuc tính ca nó là nhng giá tr xác đnh, và
nhng hành đng đc đnh ngha cho đi tng này đc thc thi.
Trong mi mt đi tng, các khía cnh sau đây đc xác đnh rõ:
Tình trng (state).
Thái đ (behavior).
Chân tính (identity).
nh ngha
Mt đi tng là mt trng hp ca mt lp.
Hình 1.2 trình bày hai đi tng đi thc.
Mi đi tng có nhng đc tính riêng mô t đi tng y là gì, hoc hành đng ra sao.
Chng hn nh nhng thuc tính ca mt đi tng ‘Con ngi’ s là:
Tên.
Tui.
Trng lng.
Nhng thuc tính ca mt đi tng ‘Xe hi’ s là:
Màu sc.
Kiu xe.
Nm.
Mt đi tng cng thc hin mt s hành đng. Mt xe hi có kh nng thc hin
nhng hành đng sau:
Khi đng.
Ngng.
Chuyn đng.
chuyn đi gia các đi tng lp trình và các đi tng đi thc, cn phi kt hp
các thuc tính và các hành đng ca mt đi tng.
Con ngi
Tên: Jack
Tui: 28
Trng lng: 65 kgs
Hành đng:
i
Nói
Suy ngh
Xe hi
Kiu: Ferrari
Màu:
Nm: 1995
Hành đng:
Khi đng
Ngng
Chuyn đng
Hình 1.2: Mt đi tng Con ngi và mt đi tng Xe hi