Chương 6. Lp trình hướng đối tượng
Chương này gii thiu nhng khái nim cơ bn trong lp trình hướng đối
tượng. Các khái nim cơ bn như lp, đối tượng, thuc tính, phương thc,
thông đip, và quan h ca chúng s được tho lun trong phn này. Thêm
vào đó là s trình bày ca nhng đặc đim quan trng trong lp trình hướng
đối tượng như tính bao gói, tính tha kế, tính đa hình,.. nhm giúp người hc
có cái nhìn tng quát v lp trình hướng đối tượng.
6.1. Gii thiu
Hướng đối tượng (object orientation) cung cp mt kiu mi để xây dng
phn mm. Trong kiu mi này, các đối tượng (object) và các lp (class) là
nhng khi xây dng trong khi các phương thc (method), thông đip
(message), và s tha kế (inheritance) cung cp các cơ chế ch yếu.
Lp trình hướng đối tượng (OOP- Object-Oriented Programming) là
mt cách tư duy mi, tiếp cn hướng đối tượng để gii quyết vn đề bng
máy tính. Thut ng OOP ngày càng tr nên thông dng trong lĩnh vc công
ngh thông tin.
Khái nim 6.1
Lp trình hướng đối tượng (OOP) là mt phương pháp thiết kế và phát
trin phn mm da trên kiến trúc lp và đối tượng.
Nếu bn chưa bao gi s dng mt ngôn ng OOP thì trước tiên bn nên
nm vng các khái nim ca OOP hơn là viết các chương trình. Bn cn hiu
được đối tượng (object) là gì, lp (class) là gì, chúng có quan h vi nhau như
thế nào, và làm thế nào để các đối tượng trao đổi thông đip (message) vi
nhau, vâng vâng.
OOP là tp hp các k thut quan trng mà có th dùng để làm cho vic
trin khai chương trình hiu qu hơn. Quá trình tiến hóa ca OOP như sau:
Lp trình tuyến tính
Lp trình có cu trúc
S tru tượng hóa d liu
Lp trình hướng đối tượng
Chương 6: Lp trình hướng đối tượng
7 6
6.2. Tru tượng hóa (Abstraction)
Tru tượng hóa là mt k thut ch trình bày nhng các đặc đim cn thiết
ca vn đề mà không trình bày nhng chi tiết c th hay nhng li gii thích
phc tp ca vn đề đó. Hay nói khác hơn nó là mt k thut tp trung vào
th cn thiết và pht l đi nhng th không cn thiết.
Ví d nhng thông tin sau đây là các đặc tính gn kết vi con người:
Tên
Tui
Địa ch
Chiu cao
Màu tóc
Gi s ta cn phát trin ng dng khách hàng mua sm hàng hóa thì
nhng chi tiết thiết yếu là tên, địa ch còn nhng chi tiết khác (tui, chiu cao,
màu tóc, ..) là không quan trng đối vi ng dng. Tuy nhiên, nếu chúng ta
phát trin mt ng dng h tr cho vic điu tra ti phm thì nhng thông tin
như chiu cao và màu tóc là thiết yếu.
S tru tượng hóa đã không ngng phát trin trong các ngôn ng lp
trình, nhưng ch mc d liu và th tc. Trong OOP, vic này được nâng
lên mc cao hơn – mc đối tượng. S tru tượng hóa được phân thành s
tru tượng hóa d liu và tru tượng hóa chương trình.
Khái nim 6.2
Tru tượng hóa d liu (data abstraction) là tiến 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ù trong ng dng đang phát trin.
Tru tượng hóa chương trình (program abstraction) là mt s tru
tượng hóa d liu mà làm cho các dch v thay đổi theo d liu.
6.3. Đối tượng (object)
Các đối tượng là chìa khóa để hiu được k thut hướng đối tượng. Bn có
th nhìn xung quanh và thy được nhiu đối tượng trong thế gii thc như:
con chó, cái bàn, quyn v, cây viết, tivi, xe hơi ...Trong mt h thng hướng
đối tượng, mi th đều là đối tượng. Mt bng tính, mt ô trong bng tính,
mt biu đồ, mt bng báo cáo, mt con s hay mt s đin thoi, mt tp tin,
mt thư mc, mt máy in, mt câu hoc mt t, thm chí mt ký t, tt c
chúng là nhng ví d ca mt đối tượng. Rõ ràng chúng ta viết mt chương
trình hướng đối tượng cũng có nghĩa là chúng ta đang xây dng mt mô hình
Chương 6: Lp trình hướng đối tượng
7 7
ca mt vài b phn trong thế gii thc. Tuy nhiên các đối tượng này có th
được biu din hay mô hình trên máy tính.
Mt đối tượng thế gii thc là mt thc th c th mà thông thường bn
có th s, nhìn thy hay cm nhn được. Tt c các đối tượng trong thế gii
thc đều có trng thái (state) và hành động (behaviour). Ví d:
Trng thái Hành động
Con chó
Tên
Màu
Ging
Vui sướng
Sa
Vy tai
Chy
Ăn
Xe đạp
Bánh răng
Bàn đạp
Dây xích
Bánh xe
Tăng tc
Gim tc
Chuyn
bánh răng
Các đối tượng phn mm (software object) có th được dùng để biu
din các đối tượng thế gii thc. Chúng được mô hình sau khi các đối tượng
thế gii thc có c trng thái và hành động. Ging như các đối tượng thế gii
thc, các đối tượng phn mm cũng có th có trng thái và hành động. Mt
đối tượng phn mm có biến (variable) hay trng thái (state) mà thường được
gi là thuc tính (attribute; property) để duy trì trng thái ca nó và phương
thc (method) để thc hin các hành động ca nó. Thuc tính là mt hng
mc d liu được đặt tên bi mt định danh (identifier) trong khi phương
thc là mt chc năng được kết hp vi đối tượng cha nó.
OOP thường s dng hai thut ng mà sau này Java cũng s dng là
thuc tính (attribute) và phương thc (method) để đặc t tương ng cho trng
thái (state) hay biến (variable) và hành động (behavior). Tuy nhiên C++ li s
dng hai thut ng d liu thành viên (member data) và hàm thành viên
(member function) thay cho các thut ng này.
Xét mt cách đặc bit, ch mt đối tượng riêng r thì chính nó không hu
dng. Mt chương trình hướng đối tượng thường gm có hai hay nhiu hơn
các đối tượng phn mm tương tác ln nhau như là s tương tác ca các đối
tượng trong trong thế gii thc.
Khái nim 6.3
Đối tượng (object) là mt thc th phn mm bao bc các thuc tính
và các phương thc liên quan.
K t đây, trong giáo trình này chúng ta s dng thut ng đối tượng (object)
để ch mt đối tượng phn mm. Hình 6.1 là mt minh ha ca mt đối tượng
phn mm:
Chương 6: Lp trình hướng đối tượng
7 8
Hình 6.1 Mt đối tượng phn mm
Mi thđối tượng phn mm biết (trng thái) và có th làm (hành
động) được th hin qua các thuc tính và các phương thc. Mt đối tượng
phn mm mô phng cho chiếc xe đạp s có các thuc tính để xác định các
trng thái ca chiếc xe đạp như: tc độ ca nó là 10 km trên gi, nhp bàn đạp
là 90 vòng trên phút, và bánh răng hin ti là bánh răng th 5. Các thuc tính
này thông thường được xem như thuc tính th hin (instance attribute) bi
vì chúng cha đựng các trng thái cho mt đối tượng xe đạp c th. Trong k
thut hướng đối tượng thì mt đối tượng c th được gi là mt th hin
(instance).
Khái nim 6.4
Mt đối tượng c th được gi là mt th hin (instance).
Hình 6.2 minh ha mt xe đạp được mô hình như mt đối tượng phn mm:
Hình 6.2 Đối tượng phn mm xe đạp
Đối tượng xe đạp phn mm cũng có các phương thc để thng li, tăng
nhp đạp hay là chuyn đổi bánh răng. Nó không có phương thc để thay đổi
tc độ vì tc độ ca xe đạp có th tình ra t hai yếu t s vòng quay và bánh
răng hin ti. Nhng phương thc này thông thường được biết như là các
phương thước th hin (instance method) bi vì chúng tác động hay thay
đổi trng thái ca mt đối tượng c th.
Chương 6: Lp trình hướng đối tượng
7 9
6.4. Lp (Class)
Trong thế gii thc thông thường có nhiu loi đối tượng cùng loi. Chng
hn chiếc xe đạp ca bn ch là mt trong hàng t chiếc xe đạp trên thế gii.
Tương t, trong mt chương trình hướng đối tượng có th có nhiu đối tượng
cùng loi và chia s nhng đặc đim chung. S dng thut ng hướng đối
tượng, chúng ta có th nói rng chiếc xe đạp ca bn là mt th hin ca lp
xe đạp. Các xe đạp có mt vài trng thái chung (bánh răng hin ti, s vòng
quay hin ti, hai bánh xe) và các hành động (chuyn bánh răng, gim tc).
Tuy nhiên, trng thái ca mi xe đạp là độc lp và có th khác vi các trng
thái ca các xe đạp khác. Trước khi to ra các xe đạp, các nhà sn xut
thường thiết lp mt bng thiết kế (blueprint) mô t các đặc đim và các yếu
t cơ bn ca xe đạp. Sau đó hàng lot xe đạp s được to ra t bn thiết kế
này. Không hiu qu nếu như to ra mt bn thiết kế mi cho mi xe đạp
được sn xut.
Trong phn mm hướng đối tượng cũng có th có nhiu đối tượng cùng
loi chia s nhng đặc đim chung như là: các hình ch nht, các mu tin
nhân viên, các đon phim, … Ging như là các nhà sn xut xe đạp, bn có
th to ra mt bng thiết kế cho các đối tượng này. Mt bng thiết kế phn
mm cho các đối tượng được gi là lp (class).
Khái nim 6.5
Lp (class) là mt thiết kế (blueprint) hay mt mu ban
đầu (prototype) định nghĩa các thuc tính và các phương
thc chung cho tt c các đối tượng ca cùng mt loi
nào đó.
Mt đối tượng là mt th hin c th ca mt lp.
Tr li ví d v xe đạp chúng ta thy rng mt lp Xedap là mt bng thiết kế
cho hàng lot các đối tượng xe đạp được to ra. Mi đối tượng xe đạp là mt
th hin ca lp Xedap và trng thái ca nó có th khác vi các đối tượng xe
đạp khác. Ví d mt xe đạp hin ti có th bánh răng th 5 trong khi mt
chiếc khác có th bánh răng th 3.
Lp Xedap s khai báo các thuc tính th hin cn thiết để cha đựng
bánh răng hin ti, s vòng quay hin ti, .. cho mi đối tượng xe đạp. Lp
Xedap cũng khai báo và cung cp nhng thi công cho các phương thc th
hin để cho phép người đi xe đạp chuyn đổi bánh răng, phanh li, chuyn
đổi s vòng quay, .. như Hình 6.3.
Chương 6: Lp trình hướng đối tượng
8 0