2 Nhân viên bán hàng... th c’ method... Nhân viên nào bán xe... Nó mang tính cách t ng quát ch không mang tính cách đ c thù... Tuy nhiên chúng ta không bi t thu c tính nào qua đó chúng t
Trang 11.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
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
Trang 2Nh 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
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
Trang 3khô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
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:
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
Trang 41.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
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
Trang 5Khung 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
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
Trang 6Gi 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
Trang 7M 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 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
Trang 8s 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õ:
Trang 9Hì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à:
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
Trang 10đ c t o t l p ‘Khách hàng’
Nh th , các thu c tính n m gi các giá tr d li u trong m t đ i t ng, chúng đ nh ngh a
m t đ i t ng đ c thù
B i vì m t l p là m t nguyên m u cho nên các thu c tính trong m t l p không th n m
gi các giá tr M t thu c tính có th đ c gán m t giá tr ch sau khi m t đ i t ng d a trên l p y đ c t o ra
Trang 11ph ng th c là s th c thi th c t m t ho t đ ng, cho nên nó có th đ c áp d ng cho
m t đ i t ng M t ph ng th c là m t thu t toán t ng b c (step-by-step) xác đ nh đi u
gì đ c th c hi n khi ho t đ ng y đ c yêu c u
Hãy kh o sát nh ng ho t đ ng chung c a m t th c th thu c lo i ‘Con ng i’: i, Nói
Ch khi m t đ i t ng c th c a lo i ‘Con ng i’ đ c t o ra thì các hành đ ng ‘ i’,
‘Nói’ m i đ c th c thi
1.4.4 Thông đi p (Message)
yêu c u m t ho t đ ng c th nào đó đ c th c hi n, m t thông đi p đ c g i t i đ i
t ng, thông đi p này đ nh ngh a ho t đ ng
nh ngh a
M t ho t đ ng là m t d ch v đ c đòi h i c a m t đ i t ng
nh ngh a
Ph ng th c là m t s xác đ nh v cách th c m t ho t đ ng đ c yêu c u đ c th c thi
nh ngh a
M t thông đi p là m t l i yêu c u m t ho t đ ng
Trang 12Khi m t đ i t ng nh n đ c m t thông đi p, nó th c hi n m t ph ng th c t ng ng
Ch ng h n, m t đ i t ng đ c t o t l p ‘Khách hàng’ đ nh p tên c a ng i s d ng Khi đ i t ng nh n đ c thông đi p, nó tìm và th c thi ph ng th c ‘Nh p tên’
Trong tr ng h p m t công ty, m i b ph n đ c coi là m t đ i t ng Nh ng thông tin
đ c chuy n t i và đ c đón nh n t m i b ph n (ho c qua thông báo liên b ph n,
ho c qua nh ng ch th mi ng) t o nên nh ng thông đi p gi a các đ i t ng Nh ng ch
th này có th đ c chuy n d ch thành nh ng l i g i hàm trong m t ch ng trình
Trong hình 1.3, ‘Kinh doanh’ và ‘K toán’ là hai b ph n khác nhau trong m t công ty Hai b ph n này đ c coi là hai đ i t ng khác nhau Thông tin đ c truy n đi và đ c đón nh n gi a các b ph n t o nên các thông đi p gi a các đ i t ng
Trang 131.6 Thi t l p (Construction) và H y (Destruction)
c a đ i t ng s n sàng đ s d ng
nh ngh a
Thi t l p là m t ti n trình hi n th c hóa m t đ i t ng
Hàm thi t l p là m t ph ng th c đ c bi t ph i đ c g i tr c khi s d ng b t k
ph ng th c nào trong m t l p Hàm Thi t l p kh i t o các thu c tính, và c p phát b
nh trong máy tính khi c n thi t
Trang 14T ng t nh tr ng h p m t h c sinh nh p h c t i m t tr ng h c Khi m t h c sinh
nh p h c, m t vài hành đ ng đ c th c hi n đ nh n h c sinh y vào tr ng ó là:
Khi m t đ i t ng không còn c n thi t n a thì nó s b h y b
S lãng phí tài nguyên, ch ng h n nh b nh , n u nh ti p t c đ cho m t đ i t ng t n
t i m t khi nó không còn c n thi t
M t khi m t đ i t ng b h y thì các thu c tính c a nó không th đ c truy c p, c ng
nh không m t ph ng th c nào có th đ c th c thi
Ch ng h n, trong tr ng h p bán xe h i, m t khi nhân viên bán hàng b ngh , nh ng chi
ti t c a ng i y không còn liên h Vì th , đ i t ng t ng ng s b h y i u này gi i phóng b nh đã c p phát cho nhân viên bán hàng y Kho ng tr ng này gi đây có th
đ c tái s d ng
Hãy xem xét ví d v tr ng h c trên đây Khi m t h c sinh thôi h c, tên c a h c sinh y
b lo i ra kh i danh sách, và kho ng tr ng đ c gi i phóng có th đ c tái c p phát Các hành đ ng đ ng lo t này t ng t v i công vi c c a hàm h y đ i v i m t đ i t ng
y
Trang 15C a hàng bán xe l u tr chi ti t khách hàng vào m t file Nh ng chi ti t này s t n t i trong file cho đ n khi chúng b h y, ho c b n thân file b h y
Chúng ta đ ng ch m tính b n v ng m i ngày Hãy xem vi c sáng tác m t bài th Bài th
là d li u t n t i trong tâm trí c a nhà th Bao lâu nhà th còn t n t i thì b y lâu bài th còn t n t i N u bài th mu n t n t i ngay c sau khi nhà th qua đ i thì nó ph i đ c
vi t ra gi y
Bài th đ c vi t ra gi y t o nên s b n v ng Bài th s t n t i bao lâu v n b n y còn
đ c duy trì Bài th y không còn t n t i khi t gi y y b xé rách, ho c ch ngh a b xóa đi
đ n Gi s r ng khi hóa đ n đ c xu t, m t trong nh ng chi ti t đ c in ra trên hóa đ n
là ngày phân ph i Tuy nhiên chúng ta không bi t thu c tính nào qua đó chúng ta có th xác đ nh thông tin này
Ngày phân ph i đ c phát sinh bên trong đ i t ng, và đ c hi n th trên hóa đ n Nh
th ng i s d ng không nh n th c v cách th c mà ngày phân ph i đ c hi n th
Ngày phân ph i có th đ c x lý theo m t trong nh ng cách sau:
ó là m t giá tr đ c tính toán - Ch ng h n, 15 ngày k t ngày đ t hàng
ó là m t giá tr c đ nh – Xe h i đ c phân ph i vào ngày mùng 2 m i tháng
i t ng s d ng nh ng thu c tính và nh ng ph ng th c mang tính n i b B i vì
nh ng thu c tính và nh ng ph ng th c có th đ c che khu t kh i t m nhìn Các đ i
t ng khác và nh ng ng i s d ng không nh n th c đ c các thu c tính và / ho c các
ph ng th c nh th có t n t i hay không Ti n trình che gi u các thu c tính, các ph ng
th c, ho c các chi ti t c a vi c thi hành đ c g i là ‘đóng gói’ (encapsulation)
nh ngh a
Tính B n v ng là kh n ng l u tr d li u c a m t đ i t ng ngay c khi đ i t ng
y không còn t n t i
Trang 16Vi c đóng gói phân tách nh ng khía c nh có th truy c p t bên ngoài v i nh ng khía
c nh ch đ c s d ng trong n i b c a đ i t ng
i m thu n l i c a vi c đóng gói là có th t o ra b t k thu c tính hay ph ng th c c n thi t đ đáp ng đòi h i công vi c khi xây d ng m t l p M t khác, ch nh ng thu c tính
và / ho c nh ng ph ng th c có th đ c truy c p t bên ngoài l p là trông th y
M t ví d khác v vi c đóng gói là l p ‘Nhân viên bán hàng’ đã đ c đ nh ngh a trên Khi ph ng th c tính ti n hoa h ng đ c th c thi, ng i s d ng không bi t chi ti t c a
vi c tính toán T t c nh ng gì h bi t ch là t ng s ti n hoa h ng mà h ph i tr cho nhân viên bán hàng
M t tr ng h p v đóng gói mà chúng ta g p trong đ i s ng h ng ngày là vi c giao d ch kinh doanh m t c a hàng Khách hàng yêu c u s n ph m X H đ c trao cho s n
ph m X, và h ph i tr ti n cho s n ph m y Sau khi khách hàng yêu c u s n ph m,
ng i bán hàng th c hi n nh ng hành đ ng sau:
Ki m tra m t hàng trên k hàng
Gi m s l ng m t hàng trong b ng ki m kê sau khi bán
Tuy nhiên, khách hàng không đ c bi t nh ng chi ti t này
1.9 Tính th a k
Hãy kh o sát các l p sau:
Tên Tên Tên
Trang 17Ba l p ‘Sinh viên’, ‘Nhân viên’ và ‘Khách hàng’ t o nên l p ‘Ng i’ Nói cách khác, ba
l p y có t t c các thu c tính và các ph ng th c c a l p ‘Ng i’, ngoài ra chúng còn
có nh ng thu c tính và nh ng ph ng th c riêng
Chúng ta c n ph i đ nh ngh a l p ‘Ng i’ và s d ng nó trong khi đ nh ngh a các l p
‘Sinh viên’, ‘Nhân viên’ và ‘Khách hàng’
Chúng ta xây d ng m t l p ‘Ng i’ v i nh ng thu c tính và nh ng ho t đ ng nh đã trình bày hình trên K ti p, chúng ta xây d ng l p ‘Khách hàng’ bao g m l p ‘Ng i’
c ng v i nh ng thu c tính và nh ng ph ng th c riêng
Chúng ta có th đ nh ngh a các l p ‘Sinh viên’ và ‘Nhân viên’ theo cùng cách th c trên
Nh th , c ba l p ‘Khách hàng’, ‘Sinh viên’ và ‘Nhân viên’ đ u chia s nh ng thu c tính và nh ng ph ng th c mà l p ‘Ng i’ cung c p
Theo ngôn ng h ng đ i t ng, l p ‘Khách hàng’ đ c g i là th a k l p ‘Ng i’
Có hai khái ni m quan tr ng khác liên k t v i tính th a k L p ‘Khách hàng’ là l p
‘Ng i’ c ng thêm cái khác Nh th , l p ‘Khách hàng’ có t t c các thu c tính và các
ph ng th c đ c đ nh ngh a trong l p ‘Ng i’ c ng v i các thu c tính và các ho t đ ng
Trang 18Trong ví d trên, l p ‘Ng i’ đ c coi là ‘l p trên’ (superclass)
Hãy xem xét ví d v l p ‘Các đ ng v t’ hình 1.4 ‘Các đ ng v t’ là l p trên cùng mà các l p khác k th a Chúng ta có m t dãy các l p trung gian – ‘Côn trùng’, ‘H u nh ’,
‘Bò sát’, ‘L ng c ’ - mà dãy các l p d i k th a
Các l p ‘Côn trùng’, ‘H u nh ’, ‘Bò sát’, ‘L ng c ’ là nh ng l p con c a l p trên ‘Các
đ ng v t’ Nh th , nh ng l p này có t t c nh ng thu c tính và các ho t đ ng c a l p
‘Các đ ng v t’, c ng thêm nh ng thu c tính và nh ng ph ng th c c a riêng chúng
L p ‘H u nh ’ là l p mà các l p ‘Con ng i’ và ‘Khác con ng i’ th a k Nh th , các
l p ‘Con ng i’ và ‘Khác con ng i’ là các l p con c a l p trên ‘H u nh ’
1.9.1 Tính a Th a k
Trong t t c các ví d trên, m t l p th a k ch t m t l p Ngay c trong ví d th a k
v các lo i ph ng ti n di chuy n, m i l p con ch có m t l p cha Tr ng h p nh th