Chương 1: Tổng quan về lập trình hướng đối tượng

Chia sẻ: Tran Vinh Phuc | Ngày: | Loại File: PDF | Số trang:15

0
184
lượt xem
85
download

Chương 1: Tổng quan về lập trình hướng đối tượng

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Vài nét về sự phát triển của các ngôn ngữ lập trình: Các khái niệm cơ bản của lập trình hướng đối tượng: Lớp và đối tượng (Class & Object), Thông báo (Message), Tính đóng gói (Encapsulation), Tính kế thừa (Inheritance), Tính đa hình (Polymorphism). Tổng quan về ngôn ngữ lập trình hướng đối tượng C++: Xuất / Nhập (Console I/O), Chú thích (Comment). (Download về tài liệu không bị lỗi font)

Chủ đề:
Lưu

Nội dung Text: Chương 1: Tổng quan về lập trình hướng đối tượng

  1. Chöông 1 Toång quan veà laäp trình höôùng ñoái töôïng Vaøi neùt veà söï phaùt trieån cuûa caùc ngoân ngöõ laäp trình Caùc khaùi nieäm cô baûn cuûa laäp trình höôùng ñoái töôïng • Lôùp vaø Ñoái töôïng (Class & Object) • Thoâng baùo (Message) • Tính ñoùng goùi (Encapsulation) • Tính keá thöøa (Inheritance) • Tính ña hình (Polymorphism) Toång quan veà ngoân ngöõ laäp trình höôùng ñoái töôïng C++ • Xuaát/Nhaäp (Console I/O) • Chuù thích (Comment) • Khaùi nieäm veà quaù taûi haøm (Function Overloading) • Caùc töø khoaù (Keywords)
  2. Chöông 1 Toång quan veà Laäp trình höôùng ñoái töôïng 2
  3. Chöông 1 Toång quan veà Laäp trình höôùng ñoái töôïng 3 I/ Vaøi neùt veà söï phaùt trieån cuûa caùc ngoân ngöõ laäp trình Ngoân ngöõ laäp trình phaùt trieån qua hai lyù do : (1) ñeå thích öùng vôùi söï phaùt trieån cuûa moâi tröôøng (caùc heä maùy tính, caùc maïng). (2) boå sung toát hôn cho caùc phöông phaùp laäp trình. • Vaøo thaäp nieân 1940, chieác maùy tính ñieän töû ñaàu tieân ENIAC I (Electronic Numerical Integrator and Calculator) ñöôïc cheá taïo taïi ÑH Pennsylvania, USA, bôûi nhoùm John W. Mauchly vaø J. Presper Eckert. Caùc chöông trình (program) luùc ñoù ñöôïc laäp ra baèng caùc quaù trình ñoùng môû caùc coâng taéc treân moät baûng ñaët tröôùc maùy tính. Ngoân ngöõ maùy (Machine language) vôùi nhöõng chuoåi nhò phaân 0,1,... coù ñoä daøi qui öôùc chæ thích hôïp vôùi caùc chöông trình nhoû nhaát. • Sau ñoù John von Neumann (ÑH Princeton, USA) ñaõ ñeà xuaát khaùi nieäm chöông trình löu tröõ trong boä nhôù maùy tính, yù töôûng naøy khoâng nhöõng caûi tieán toác ñoä tính toaùn cuûa maùy tính luùc ñoù maø coøn gôïi ra nhöõng phöông phaùp linh hoaït ñeå vieát caùc chöông trình trong töông lai. Hôïp ngöõ (Assembly language) ñöôïc taïo ra cho pheùp vieát caùc chöông trình daøi hôn. • Cuoái thaäp nieân 1950 vaø ñaàu thaäp nieân 1960, caùc ngoân ngöõ caáp cao ñaõ ra ñôøi nhö FORTRAN (FORmula TRANslator) duøng cho caùc tính toaùn veà toaùn hoïc vaø COBOL (COmmon Business Oriented Language) duøng trong lónh vöïc thöông maïi. Ngoân ngöõ BASIC (Beginners All-purpose Symbolic Instructional Code) ñöôïc phaùt trieån laàn ñaàu tieân treân caùc maùy vi tính (micro-computer) nhaèm giuùp caùc sinh vieân deã hoïc vaø tieáp caän vôùi caùc chöông trình maùy tính. Caùc ngoân ngöõ laäp trình coù caáu truùc nhö ALGOL vaø PASCAL ra ñôøi giuùp loaïi boû caùc nhöôïc ñieåm nhö roái loaïn maõ khoù quaûn lyù khi soá leänh trong chöông trình daøi haøng ngaøn doøng. • Ñaàu thaäp nieân 1970 ngoân ngöõ C (do Denis Ritchie) ñöôïc ra ñôøi taïi AT&T Bell Labs, USA. Ngoân ngöõ C toång hôïp caùc söùc maïnh cuûa caùc ngoân ngöõ laäp trình caáu truùc khaùc, deå hieåu, deå hoïc vaø trôû neân phoå bieán vôùi moïi ngöôøi. Thaùng 12/1989, ngoân ngöõ C ñöôïc ANSI (American National Standards Insitute) chuaån hoaù vaø thoâng qua.
  4. Chöông 1 Toång quan veà Laäp trình höôùng ñoái töôïng 4 • Laäp trình coù caáu truùc (hay coøn goïi laø laäp trình thuû tuïc) döïa vaøo caùc caáu truùc ñieàu khieån (for, while, do, if, ...) ñaõ ñöôïc ñònh nghiaõ, caùc khoái maõ leänh, ít duøng leänh GOTO, caùc chöông trình con hoã trôï pheùp ñeä qui vaø caùc bieán cuïc boä. Main program Function 1 Function 2 Function 3 Function 4 Function 5 Function 6 Function 7 Function 8 Hình 1.1 Caùc chöông trình höôùng-thuû tuïc (laäp trình caáu truùc) Moät chöông trình lôùn ñöôïc chia thaønh nhieàu chöông trình con cho nhieàu nhoùm laäp trình khaùc nhau cuøng laøm vieäc, vôùi soá doøng leänh ñeán vaøi chuïc ngaøn doøng, giuùp deã daøng baûo trì vaø phaùt trieån phaàn meàm. Global Data Global Data Function-1 Function-2 Function-3 Local Data Local Data Local Data Hình 1.2 Quan heä giöõa döõ lieäu vaø haøm trong laäp trình höôùng-thuû tuïc • Ñaàu thaäp nieân 1980, ngoân ngöõ C++ (döïa treân ngoân ngöõ C, Bjarne Stroustrup giôùi thieäu) vaø ngoân ngöõ Smalltalk (Xerox PARK) ñöôïc phaùt trieån nhaèm hoå trôï cho phöông phaùp laäp trình höôùng ñoái töôïng (Object Oriented Programming), phöông phaùp naøy ñaõ ñöôïc ñeà xuaát töø cuoái thaäp nieân 1960 vôùi ngoân ngöõ Simula. C++ ñöôïc chuaån hoaù vaøo thaùng 11/1997 vaø moät chuaån ANSI/ISO ñaõ coâng boá.
  5. Chöông 1 Toång quan veà Laäp trình höôùng ñoái töôïng 5 Laäp trình höôùng ñoái töôïng söû duïng C++ taïo neân söï bieán ñoåi saâu saéc, giuùp laäp trình vieân coù theå quaûn lyù nhöõng chöông trình lôùn vaø phöùc taïp (hôn 100.000 doøng leänh). • Thaäp nieân 1990, vôùi söï phaùt trieån maïnh meõ cuûa maïng World Wide Web, moät cuoäc caùch maïng môùi trong kyõ thuaät laäp trình ñaõ xaûy ra. Ngoân ngöõ JAVA do James Gosling, Patrick Naughton, Christ Warth, vaø Mike Sheridan phaùt trieån taïi haõng Sun Microsystem. Teân chính thöùc ñöôïc coâng boá vaøo naêm 1995. • JAVA laø ngoân ngöõ laäp trình höôùng ñoái töôïng khoâng phuï thuoäc vaøo thieát bò (caùc boä vi xöû lyù, heä ñieàu haønh, maïng, ...). JAVA ñöôïc thieát keá khoâng phaûi ñeå thay theá C++, maø ñeå giaûi quyeát nhöõng vaán ñeà ñang ñaët ra cho neàn coâng ngheä tin hoïc. • Phöông phaùp laäp trình höôùng ñoái töôïng cho pheùp phaân chia moät baøi toaùn thaønh caùc nhoùm nhoû coù quan heä vôùi nhau. Moãi nhoùm laø moät ñoái töôïng chöùa caùc leänh vaø döõ lieäu rieâng cuûa noù coù quan heä vôùi ñoái töôïng ñoù. Nhôø ñoù, tính phöùc taïp cuûa chöông trình ñöôïc giaûm xuoáng, ngöôøi laäp trình coù theå quaûn lyù nhöõng chöông trình raát lôùn, chaúng haïn heä ñieàu haønh Windows vaø nhöõng chöông trình öùng duïng treân ñoù laø nhöõng minh chöùng cho phöông phaùp naøy. Object A Object B Data Data Functions Functions Object C Functions Data Hình 1.3 Toå chöùc cuûa döõ lieäu vaø caùc phöông thöùc trong laäp trình höôùng-ñoái töôïng Caùc ñaëc tính quan troïng trong laäp trình höôùng ñoái töôïng :
  6. Chöông 1 Toång quan veà Laäp trình höôùng ñoái töôïng 6 • Tính ñoùng goùi (Encapsulation) • Tính keá thöøa (Inheritance) • Tính ña hình (Polymorphism) II/ Caùc khaùi nieäm cô baûn cuûa laäp trình höôùng ñoái töôïng 1/ Lôùp (Class) vaø Ñoái töôïng (Object) Caùc ñoái töôïng laø caùc thöïc theå (entities) cô sôû khi chaïy chöông trình (run-time) trong moät heä thoáng höôùng ñoái töôïng. Chuùng coù theå bieåu dieãn moät con ngöôøi, moät vò trí, moät taøi khoaûn ngaân haøng, moät baûng döõ lieäu hoaëc baát kyø moät ñeà muïc (item) naøo maø chöông trình caàn duøng ñeå thöïc hieän caùc taùc vuï (tasks). Object : SINHVIEN SINHVIEN DATA Teân Nhaäp() Ngaøy sinh Ñieåm .... TrungBình() FUNCTIONS Nhaäp() TrungBình() HieånThò() HieånThò() (a) (b) Hình 1.4 Hai caùch bieåu dieãn moät ñoái töôïng Beân trong moät chöông trình coù theå vieát caùc doøng leänh (instructions) ñeå taïo ra caùc ñoái töôïng. Ñeå maùy tính coù theå taïo ra ñoái töôïng, chuùng ta caàn phaûi cung caáp moät ñònh nghiaõ, goïi laø lôùp. Lôùp laø moät daïng khuoân (mould , template) qua ñoù chöông trình maùy tính duøng ñeå taïo ra caùc ñoái töôïng. Moät ñoái töôïng ñöôïc goïi laø moät theå hieän (instance) cuûa moät lôùp. Moät ñoái töôïng laø moät theå hieän chính xaùc cuûa moät lôùp. Khi ñònh nghiaõ moät lôùp, coøn ñöôïc xem laø taïo ra moät kieåu döõ lieäu môùi töø ngöôøi duøng.
  7. Chöông 1 Toång quan veà Laäp trình höôùng ñoái töôïng 7 Khi khai baùo moät ñoái töôïng, coù nghiaõ laø taïo ra moät bieán coù kieåu döõ lieäu laø moät lôùp. Caùc thaønh vieân (members) cuûa moät lôùp bao goàm döõ lieäu (data) vaø caùc haøm hay phöông thöùc (function, method) Nguyeân SINHVIEN SINHVIEN Hanh SINHVIEN Class Instances Objects Hình 1.5 Lôùp SINHVIEN vaø 2 ñoái töôïng Nguyeân & Hanh 2/ Thoâng baùo (Message) Ñeå yeâu caàu moät ñoái töôïng thöïc thi moät taùc vuï, caàn gôûi moät thoâng baùo ñeán noù. Chaúng haïn, chuùng ta gôûi moät thoâng baùo new ñeán lôùp SINHVIEN ñeå taïo ra moät theå hieän (moät ñoái töôïng SINHVIEN), sau ñoù gôûi moät thoâng baùo Nhaäp() ñeán ñoái töôïng cuûa lôùp SINHVIEN ñeå nhaäp caùc döõ lieäu veà sinh vieân. 3/ Tính ñoùng goùi (Encapsulation) Vieäc toå chöùc döõ lieäu (data) vaø caùc haøm (function) hay phöông thöùc (method) trong moät ñôn vò duy nhaát (goïi laø lôùp) ñöôïc xem laø tính chaát ñoùng goùi. Ñoùng goùi döõ lieäu (Data Encapsulation) laø moät trong nhöõng ñaëc tính noåi baät cuûa moät lôùp. Döõ lieäu khoâng theå truy xuaát ñöôïc ôû beân ngoaøi lôùp vaø chæ nhöõng phöông thöùc beân trong lôùp ñoù môùi coù theå truy xuaát ñöôïc chuùng. Trong moät ñoái töôïng, döõ lieäu vaø haøm hoaëc caû hai coù theå laø rieâng cuûa ñoái töôïng ñoù hoaëc chung.
  8. Chöông 1 Toång quan veà Laäp trình höôùng ñoái töôïng 8 Döõ lieäu vaø haøm rieâng laø thuoäc veà ñoái töôïng ñoù vaø chæ ñöôïc truy caäp bôûi caùc thaønh phaàn beân trong cuûa ñoái töôïng. Vôùi döõ lieäu vaø haøm chung, caùc boä phaän khaùc cuûa chöông trình coù theå truy caäp ñeán chuùng. Nhöõng chöùc naêng naøy cung caáp moät giao tieáp giöõa döõ lieäu cuûa ñoái töôïng vaø chöông trình. Söï caùch ly naøy cuûa döõ lieäu töø vieäc truy xuaát tröïc tieáp bôûi chöông trình ñöôïc goïi laø söï che daáu döõ lieäu (data hiding) 4/ Tính keá thöøa (Inheritance) Tính keá thöøa laø quaù trình moät ñoái töôïng coù theå coù ñöôïc caùc tính chaát cuûa moät ñoái töôïng khaùc. Nghiaõ laø, moät ñoái töôïng coù theå keá thöøa caùc tính chaát toång quaùt ñeå boå sung theâm caùc ñaëc ñieåm cuûa noù. Tính keá thöøa hoå trôï khaùi nieäm phaân loaïi theo thöù baäc (hierarchical classification) , ñoùng vai troø quan troïng trong laäp trình höôùng ñoái töôïng. Hoïc Vieän Coâng ngheä Böu Chính –Vieãn Thoâng Khoái Sinh vieân Khoái Giaùo vieân Khoái Nhaân vieân Hình 1.6 Heä thoáng thöù baäc keá thöøa (ñôn giaûn) trong Hoïc vieän Lôùp cô sôû (base class) : “Hoïc Vieän Coâng ngheä Böu Chính –Vieãn Thoâng” Lôùp daãn xuaát (derived class) : “Khoái Sinh vieân” , “Khoái Giaùo vieân” , “Khoái Nhaân vieân” 5/ Tính ña hình (Polymorphism)
  9. Chöông 1 Toång quan veà Laäp trình höôùng ñoái töôïng 9 Tính ña hình laø tính chaát cho pheùp moät teân (ñoái töôïng, haøm, toaùn töû) ñöôïc duøng cho hai hay nhieàu muïc ñích khaùc nhau coù quan heä veà phöông dieän kyõ thuaät. Tính ña hình cho pheùp thöïc hieän quaù taûi haøm (function overloading) hay quaù taûi toaùn töû (operator overloading) Tính ña hình theå hieän yù töôûng "moät giao dieän cho nhieàu phöông thöùc". III/ Toång quan veà ngoân ngöõ laäp trình höôùng ñoái töôïng C++ Do C++ ñöôïc xaây döïng töø ngoân ngöõ C vôùi lôùp, neân moïi phaàn töû cuûa C ñeàu ñöôïc chöùa trong C++ . Caùc haøm caên baûn cuûa C++ ñeàu chöùa trong thö vieän iostream.h 1/ Xuaát/Nhaäp trong C++ (Console I/O) Töø khoaù cout, cin laø caùc stream ñöôïc ñònh nghiaõ tröôùc trong iostream.h, töï ñoäng lieân keát vôùi console khi chöông trình C++ baét ñaàu chaïy. cout töông ñöông vôùi stdout, vaø cin töông ñöông vôùi stdin trong ngoân ngöõ C. Cuù phaùp cout > variable ; // nhaäp moät giaù trò töø baøn phím vaøo bieán variable vôùi > toaùn töû nhaäp expression bieåu thöùc C++ baát kyø variable bieán Ví duï 1.1
  10. Chöông 1 Toång quan veà Laäp trình höôùng ñoái töôïng 10 #include int main() { int i = 10, j = 20; double d = 99.101; cout
  11. Chöông 1 Toång quan veà Laäp trình höôùng ñoái töôïng 11 int main() { int i; float f; char s[80]; cout > i >> f >> s; cout
  12. Chöông 1 Toång quan veà Laäp trình höôùng ñoái töôïng 12 #include int main() { int num; // this is a C++, single-line comment // read the number cout > num; // see if even or odd if((num%2)==0) cout
  13. Chöông 1 Toång quan veà Laäp trình höôùng ñoái töôïng 13 • ñaït ñöôïc tính ña daïng thôøi gian bieân dòch. Ví duï 1.7 Cuøng soá ñoái soá. Trình bieân dòch seõ choïn phieân baûn thích hôïp cuûa haøm ñeå goïi. #include // Overload abs() three ways int abs(int n) ; long abs(long n) ; double abs(double n) ; int main() { cout
  14. Chöông 1 Toång quan veà Laäp trình höôùng ñoái töôïng 14 { cout
  15. Chöông 1 Toång quan veà Laäp trình höôùng ñoái töôïng 15 // This is incorrect and will not compile. int f1(int a); double f1(int a); int main() { f1(10); // which function does the compiler call??? return 0; } . . . 4/ Caùc töø khoaù (keywords) trong C++ Ngoaøi caùc töø khoaùduøng trong ngoân ngöõ C, ANSI C++ söû duïng caùc töø khoaù thöôøng duøng nhö sau : asm delete new protected throw ... bool false operator public true ... catch friend overload template try ... class inline private this virtual ... YÙ nghiaõ cuûa chuùng seõ ñöôïc laàn löôït giaûi thích vaø minh hoaï trong caùc chöông sau cuûa baøi giaûng.

CÓ THỂ BẠN MUỐN DOWNLOAD

Đồng bộ tài khoản