"we view the world in objects", and how such an approach may further our understanding of object-oriented formalisation.. [s a ử ] Các phê phán.[r]
Trang 1có th b thay th ho c xóa đi b t c lúc ể ị ế ặ ấ ứ
nào.
M c l c ụ ụ
[xem]
L p trình h ậ ướ ng đ i t ố ượ (g i t t là ng ọ ắ OOP, t ch ừ ữAnh ngữ object-oriented
programming), hay còn g i là ọ l p trình đ nh h ậ ị ướ ng đ i t ố ượ , là kĩ thu t l p trình ng ậ ậ
h tr công ngh đ i tỗ ợ ệ ố ượng OOP được xem là giúp tăng năng su t, đ n gi n hóa đấ ơ ả ộ
ph c t p khi b o trì cũng nh m r ng ph n m m b ng cách cho phép ứ ạ ả ư ở ộ ầ ề ằ l p trình viênậ
t p trung vào các đ i tậ ố ượng ph n m m b c cao h n Ngoài ra, nhi u ngầ ề ở ậ ơ ề ười còn cho
r ng OOP d ti p thu h n cho nh ng ngằ ễ ế ơ ữ ười m i h c v ớ ọ ềl p trìnhậ h n là các phơ ươ ng pháp trước đó
M t cách gi n lộ ả ược, đây là khái ni m và là m t n l c nh m gi m nh các thao tácệ ộ ỗ ự ằ ả ẹ
vi t mã cho ngế ườ ậi l p trình, cho phép h t o ra các ọ ạ ứng d ngụ mà các y u t bên ngoàiế ố
có th tể ương tác v i các chớ ương trình đó gi ng nh là tố ư ương tác v i các đ i tớ ố ượng v tậ lý
Nh ng đ i tữ ố ượng trong m t ngôn ng OOP là các k t h p gi a mã và d li u màộ ữ ế ợ ữ ữ ệ chúng được nhìn nh n nh là m t đ n v duy nh t M i đ i tậ ư ộ ơ ị ấ ỗ ố ượng có m t tên riêngộ
bi t và t t c các tham chi u đ n đ i tệ ấ ả ế ế ố ượng đó được ti n hành qua tên c a nó Nhế ủ ư
v y, m i đ i tậ ỗ ố ượng có kh năng nh n vào các thông báo, x lý d li u (bên trong c aả ậ ử ữ ệ ủ nó), và g i ra hay tr l i đ n các đ i tử ả ờ ế ố ượng khác hay đ n môi trế ường
[ s a ử ] Các tính ch t c b n ấ ơ ả
• Đ i tố ượ (object): Các d li u và ch th đng ữ ệ ỉ ị ược k t h p vào m t đ n v đ yế ợ ộ ơ ị ầ
đ t o nên m t đ i tủ ạ ộ ố ượng Đ n v này tơ ị ương đương v i m t chớ ộ ương trình con
và vì th các đ i tế ố ượng s đẽ ược chia thành hai b ph n chính: ph n cácộ ậ ầ
ph ươ ng th cứ (method) và ph n các ầ thu c tính ộ (attribute) Trong th c t , cácự ế
ph ươ ng th c ứ c a đ i tủ ố ượng là các hàm và các thu c tính ộ c a nó là các bi n,ủ ế các tham s hay h ng n i t i c a m t đ i tố ằ ộ ạ ủ ộ ố ượng (hay nói cách khác t p h p cácậ ợ
d li u n i t i t o thành thu c tính c a đ i tữ ệ ộ ạ ạ ộ ủ ố ượng) Các ph ươ ng th c ứ là
phương ti n đ s d ng m t đ i tệ ể ử ụ ộ ố ượng trong khi các thu c tính ộ s mô t đ iẽ ả ố
tượng có nh ng tính ch t gì.ữ ấ
Các phương th c và các thu c tính thứ ộ ường g n ch t v i th c t các đ c tính vàắ ặ ớ ự ế ặ
s d ng c a m t đ i tử ụ ủ ộ ố ượng
Trong th c t , các đ i tự ế ố ượng thường được tr u từ ượng hóa qua vi c đ nh nghĩaệ ị
c a các ủ l pớ (class).
T p h p các giá tr hi n có c a các thu c tính t o nên ậ ợ ị ệ ủ ộ ạ tr ng thái ạ c a m t đ iủ ộ ố
tượng
M i ỗ ph ươ ng th c ứ hay m i d li u n i t i cùng v i các tính ch t đỗ ữ ệ ộ ạ ớ ấ ược đ nhị nghĩa (b i ngở ườ ậi l p trình) được xem là m t ộ đ c tính ặ riêng c a đ i tủ ố ượng
Trang 2N u không có gì l m l n thì t p h p các đ c tính này g i chung là đ c tính c aế ầ ẫ ậ ợ ặ ọ ặ ủ
đ i tố ượng
L p trình hậ ướng đ i tố ượng là m t phộ ương pháp l p trình có các tính ch t chính sau:ậ ấ
• Tính tr u từ ượ (abstraction): Đây là kh năng c a chng ả ủ ương trình b qua hayỏ không chú ý đ n m t s khía c nh c a thông tin mà nó đang tr c ti p làm vi cế ộ ố ạ ủ ự ế ệ lên, nghĩa là nó có kh năng t p trung vào nh ng c t lõi c n thi t M i đ iả ậ ữ ố ầ ế ỗ ố
tượng ph c v nh là m t "đ ng t " có th hoàn t t các công vi c m t cáchụ ụ ư ộ ộ ử ể ấ ệ ộ
n i b , báo cáo, thay đ i tr ng thái c a nó và liên l c v i các đ i tộ ộ ổ ạ ủ ạ ớ ố ượng khác
mà không c n cho bi t làm cách nào đ i tầ ế ố ượng ti n hành đế ược các thao tác Tính ch t này thấ ường được g i là ọ s tr u t ự ừ ượ ng c a d li u ủ ữ ệ
Tính tr u từ ượng còn th hi n qua vi c m t đ i tể ệ ệ ộ ố ượng ban đ u có th có m tầ ể ộ
s đ c đi m chung cho nhi u đ i tố ặ ể ề ố ượng khác nh là s m r ng c a nó nh ngư ự ở ộ ủ ư
b n thân đ i tả ố ượng ban đ u này có th không có các bi n pháp thi hành Tínhầ ể ệ
tr u từ ượng này thường được xác đ nh trong khái ni m g i là ị ệ ọ l p tr u t ớ ừ ượ ng hay l p c s tr u t ớ ơ ở ừ ượ ng
• Tính đóng gói (encapsulation) và che gi u thông tinấ (information hiding): Tính
ch t này không cho phép ngấ ườ ử ụi s d ng các đ i tố ượng thay đ i tr ng thái n iổ ạ ộ
t i c a m t đ i tạ ủ ộ ố ượng Ch có các phỉ ương th c n i t i c a đ i tứ ộ ạ ủ ố ượng cho phép thay đ i tr ng thái c a nó Vi c cho phép môi trổ ạ ủ ệ ường bên ngoài tác đ ng lên cácộ
d li u n i t i c a m t đ i tữ ệ ộ ạ ủ ộ ố ượng theo cách nào là hoàn toàn tùy thu c vàoộ
người vi t mã Đây là tính ch t đ m b o s toàn v n c a đ i tế ấ ả ả ự ẹ ủ ố ượng
• Tính đa hình (polymorphism): Th hi n thông qua vi c g i các ể ệ ệ ử thông đi p ệ
(message) Vi c g i các thông đi p này có th so sánh nh vi c g i các hàmệ ử ệ ể ư ệ ọ bên trong c a m t đ i tủ ộ ố ượng Các phương th c dùng tr l i cho m t thông đi pứ ả ờ ộ ệ
s tùy theo đ i tẽ ố ượng mà thông đi p đó đệ ược g i t i s có ph n ng khácử ớ ẽ ả ứ nhau Ngườ ậi l p trình có th đ nh nghĩa m t đ c tính (ch ng h n thông qua tênể ị ộ ặ ẳ ạ
c a các phủ ương th c) cho m t lo t các đ i tứ ộ ạ ố ượng g n nhau nh ng khi thi hànhầ ư thì dùng cùng m t tên g i mà s thi hành c a m i đ i tộ ọ ự ủ ỗ ố ượng s t đ ng x y raẽ ự ộ ả
tương ng theo đ c tính c a t ng đ i tứ ặ ủ ừ ố ượng mà không b nh m l n.ị ầ ẫ
Thí d khi đ nh nghĩa hai đ i tụ ị ố ượng "hinh_vuong" và "hinh_tron" thì có m tộ
phương th c chung là "chu_vi" Khi g i phứ ọ ương th c này thì n u đ i tứ ế ố ượng là
"hinh_vuong" nó s tính theo công th c khác v i khi đ i tẽ ứ ớ ố ượng là "hinh_tron"
• Tính k th aế ừ (inheritance): Đ c tính này cho phép m t đ i tặ ộ ố ượng có th cóể
s n các đ c tính mà đ i tẵ ặ ố ượng khác đã có thông qua k th a Đi u này cho phépế ừ ề các đ i tố ượng chia s hay m r ng các đ c tính s n có mà không ph i ti nẻ ở ộ ặ ẵ ả ế hành đ nh nghĩa l i Tuy nhiên, không ph i ngôn ng đ nh hị ạ ả ữ ị ướng đ i tố ượng nào cũng có tính ch t này.ấ
Trang 3[ s a ử ] M t đi m m i v m u hình, v quan đi m hay ộ ể ớ ề ẫ ề ể
v m t l i khuy n m i ề ộ ờ ế ạ
OOP v n còn là m t đ tài c a nhi u tranh cãi v đ nh nghĩa chu n xác hay v cácẫ ộ ề ủ ề ề ị ẩ ề nguyên lý c a nó.ủ
Trong d ng t ng quát nh t, OOP đạ ổ ấ ược hi u theo cách là m t lo i th c nghi m vi tể ộ ạ ự ệ ế
chương trình văn b n đả ược phân c p ra thành nhi u mô đun (ấ ề module), mà m i mô đunỗ đóng vai nh m t l p v che đ i di n cho m i ki u d li u.ư ộ ớ ỏ ạ ệ ỗ ể ữ ệ
Nh ng khái ni m liên h đã đữ ệ ệ ược góp nh t l i đ t o thành m t khuôn kh cho vi cặ ạ ể ạ ộ ổ ệ
l p trình Các tri t lý đ ng sau vi c đ nh hậ ế ằ ệ ị ướng đ i tố ượng đã tr nên m nh m đ t oở ạ ẽ ể ạ thành m t s chuy n đ i ộ ự ể ổ m u hìnhẫ trong ngành l p trình.ậ
Nh ng m u hình khác nh ữ ẫ ưl p trình ch c năngậ ứ và l p trình th t cậ ủ ụ t p trung ch y uậ ủ ế trên các hành đ ng, còn ộ l p trình lô gícậ l i t p trung vào nh ng kh ng đ nh h p lý đạ ậ ữ ẳ ị ợ ể kích ho t s th c thi c a mã chạ ự ự ủ ương trình
OOP đã phát tri n m t cách đ c l p t vi c nghiên c u v các ngôn ng đ nh hể ộ ộ ậ ừ ệ ứ ề ữ ị ướ ng
c a h th ng mô ph ng, đó là SIMULA 67, và t vi c nghiên c u các ki n trúc c a hủ ệ ố ỏ ừ ệ ứ ế ủ ệ
th ng có đ tin c y cao, đó là các ki n trúc ố ộ ậ ế CPU và kh năng c b n c a các ả ơ ả ủ h đi uệ ề hành
M t ch c năng đ c s c c a OOP là vi c x lý các ộ ứ ặ ắ ủ ệ ử ki u conể c a các ki u d li u.ủ ể ữ ệ
D li u c a các đ i tữ ệ ủ ố ượng, m t cách t ng quát, đu c đòi h i trong thi t k đ th aộ ổ ợ ỏ ế ế ể ỏ mãn các yêu c u c a ngầ ủ ườ ậi l p trình (t c là các ứ l pớ )
Các ki u d li u b gi i h n thêm các đi u ki n m c dù có cùng ki u d li u v i lo iể ữ ệ ị ớ ạ ề ệ ặ ể ữ ệ ớ ạ không b ràng bu c b i các đi u ki n đó, g i là ị ộ ở ề ệ ọ ki u d li u con ể ữ ệ C hai lo i ki u dả ạ ể ữ
li u này đ u d a vào và đ u đệ ề ự ề ược đi u ti t b i các hành x (t c là các phề ế ở ử ứ ương th c)ứ
đã được đ nh nghĩa Các đi u ki n hay yêu c u này có th đị ề ệ ầ ể ược khai báo rõ ràng hay
được gi thi t công nh n ng m b i ngả ế ậ ầ ở ườ ậi l p trình Các ngôn ng đ nh hữ ị ướng đ iố
tượng cung c p nhi u c ch cho vi c kh ng đ nh r ng các gi thi t đó có tính đ aấ ề ơ ế ệ ẳ ị ằ ả ế ị
phương cho m t ph n c a chộ ầ ủ ương trình Các c ch này này có th đ c th y trong cácơ ế ể ọ ấ tài li u v các chệ ề ương trình đ nh hị ướng đ i tố ượng
OOP t nó đã đang đự ược dùng đ khuy n m i cho nhi u s n ph m và d ch v Cácể ế ạ ề ả ẩ ị ụ
đ nh nghĩa hi n t i và ích l i c a các đ c tính c a OOP thị ệ ạ ợ ủ ặ ủ ường được màu mè hóa b iở các m c đích c a th trụ ủ ị ường thương m i Tạ ương t , nhi u ự ề ngôn ng l p trìnhữ ậ có
nh ng quan đi m đ c bi t v OOP mà nó ít t ng quát trong m t s khía c nh.ữ ể ặ ệ ề ổ ộ ố ạ
Các đ nh nghĩa chính xác c a OOP s có s khác bi t tùy theo quan đi m Đ c bi t,ị ủ ẽ ự ệ ể ặ ệ các ngôn ng có ki u tĩnhữ ể thường có cái nhìn h i khác v i các ơ ớ ngôn ng có ki u đ ngữ ể ộ
Trang 4v OOP, nguyên do là vì chúng t p trung trên th i gian d ch hay t p trung vào th i gianề ậ ờ ị ậ ờ thi hành c a các chủ ương trình
OOP thường được xem là m t ộ m u hìnhẫ h n là m t ki u hay m t phong cách l p trìnhơ ộ ể ộ ậ
nh m nh n m nh vào đi m quan tr ng là OOP có th thay đ i phằ ấ ạ ể ọ ể ổ ương th c phát tri nứ ể
ph n m m b ng cách thay đ i t duy c a nh ng ầ ề ằ ổ ư ủ ữ ngườ ậi l p trình và nh ng ữ k s ph nỹ ư ầ
m mề v ph n m m.ề ầ ề
M u hình c a OOP ch y u không ph i là ki u l p trình mà là ki u thi t k M t hẫ ủ ủ ế ả ể ậ ể ế ế ộ ệ
th ng đố ược thi t k b i đ nh nghĩa c a các đ i tế ế ở ị ủ ố ượng mà các đ i tố ượng này s t n t iẽ ồ ạ trong h th ng đó, trong mã mà hi n làm vi c ch a tệ ố ệ ệ ư ương thích v i đ i tớ ố ượng, hay là trong người dùng đ i tố ượng do nh hả ưởng c a tính ch t đóng c a đ i tủ ấ ủ ố ượng
Cũng nên l u ý r ng có s khác bi t gi a m u hình đ nh hư ằ ự ệ ữ ẫ ị ướng đ i tố ượng và lý thuy tế các h th ngệ ố OOP t p trung trên các đ i tậ ố ượng nh là các đ n v c a m t h th ng,ư ơ ị ủ ộ ệ ố trong khi đó, lý thuy t các h th ng l i t nó ch t p trung vào h th ng Nh là ph nế ệ ố ạ ự ỉ ậ ệ ố ư ầ trung gian, người ta có th tìm th y các ể ấ d ng th c thi t kạ ứ ế ế ph n m m hay các kầ ề ỹ thu t khác dùng các l p và các đ i tậ ớ ố ượng nh là các viên g ch trong nh ng thành ph nư ạ ữ ầ
l n h n Nh ng thành ph n này có th đớ ơ ữ ầ ể ược xem nh là bư ước trung gian t m u hìnhừ ẫ
đ nh hị ướng đ i tố ượng đ n các mô hình "đ nh hế ị ướng s ng th c" h n c a lý thuy t cácố ự ơ ủ ế
h th ng.ệ ố
[ s a ử ] Các m u hình đ nh h ẫ ị ướ ng đ i t ố ượ ng con
Có nhi u phong cách l p trình hề ậ ướng đ i tố ượng S khác nhau gi a các phong cáchự ữ này là tùy theo vi c các ệ ngôn ng l p trìnhữ ậ chú tr ng vào khía c nh nào c a s thu nọ ạ ủ ự ậ
l i c a đ nh hợ ủ ị ướng đ i tố ượng và vào vi c k t h p các c u trúc trong các phệ ế ợ ấ ương cách khác nhau
[ s a ử ] OOP v i các ngôn ng c u trúc ớ ữ ấ
Trong các ngôn ng c u trúc, OOP thữ ấ ường xu t hi n nh là m t d ng mà đó cácấ ệ ư ộ ạ ở
ki u d li u để ữ ệ ược m r ng đ hành x gi ng nh là m t ki u c a m t đ i tở ộ ể ử ố ư ộ ể ủ ộ ố ượ ng trong OOP, hoàn toàn tương t cho m t ự ộ ki u d li u tr u tể ữ ệ ừ ượng v i s m r ng nhớ ự ở ộ ư
là s k th a M i phự ế ừ ỗ ương pháp th c ra là m t chự ộ ương trình con mà, m t cách cúộ pháp, gi i h n n i trong m t l p.ớ ạ ộ ộ ớ
[ s a ử ] Các mô hình nguyên m u c b n ẫ ơ ả
Khác v i cách s d ng l p, ớ ử ụ ớ nguyên m u ẫ là m t mô hình khác ít độ ược bi t đ n h n,ế ế ơ
nó có ý nghĩa đ t t i vi c chia s ng x theo đ nh hạ ớ ệ ẻ ứ ử ị ướng đ i tố ượng Sau khi đ iố
tượng được đ nh nghĩa, m t đ i tị ộ ố ượng khác tương t s đự ẽ ược đ nh nghĩa t đ i tị ừ ố ượ ng ban đ u Ngôn ng nguyên m u c b n đầ ữ ẫ ơ ả ược bi t đ n nhi u nh t là ế ế ề ấ JavaScript mà đây
là m t s thi t l p c a ộ ự ế ậ ủ ECMAScript Self, m t ngôn ng l p trình độ ữ ậ ược phát tri n b iể ở
Sun Microsystems cũng là m t thí d c a ngôn ng dùng nguyên m u cho vi c chia sộ ụ ủ ữ ẫ ệ ẻ
ng x ch không dùng s phân l p
ứ ử ứ ự ớ NewtonScript, Act1, Io và Delegation là các thí dụ
Trang 5khác Đ c bi t, ặ ệ Hybrid và Exemplars s d ng c hai mô hình nguyên m u và phân l p.ử ụ ả ẫ ớ Trong các h th ng nguyên m u, các đ i tệ ố ẫ ố ượng t chúng là các khuôn th c (ự ứ template),
trong khi các h th ng phân l p dùng các l p nh là các khuôn th c cho các đ i tệ ố ớ ớ ư ứ ố ượng
Các ti p c n ki u phân l p thì chi m đa s trong OOP mà nhi u ngế ậ ể ớ ế ố ề ườ ẽ ịi s đ nh nghĩa các đ i tố ượng nh là có tính ch t đóng mà vi c chia s d li u x y ra b i s phân l pư ấ ệ ẻ ữ ệ ả ở ự ớ
và b i tính k th a M c dù v y, khái ni m t ng quát h n "chia s ng x " đở ế ừ ặ ậ ệ ổ ơ ẻ ứ ử ược công
nh n nh là các k thu t thay th (nh trậ ư ỹ ậ ế ư ường h p nguyên m u).ợ ẫ
(Xem thêm L p trình nguyên m u c b nậ ẫ ơ ả )
[ s a ử ] Mô hình đ i t ố ượ ng c b n ơ ả
L p trình hậ ướng đ i tố ượng c b n là trung tâm v vi c t o thành c a các đ i tơ ả ề ệ ạ ủ ố ượ ng
và các tương tác c a chúng, nh ng có th s thi u đi m t s ch c năng quan tr ng c aủ ư ể ẽ ế ộ ố ứ ọ ủ
m u hình đ nh hẫ ị ướng đ i tố ượng l p c b n nh là tính k th a Nh ng h th ng đ iớ ơ ả ư ế ừ ữ ệ ố ố
tượng c b n nh v y thơ ả ư ậ ường không được xem nh là đ nh hư ị ướng đ i tố ượng vì tính
k th a m t cách đi n hình là m t y u t c t lõi c a OOP.ế ừ ộ ể ộ ế ố ố ủ
Thí d c a trụ ủ ường h p này là ngôn ng ợ ữVisual Basic v i các phiên b n 6.0 hayớ ả
nh h n.ỏ ơ
[ s a ử ] Đ nh nghĩa chu n ị ẩ
Đã có nhi u n l c đ chu n hóa các khái ni m đề ỗ ự ể ẩ ệ ược dùng trong l p trình đ nh hậ ị ướ ng
đ i tố ượng Nh ng khái ni m và các k t c u sau đây đã đữ ệ ế ấ ược suy di n nh là các kháiễ ư
ni m c a OOP:ệ ủ
• Các ki u d li u đ ng đ i sể ữ ệ ồ ạ ố
• Các lượng t n t iồ ạ và các mô đun
• Đ quiệ
• Các b nả và vi c ệ m r ng b nở ộ ả
• Đa hình biên F
Các n l c tìm m t đ nh nghĩa th ng nh t hay lý thuy t đ ng sau các đ i tỗ ự ộ ị ố ấ ế ứ ố ượng đã không m y thành công và thấ ường b phân hóa n ng Thí d , m t s đ nh nghĩa thì t pị ặ ụ ộ ố ị ậ trung lên các ho t đ ng tinh th n trong khi s khác l i ng v vi c c u trúc chạ ộ ầ ố ạ ả ề ệ ấ ươ ng trình M t trong các đ nh nghĩa đ n gi n h n cho r ng OOP là m t hành x c a vi cộ ị ơ ả ơ ằ ộ ử ủ ệ
s d ng các bi u đ c u trúc d li u hay s d ng các dãy mà có th ch a các hàm vàử ụ ể ồ ấ ữ ệ ử ụ ể ứ các con tr sang các bi u đ khác S k th a có th ti n hành b i nhân b n các bi uỏ ể ồ ự ế ừ ể ế ở ả ể
đ này (mà đôi khi g i là "nguyên b n hóa").ồ ọ ả
[ s a ử ] OOP trong văn l nh ệ
Trang 6• Paul Harmon, William Morrissey: The Object Technology Casebook - Lessons from Award-Winning Business Applications, John Wiley & Sons, ISBN 0-471-14717-6
• David A Taylor: Object-Oriented Information Systems - Planning and
Implementation, John Wiley & Sons, ISBN 0-471-54364-0
• Peter Eeles, Oliver Sims: Building Business Objects, John Wiley & Sons, ISBN 0-471-19176-0
[ s a ử ] Các bài liên hệ
Wikibooks ti ng Anh có ch đ v ế ủ ề ề
L p trình h ậ ướ ng đ i t ố ượ ng
• en:Object-oriented programming language
• en:Aspect-oriented programming
• en:Programming paradigm
• en:Software componentry
• en:Interface description language
• en:Distributed programming
• en:List of object-oriented programming terms
• en:Design pattern (computer science)
• en:Refactoring
• en:CORBA
• en:Globus
• en:DCOM
• en:Glossary of object-oriented programming
[ s a ử ] Tham kh o ả
• Introduction to OOP
• Introduction to Object Oriented Programming
• Structured Programming vs Object-Oriented Programming
• Object-oriented programming FAQ
• Example of the subtyping problem
• What are OOP's Jargons and Complexities
• Object Oriented Design Principles
• The report "Object Orientation Redefined" outlines how OO has been considered
a thinking tool, i.e "we view the world in objects", and how such an approach may further our understanding of object-oriented formalisation
[ s a ử ] Các phê phán
• Criticism of OOP
• Objects Have Failed
• Arguments Against OOP (C2 wiki discussion)
Trang 7• OOP Better in Theory than in Practice
• Why Paul Graham is Creating a New Language Without OOP