1. Trang chủ
  2. » Cao đẳng - Đại học

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

7 8 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 7
Dung lượng 179,42 KB

Nội dung

"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]

(1)

có th b thay th ho c xóa b t c lúcể ị ế ặ ấ ứ

M c l cụ ụ [xem]

L p trình hậ ướng đ i tố ượng (g i t t ọ ắ OOP, t ch ữAnh ngữobject-oriented programming), hay g i ọ l p trình đ nh hậ ướng đ i tố ượng, kĩ thu t l p trìnhậ ậ h tr công ngh đ i tỗ ợ ệ ố ượng OOP xem giúp tăng su t, đ n gi n hóa đấ ả ộ ph c t p b o trì 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 đ i tậ ố ượng ph n m m b c cao h n Ngoài ra, nhi u ngầ ề ậ ề ười 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 phơ ương pháp trước

M t cách gi n lộ ả ược, khái ni m m t n l c nh m gi m nh thao tácệ ộ ỗ ự ằ ả ẹ vi t mã cho ngế ườ ậi l p trình, cho phép h t o ọ ứng d ngụ mà y u t bên ngồiế ố có th tể ương tác v i ương trình gi ng nh tố ương tác v i đ i tớ ố ượng v tậ lý

Nh ng đ i tữ ố ượng m t ngôn ng OOP k t h p gi a mã d li u màộ ữ ế ợ ữ ữ ệ chúng nhìn nh n nh m t đ n v nh t M i đ i tậ ộ ị ấ ỗ ố ượng có m t tên riêngộ bi t t t c tham chi u đ n đ i tệ ấ ả ế ế ố ượng ti n hành qua tên c a Nhế ủ v y, m i đ i tậ ỗ ố ượng có kh nh n vào thơng báo, x lý d li u (bên c aả ậ ữ ệ ủ nó), g i hay tr l i đ n đ i tử ả ế ố ượng khác hay đ n môi trế ường

[s a ] Các tính ch t c b nấ ả

Đ i tố ượng (object): Các d li u ch th đữ ệ ỉ ị ược k t h p vào m t đ n v đ yế ợ ộ ị ầ đ t o nên m t đ i tủ ộ ố ượng Đ n v tơ ị ương đương v i m t ộ ương trình th đ i tế ố ượng s đẽ ược chia thành hai b ph n chính: ph n cácộ ậ ầ

phương th cứ (method) ph n ầ thu c tínhộ (attribute) Trong th c t , cácự ế phương th cứ c a đ i tủ ố ượng hàm thu c tínhộ c a bi n,ủ ế 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ứ phương ti n đ s d ng m t đ i tệ ể ụ ộ ố ượng thu c tínhộ s mơ t đ iẽ ả ố tượng có nh ng tính ch t gì.ữ ấ

Các phương th c thu c tính thứ ộ ường g n ch t v i th c t đ c tính vàắ ặ ự ế ặ s d ng c a m t đ i tử ụ ủ ộ ố ượng

Trong th c t , đ i tự ế ố ượng thường tr u từ ượng hóa qua vi c đ nh nghĩaệ ị c a ủ l pớ (class)

T p h p giá tr hi n có c a thu c tính t o nên ậ ợ ị ệ ủ ộ tr ng tháiạ c a m t đ iủ ộ ố tượng

(2)

N u khơng có l m l n t p h p đ c tính g i chung đ c tính c aế ầ ẫ ậ ợ ặ ọ ặ ủ đ i tố ượng

L p trình hậ ướng đ i tố ượng m t phộ ương pháp l p trình có tính ch t sau:ậ ấ

Tính tr u từ ượng (abstraction): Đây kh c a chả ủ ương trình b qua hayỏ khơng ý đ n m t s khía c nh c a thơng tin mà tr c ti p làm vi cế ộ ố ủ ự ế ệ lên, nghĩa có kh t p trung vào nh ng c t lõi c n thi t M i đ iả ậ ữ ố ầ ế ỗ ố tượng ph c v nh m t "đ ng t " có th hồn t t cơng vi c m t cáchụ ụ ộ ộ ể ấ ệ ộ n i b , báo cáo, thay đ i tr ng thái c a liên l c v i đ i tộ ộ ổ ủ ố ượng khác mà không c n cho bi t làm cách đ i tầ ế ố ượng ti n hành đế ược thao tác Tính ch t thấ ường g i ọ s tr u tự ượng c a d li uủ ữ ệ

Tính tr u từ ượng th hi n qua vi c m t đ i tể ệ ệ ộ ố ượng ban đ u có th có m tầ ể ộ s đ c m chung cho nhi u đ i tố ặ ể ề ố ượng khác nh s m r ng c a nh ngư ự ộ ủ b n thân đ i tả ố ượng ban đ u có th khơng có bi n pháp thi hành Tínhầ ể ệ tr u từ ượng thường xác đ nh khái ni m g i ị ệ ọ l p tr u tớ ừ ượng

hay l p c s tr u tớ ơ ượng

Tính đóng gói (encapsulation) che gi u thơng tinấ (information hiding): Tính ch t khơng cho phép ngấ ườ ụi s d ng đ i tố ượng thay đ i tr ng thái n iổ ộ t i c a m t đ i tạ ủ ộ ố ượng Ch 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 Vi c cho phép mơi trổ ủ ệ ường bên ngồ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 hoàn toàn tùy thu c vàoộ người vi t mã Đây tính ch t đ m b o s tồn v n c a đ i tế ấ ả ả ự ẹ ủ ố ượng

Tính đa hình (polymorphism): Th hi n thông qua vi c g i ể ệ ệ thông pệ (message) Vi c g i thơng p có th so sánh nh vi c g i hàmệ ệ ể ệ ọ bên c a m t đ i tủ ộ ố ượng Các phương th c dùng tr l i cho m t thông pứ ả ộ ệ s tùy theo đ i tẽ ố ượng mà thơng p đệ ược g i t i s có ph n ng khácử ẽ ả ứ 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 phủ ương th c) cho m t lo t đ i tứ ộ ố ượng g n nh ng thi hànhầ dù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 đ nh nghĩa hai đ i tụ ị ố ượng "hinh_vuong" "hinh_tron" có m tộ phương th c chung "chu_vi" Khi g i phứ ọ ương th c n u đ i tứ ế ố ượng "hinh_vuong" s tính theo cơng th c khác v i đ i tẽ ứ ố ượng "hinh_tron"

(3)

[s a ] M t m m i v m u hình, v quan m hay ớ ề ẫ v m t l i khuy n m iề ộ ờ ế

OOP v n 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 m t lo i th c nghi m vi tể ộ ự ệ ế chương trình văn b n đả ược phân c p 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ẫ ngành l p trình.ậ

Nh ng m u hình khác nh ữ ẫ ưl p trình ch c năngậ ứ l p trình th t cậ ủ ụ t p trung ch y uậ ủ ế hành đ ng, ộ 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 ngôn ng đ nh hể ộ ộ ậ ệ ứ ề ữ ị ướng c a h th ng mơ ph ng, SIMULA 67, t vi c nghiên c u ki n trúc c a hủ ệ ố ỏ ệ ứ ế ủ ệ th ng có đ tin c y cao, ki n trúc ố ộ ậ ế CPU kh c b n c a ả ả ủ h uệ ề

hành

M t ch c đ c s c c a OOP vi c x lý ộ ứ ặ ắ ủ ệ ki u conể c a ki u d li u.ủ ể ữ ệ D li u c a đ i tữ ệ ủ ố ượng, m t cách t ng quát, đu c đòi h i thi t k đ th aộ ổ ợ ỏ ế ế ể ỏ mãn yêu c u c a ngầ ủ ườ ậi l p trình (t c ứ l pớ )

Các ki u d li u b gi i h n thêm u ki n m c dù có ki u d li u v i lo iể ữ ệ ị ề ệ ặ ể ữ ệ không b ràng bu c b i u ki n đó, g i ị ộ ề ệ ọ ki u d li u conể ữ ệ C hai lo i ki u dả ể ữ li u đ u d a vào đ u đệ ề ự ề ược u ti t b i hành x (t c phề ế ứ ương th c)ứ đ nh nghĩa Các u ki n hay yêu c u có th đị ề ệ ầ ể ược khai báo rõ ràng hay 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 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 có th đ c th y cácơ ế ể ọ ấ tài li u v chệ ề ương trình đ nh hị ướng đ i tố ượng

(4)

v OOP, nguyên chúng t p trung th i gian d ch hay t p trung vào th i gianề ậ ị ậ thi hành c a chủ ương trình

OOP thường xem m t ộ m u hìnhẫ h n m t ki u hay m t phong cách l p trìnhơ ộ ể ộ ậ nh m nh n m nh vào m quan tr ng OOP có th thay đ i phằ ấ ể ọ ể ổ ương th c phát tri nứ ể ph n m m b ng cách thay đ i t c a nh ng ầ ề ằ ổ ủ ữ ngườ ậi l p trình 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 ki u l p trình mà ki u thi t k M t hẫ ủ ủ ế ả ể ậ ể ế ế ộ ệ th ng đố ược thi t k b i đ nh nghĩa c a đ i tế ế ị ủ ố ượng mà đ i tố ượng s t n t iẽ h th ng đó, mã mà hi n làm vi c ch a tệ ố ệ ệ ương thích v i đ i tớ ố ượng, người dùng đ i tố ượng nh ưở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 lý thuy tế

các h th ngệ ố OOP t p trung đ i tậ ố ượng nh đ n v c a m t h th ng,ư ị ủ ộ ệ ố đó, lý thuy t h th ng l i t ch t p trung vào h th ng Nh ph nế ệ ố ự ỉ ậ ệ ố ầ trung gian, người ta có th tìm th y ể ấ d ng th c thi t kạ ứ ế ế ph n m m hay kầ ề ỹ thu t khác dùng l p đ i tậ ố ượng nh viên g ch nh ng thành ph nư ữ ầ l n h n Nh ng thành ph n có th đớ ữ ầ ể ược xem nh bư ước trung gian t m u hìnhừ ẫ đ nh hị ướng đ i tố ượng đ n 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 ậ ướng đ i tố ượng S khác gi a phong cáchự ữ tùy theo vi c ệ ngôn ng l p trìnhữ ậ tr ng vào khía c nh c a s thu ủ ự ậ l i c a đ nh hợ ủ ị ướng đ i tố ượng vào vi c k t h p c u trúc phệ ế ợ ấ ương cách khác

[s a ] OOP v i ngôn ng c u trúc ữ ấ

Trong ngôn ng c u trúc, OOP thữ ấ ường xu t hi n nh m t d ng mà cácấ ệ ộ ki u d li u để ữ ệ ược m r ng đ hành x gi ng nh m t ki u c a m t đ i tở ộ ể ố ộ ể ủ ộ ố ượng 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ớ ự ộ s k th a M i phự ế ỗ ương pháp th c m t chự ộ ương trình mà, m t cách cúộ pháp, gi i h n n i m t l p.ớ ộ ộ

[s a ] Các mơ hình ngun m u c b n ơ ả

Khác v i cách s d ng l p, ụ nguyên m uẫ m t mơ hình khác độ ược bi t đ n h n,ế ế có ý nghĩa đ t t i vi c chia s ng x theo đ nh hạ ệ ẻ ứ ị ướng đ i tố ượng Sau đ iố tượng đ 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 ế ế ề ấ JavaScript mà 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 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

(5)

khác Đ c bi t, ặ ệ Hybrid Exemplars s d ng c hai mơ hình ngun m u phân l p.ử ụ ả ẫ Trong h th ng nguyên m u, đ i tệ ố ẫ ố ượng t chúng khuôn th c (ự ứ template), h th ng phân l p dùng l p nh khuôn th c cho đ i tệ ố ớ ứ ố ượng Các ti p c n ki u phân l p chi m đa s OOP mà nhi u ngế ậ ể ế ố ề ườ ẽ ịi s đ nh nghĩa đ i tố ượng nh có tính ch t đóng mà vi c chia s d li u x y b i s phân l pư ấ ệ ẻ ữ ệ ả ự 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 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 trung tâm v vi c t o thành c a đ i tơ ả ề ệ ủ ố ượng tương tác c a chúng, nh ng có th s thi u m t s ch c quan tr ng c aủ ể ẽ ế ộ ố ứ ọ ủ m u hình đ nh hẫ ị ướng đ i tố ượng l p c b n nh tính k th a Nh ng h th ng đ iớ ả ế ữ ệ ố ố tượng c b n nh v y thơ ả ậ ường không xem nh đ nh hư ị ướng đ i tố ượng tính k th a m t cách n hình m t y u t c t lõi c a OOP.ế ộ ể ộ ế ố ố ủ

Thí d c a trụ ủ ường h p ngôn ng ợ ữVisual Basic v i 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 khái ni m đề ỗ ự ể ẩ ệ ược dùng l p trình đ nh hậ ị ướng đ i tố ượng Nh ng khái ni m k t c u sau đữ ệ ế ấ ược suy di n nh 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ồ mơ đun • Đ quiệ

• Các b nả 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 đ i tỗ ự ộ ị ố ấ ế ứ ố ượng không m y thành cơng thấ ường b phân hóa n ng Thí d , m t s đ nh nghĩa t pị ặ ụ ộ ố ị ậ trung lên ho t đ ng tinh th n s khác l i ng v vi c c u trúc chạ ộ ầ ố ả ề ệ ấ ương trình M t đ nh nghĩa đ n gi n h n cho r ng OOP m t hành x c a vi cộ ị ả ằ ộ ủ ệ s d ng bi u đ c u trúc d li u hay s d ng dãy mà có th ch a hàm vàử ụ ể ấ ữ ệ ụ ể ứ tr sang bi u đ khác S k th a có th ti n hành b i nhân b n bi uỏ ể ự ế ể ế ả ể đ (mà g i "nguyên b n hóa").ồ ọ ả

(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 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

(7)

• OOP Better in Theory than in Practice

[xem p l p trình th t c òn u ngơn ng có ki u tĩnh g Self Sun Microsystems c , Act1 , Io Delegation Exemplars L p trình nguyên m u c b n ki u d li u đ ng đ i s l mô đun Đ quiệ b n Đa hình biên F Paul Harmon , William Morrissey , ISBN David A Taylor , ISBN 0-471-54364-0 Peter Eeles , Oliver Sims , ISBN Wikibooks t 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 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 "Object Orientation Redefined" Criticism of OOP Objects Have Failed Arguments Against OOP (C2 wiki discussion) OOP Better in Theory than in Practice Why Paul Graham is Creating a New Language Without OOP

Ngày đăng: 10/03/2021, 14:36

w