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

CoreJava : Lập trình hướng đối tượng

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 (202.09 KB, 24 trang )

Chng 1
LP TRÌNH HNG I TNG



Mc tiêu

Kt thúc chng, hc viên có th:

 nh ngha Lp trình hng i tng (Object-oriented Programming).
 Nhn thc v Tru tng hóa D liu (Data Abstraction).
 nh ngha mt Lp (Class).
 nh ngha mt i tng (Object).
 Nhn thc đc s khác bit gia Lp và i tng.
 Nhn thc đc s cn thit đi vi Thit lp (Construction) và Hy
(Destruction).
 nh ngha tính Bn vng (Persistence).
 Hiu bit v tính Tha k (Inheritance).
 nh ngha tính a hình (Polymorphism).
 Lit kê nhng thun li ca phng pháp hng i tng.

1.1 Gii thiu v Lp trình hng i tng (Object-oriented Programming)

Lp trình hng i tng (OOP) là mt phng pháp thit k và phát trin phn mm.
Nhng ngôn ng OOP không ch bao gm cú pháp và mt trình biên dch (compiler) mà
còn có mt môi trng phát trin toàn din. Môi trng này bao gm mt th vin đc
thit k tt, thun li cho vic s dng các đi tng.

i vi mt ngôn ng lp trình h tr OOP thì vic trin khai k thut lp trình hng
đi tng s d dàng hn. K thut lp trình hng đi tng ci tin vic phát trin các
h thng phn mm. K thut y đ cao nhân t chc nng (fucntionality) và các mi


quan h d liu.

OOP là phng thc t duy mi đ gii quyt vn đ bng máy tính.  đt kt qu, lp
trình viên phi nn vn đ thành mt thc th quen thuc vi máy tính. Cách tip cn
hng đi tng cung cp mt gii pháp toàn vn đ gii quyt vn đ.

Hãy xem xét mt tình hung cn đc trin khai thành mt h thng trên máy vi tính:
vic mua bán xe hi. Vn đ vi tính hóa vic mua bán xe hi bao gm nhng gì?

Nhng yu t rõ ràng nht liên quan đn vic mua bán xe hi là:
1) Các kiu xe hi (model).
2) Nhân viên bán hàng.
3) Khách hàng.


Nhng hot đng liên quan đn vic mua bán:
1) Nhân viên bán hàng đa khách hàng tham quan phòng trng bày.
2) Khách hàng chn la mt xe hi.
3) Khách hàng đt hóa đn.
4) Khách hàng tr tin.
5) Chic xe đc trao cho khách hàng.

Mi vn đ đc chia ra thành nhiu yu t, đc gi là các i tng (Objects) hoc
các Thc th (Entities). Chng hn nh  ví d trên, khách hàng, xe hi và nhân viên bán
hàng là nhng đi tng hoc thc th.

Lp trình viên luôn luôn c gng to ra nhng kch bn (scenarios) tht quen thuc vi
nhng tình hung đi sng thc. Bc th nht trong đng hng này là làm cho máy
tính liên kt vi nhng đi tng th gii thc.


Tuy nhiên, máy tính ch là mt c máy. Nó ch thc hin nhng công vic đc lp trình
mà thôi. Vì th, trách nhim ca lp trình viên là cung cp cho máy tính nhng thông tin
theo cách thc mà nó cng nhn thc đc cùng nhng thc th nh chúng ta nhn thc.

ó chính là lãnh vc ca k thut hng đi tng. Chúng ta s dng k thut hng đi
tng đ ánh x nhng thc th chúng ta gp phi trong đi sng thc thành nhng thc
th tng t trong máy tính.

Phát trin phn mm theo k thut lp trình hng đi tng có kh nng gim thiu s
ln ln thng xy ra gia h thng và lãnh vc ng dng.

Lp trình hng đi tng đ cp đn d liu và th tc x lý d liu theo quan đim là
mt đi tng duy nht. Lp trình hng đi tng xem xét d liu nh là mt thc th
hay là mt đn v đc lp, vi bn cht riêng và nhng đc tính ca thc th y. Bây gi
chúng ta hãy kho sát nhng hn t ‘đi tng’ (object), ‘d liu’ (data) và ‘phng
thc’ (method).

Có nhiu loi đi tng khác nhau. Chúng ta có th xem các b phn khác nhau trong
mt c quan là các đi tng. in hình là mt c quan có nhng b phn liên quan đn
vic qun tr, đn vic kinh doanh, đn vic k toán, đn vic tip th … Mi b phn có
nhân s riêng, các nhân s đc trao cho nhng trách nhim rõ ràng. Mi b phn cng
có nhng d liu riêng chng hn nh thông tin cá nhân, bng kim kê, nhng th thc
kinh doanh, hoc bt k d liu nào liên quan đn chc nng ca b phn đó. Rõ ràng là
mt c quan đc chia thành nhiu b phn thì vic qun tr nhân s và nhng hot đng
doanh nghip d dàng hn. Nhân s ca c quan điu khin và x lý d liu liên quan
đn b phn ca mình.

Chng hn nh b phn k toán chu trách nhim v lng bng đi vi c quan. Nu
mt ngi  đn v tip th cn nhng chi tit liên quan đn lng bng ca đn v mình,
ngi y ch cn liên h vi b phn k toán. Mt ngi có thm quyn trong b phn k

toán s cung cp thông tin cn bit, nu nh thông tin y có th chia s đc. Mt ngi
không có thm quyn t mt b phn khác thì không th truy cp d liu, hoc không th
thay đi làm h hng d liu. Ví d này minh chng các đi tng là hu dng trong
vic phân cp và t chc d liu.

Hình 1.1 Minh ha cu trúc ca mt c quan đin hình.













Khái nim v đi tng có th đc m rng đn hu ht các lãnh vc đi sng, và hn
na, đn th gii lp trình. Bt k ng dng nào đu có th đc đnh ngha theo hn t
thc th hoc đi tng đ to ra tin trình x lý mô phng theo tin trình x lý mà con
ngi ngh ra.

Phng pháp gii quyt ‘top-down’ (t trên xung) cng còn đc gi là ‘lp trình hng
cu trúc’ (structured programming). Nó xác đnh nhng chc nng chính ca mt chng
trình và nhng chc nng này đc phân thành nhng đn v nh hn cho đn mc đ
thp nht. Bng k thut này, các chng trình đc cu trúc theo h thng phân cp các
module. Mi mt module có mt đu vào riêng và mt đu ra riêng. Trong mi module,
s điu khin có chiu hng đi xung theo cu trúc ch không có chiu hng đi lên.


Phng pháp OOP c gng qun lý vic tha k phc tp trong nhng vn đ đi thc.
 làm đc vic này, phng thc OOP che giu mt vài thông tin bên trong các đi
tng. OOP tp trung trc ht trên d liu. Ri gn kt các phng thc thao tác trên d
liu, vic này đc xem nh là phn tha k ca vic đnh ngha d liu. Bng 1.1 minh
ha s khác bit gia hai phng pháp:

Phng pháp Top-Down OOP
Chúng ta s xây dng mt khách sn. Chúng ta s xây dng mt tòa nhà 10 tng
vi nhng dãy phòng trung bình, sang
trng, và mt phòng hp ln.
Chúng ta s thit k các tng lu, các phòng
và phòng hp.
Chúng ta s xây dng mt khách sn vi
nhng thành phn trên.

Bng 1.1 Mt ví d v hai phng pháp gii quyt OOP và Structured


Phòng Nhân s Phòng K toán
Phòng Kinh doanh
Hình 1.1

1.2 Tru tng hóa d liu (Data Abstraction)

Khi mt lp trình viên phi phát trin mt chng trình ng dng thì không có ngha là
ngi y lp tc vit mã cho ng dng y. Trc ht, ngi y phi nghiên cu ng dng
và xác đnh nhng thành phn to nên ng dng. K tip, ngi y phi xác đnh nhng
thông tin cn thit v mi thành phn.


Hãy kho sát chng trình ng dng cho vic mua bán xe hi nói trên. Chng trình phi
xut hóa đn cho nhng xe hi đã bán cho khách hàng.  xut mt hóa đn, chúng ta
cn nhng thông tin chi tit v khách hàng. Vy bc th nht là xác đnh nhng đc tính
ca khách hàng.

Mt vài đc tính gn kt vi khách hàng là:

 Tên.
 a ch.
 Tui.
 Chiu cao.
 Màu tóc.

T danh sách k trên, chúng ta xác đnh nhng đc tính thit yu đi vi ng dng. Bi
vì chúng ta đang đ cp đn nhng khách hàng mua xe, vì th nhng chi tit thit yu là:

 Tên.
 a ch.

Còn nhng chi tit khác (chiu cao, màu tóc …) là không quan trng đi vi ng dng.
Tuy nhiên, nu chúng ta phát trin mt ng dng h tr cho vic điu tra ti phm thì
nhng thông tin chng hn nh màu tóc là thit yu.

Bên cnh nhng chi tit v khách hàng, nhng thông tin sau cng cn thit:

 Kiu xe đc bán.
 Nhân viên nào bán xe.

Bên cnh nhng đc tính ca khách hàng, xe hi và nhân viên bán hàng, chúng ta cng
cn lit kê nhng hành đng đc thc hin.


Công vic xut hóa đn đòi hi nhng hành đng sau:

 Nhp tên ca khách hàng.
 Nhp đa ch ca khách hàng.
 Nhp kiu xe.
 Nhp tên ca nhân viên bán xe.
 Xut hóa đn vi đnh dng đòi hi.

Khung thông tin bên di cho thy nhng thuc tính và nhng hành đng liên quan đn
mt hóa đn:

Các thuc tính
Tên ca khách hàng
a ch ca khách hàng
Kiu xe bán
Nhân viên bán xe

Các hành đng
Nhp tên
Nhp đa ch
Nhp kiu xe
Nhp tên nhân viên bán xe
Xut hóa đn









Tip theo, chúng ta mun ng dng tính toán tin hoa hng cho nhân viên bán hàng.

Nhng thuc tính liên kt vi nhân viên bán hàng có tng quan vi ng dng này là:

 Tên.
 S lng xe bán đc.
 Tin hoa hng.

Nhng hành đng đòi buc đi vi công vic này là:

 Nhp tên nhân viên bán xe.
 Nhp s lng xe bán đc.
 Tính tin hoa hng kim đc.

Nhng thuc tính
Tên
S lng xe bán đc
Tin hoa hng

Nhng hành đng
Nhp tên
Nhp s lng xe bán đc
nh ngha

S tru tng hóa d liu là tin trình xác đnh và nhóm các thuc tính và các hành
đng liên quan đn mt thc th đc thù, xét trong mi tng quan vi ng dng đang
phát trin.
Tính tin hoa hng

Nh th, vic tru tng hóa d liu tra đt ra câu hi ‘âu là nhng thuc tính và nhng
hành đng cn thit cho mt vn đ đt ra?’

1.2.1 Nhng thun li ca vic Tru tng hóa

Nhng thun li ca vic Tru tng hóa là:

 Tp trung vào vn đ.
 Xác đnh nhng đc tính thit yu và nhng hành đng đòi hi.
 Gim thiu nhng chi tit không cn thit.

Vic tru tng hóa d liu là cn thit, bi vì không th mô phng tt c các hành đng
và các thuc tính ca mt thc th. Vn đ mu cht là tp trung đn nhng hành vi ct
yu và áp dng chúng trong ng dng.

Chng hn nh khách hàng hoc nhân viên bán hàng cng có th thc hin nhng hành
đng sau:

 Ngi y đi li.
 Ngi y nói chuyn.

Tuy nhiên, nhng hành đng này không liên quan đn ng dng. Vic tru tng hóa d
liu s loi b chúng.

1.3 Lp (Class)

Trong ng dng mua bán xe, chúng ta đã xác đnh các thuc tính và các hành đng cn
có đ xut mt hóa đn cho mt khách hàng.

Các hành đng và các thuc tính này là chung cho mi khách hàng mua xe. Ví th, chúng

có th đc nhóm li trong mt thc th đn nht gi là mt ‘lp’.

Hãy kho sát lp có tên là ‘khách hàng’ di đây. Lp này bao gm mi thuc tính và
hành đng đòi hi đi vi mt khách hàng.

Lp Khách hàng
Tên khách hàng
a ch khách hàng
Kiu xe đc bán
Nhân viên bán xe
Nhp tên
Nhp đa ch
Nhp kiu xe đc bán
Nhp tên nhân viên bán xe
Xut hóa đn












Mt lp là mt mô hình khái nim v mt thc th. Nó mang tính cách tng quát ch
không mang tính cách đc thù.


Khi đnh ngha mt lp, chúng ta mun phát biu rng mt lp s phi có mt tp hp
các thuc tính và các hành đng riêng. Chng hn nh mt đnh ngha lp di đây:

Lp Con ngi
Tên
Chiu cao
Màu tóc
Vit
Nói

Lp này đnh ngha thc th ‘Con ngi’. Mi thc th thuc kiu ‘Con ngi’ s đu có
nhng đc tính và nhng hành đng nh đã đc đnh ngha.

Mt khi mt lp đã đc đnh ngha, chúng ta bit đc nhng thuc tính và nhng hành
đng ca nhng thc th ‘trông ging’ nh lp này. Vì th, t bn cht mt lp là mt
nguyên mu (prototype).

Mt ví d khác v mt lp liên quan đn vic mua bán xe hi nh sau:

Lp Nhân viên bán hàng
Tên
S lng xe bán đc
Tin hoa hng
Nhp tên
Nhp s lng xe bán đc
Tính tin hoa hng

Lp trên đnh ngha các thuc tính và các hành đng đc trng cho mi nhân viên bán xe
hi.



nh ngha

Mt lp đnh ngha mt thc th theo nhng thuc tính và nhng hành đng chung.
Hoc
Nhng thuc tính và nhng hành đng chung ca mt thc th đc nhóm li đ to nên
mt đn v duy nht gi là mt lp.
Hoc
Mt lp là mt s xác đnh cp chng loi ca các thc th ging nhau.
1.4 i tng (Object)

Mt lp là mt nguyên mu phác ha nhng thuc tính và nhng hành đng kh th ca
mt thc th.  có th s dng thc th mà lp đnh ngha, chúng ta phi to mt ‘đi
tng’ t lp đó.

Lp là mt khái nim, còn đi tng là mt mu thc đc đnh ngha bi lp.

Hãy kho sát lp ‘Khách hàng’ đc đnh ngha trên. Lp này đnh ngha mi thuc tính
và hành đng gn lin vi mt khách hàng.

Khi mt ngi mua mt xe hi  mt ca hàng, ca hàng y có mt khách hàng mi.
Vào thi đim y, mt đi tng ging nh lp ‘Khách hàng’ đc to ra. i tng này
s phi có nhng giá tr thc đi vi các thuc tính ‘Tên’, ‘a ch’, ‘Kiu xe’ …

Chng hn nh mt khách hàng có tên là ‘Mark’, sng  ‘London’ đã mua mt xe kiu
‘Honda Civic’ t nhân viên bán hàng tên là ‘Tom’. Nh th, ‘Mark’ là mt đi tng ca
kiu ‘Khách hàng’.







Mt đi tng là mt thc th c th (thông thng bn có th s chm, xem thy và cm
nhn).

K t lúc mt đi tng hin hu, nhng thuc tính ca nó là nhng giá tr xác đnh, và
nhng hành đng đc đnh ngha cho đi tng này đc thc thi.

Trong mi mt đi tng, các khía cnh sau đây đc xác đnh rõ:

 Tình trng (state).
 Thái đ (behavior).
 Chân tính (identity).

nh ngha

Mt đi tng là mt trng hp ca mt lp.
Hình 1.2 trình bày hai đi tng đi thc.

















Mi đi tng có nhng đc tính riêng mô t đi tng y là gì, hoc hành đng ra sao.

Chng hn nh nhng thuc tính ca mt đi tng ‘Con ngi’ s là:

 Tên.
 Tui.
 Trng lng.

Nhng thuc tính ca mt đi tng ‘Xe hi’ s là:

 Màu sc.
 Kiu xe.
 Nm.

Mt đi tng cng thc hin mt s hành đng. Mt xe hi có kh nng thc hin
nhng hành đng sau:

 Khi đng.
 Ngng.
 Chuyn đng.

 chuyn đi gia các đi tng lp trình và các đi tng đi thc, cn phi kt hp
các thuc tính và các hành đng ca mt đi tng.







Con ngi
Tên: Jack
Tui: 28
Trng lng: 65 kgs

Hành đng:
i
Nói
Suy ngh
Xe hi
Kiu: Ferrari
Màu: 
Nm: 1995

Hành đng:
Khi đng
Ngng
Chuyn đng
Hình 1.2: Mt đi tng Con ngi và mt đi tng Xe hi

×