intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng môn học Lập trình hướng đối tượng - Chương 2: Đối tượng và lớp

Chia sẻ: Ngocnga Ngocnga | Ngày: | Loại File: PDF | Số trang:120

64
lượt xem
6
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bài giảng Lập trình hướng đối tượng - Chương 2 trang bị cho người học những kiến về đối tượng và lớp. Các nội dung chính trong chương này gồm có: Đối tượng và lớp, cài đặt lớp trong C++, thiết lập và huỷ bỏ đối tượng, giao diện và chi tiết cài đặt, các nguyên tắc xây dựng lớp, một số ví dụ về lớp. Mời các bạn cùng tham khảo.

Chủ đề:
Lưu

Nội dung Text: Bài giảng môn học Lập trình hướng đối tượng - Chương 2: Đối tượng và lớp

  1. Laäp Trình Höôùng Ñoái Töôïng 45 LT+30TH
  2. Chöông 2 – Ñoái töôïng vaø Lôùp 1. Ñoái töôïng vaø lôùp 2. Caøi ñaët lôùp trong C++ 3. Thieát laäp vaø huyû boû ñoái töôïng 4. Giao dieän vaø chi tieát caøi ñaët 5. Caùc nguyeân taéc xaây döïng lôùp 6. Moät soá ví duï veà lôùp
  3. 2.1. Ñoái töôïng vaø lôùp  Ta ñònh nghóa moät ñoái töôïng laø moät "caùi gì ñoù" coù yù nghóa cho vaán ñeà ta quan taâm. Ñoái töôïng phuïc vuï hai muïc ñích: Giuùp hieåu roõ theá giôùi thöïc vaø cung caáp cô sôû cho vieäc caøi ñaët trong maùy.  Moãi ñoái töôïng coù moät neùt nhaän daïng ñeå phaân bieät noù vôùi caùc ñoái töôïng khaùc. Neùt nhaän daïng mang yù nghóa caùc ñoái töôïng ñöôïc phaân bieät vôùi nhau do söï toàn taïi voán coù cuûa chuùng chöù khoâng phaûi caùc tính chaát maø chuùng coù. Chöông 2. Lớp 3
  4. Ñoái töôïng vaø lôùp  Caùc ñoái töôïng coù caùc ñaëc tính töông töï nhau ñöôïc gom chung laïi thaønh lôùp ñoái töôïng. Ví duï Ngöôøi laø moät lôùp ñoái töôïng. Moät lôùp ñoái töôïng ñöôïc ñaëc tröng baèng caùc thuoäc tính, vaø caùc hoaït ñoäng (haønh vi).  Moät thuoäc tính (attribute) laø moät giaù trò döõ lieäu cho moãi ñoái töôïng trong lôùp. Teân, Tuoåi, Caân naëng laø caùc thuoäc tính cuûa Ngöôøi.  Moät thao taùc (operation) laø moät haøm hay moät pheùp bieán ñoåi coù theå aùp duïng vaøo hay aùp duïng bôûi caùc ñoái töôïng trong lôùp. Chöông 2. Lớp 4
  5. Ñoái töôïng vaø lôùp  Cuøng moät thao taùc coù theå ñöôïc aùp duïng cho nhieàu lôùp ñoái töôïng khaùc nhau, moät thao taùc nhö vaäy ñöôïc goïi laø coù tính ña daïng (polymorphism).  Moãi thao taùc treân moãi lôùp ñoái töôïng cuï theå töông öùng vôùi moät caøi ñaët cuï theå khaùc nhau. Moät caøi ñaët nhö vaäy ñöôïc goïi laø moät phöông thöùc (method).  Moät ñoái töôïng cuï theå thuoäc moät lôùp ñöôïc goïi laø moät theå hieän (instance) cuûa lôùp ñoù. Joe Smith, 25 tuoåi, naëng 58kg, laø moät theå hieän cuûa lôùp ngöôøi. Chöông 2. Lớp 5
  6. Sô ñoà ñoái töôïng  Ta duøng sô ñoà ñoái töôïng ñeå moâ taû caùc lôùp ñoái töôïng. Sô ñoà ñoái töôïng bao goàm sô ñoà lôùp vaø sô ñoà theå hieän.  Sô ñoà lôùp moâ taû caùc lôùp ñoái töôïng trong heä thoáng, moät lôùp ñoái töôïng ñöôïc dieãn taû baèng moät hình chöõ nhaät coù 3 phaàn: phaàn ñaàu chæ teân lôùp, phaàn thöù hai moâ taû caùc thuoäc tính vaø phaàn thöù ba moâ taû caùc thao taùc cuûa caùc ñoái töôïng trong lôùp ñoù. Chöông 2. Lớp 6
  7. Sô ñoà lôùp vaø sô ñoà theå hieän Teân lôùp Sinh vieân (Sinh vieân) Hoï teân Nguyeãn Vaên A Naêm sinh 1984 Thuoäc tính Maõ soá 0610234T Ñieåm TB 9.2 Ñi hoïc Thao taùc Ñi thi Phaân loaïi Sô ñoà lôùp Sô ñoà theå hieän Chöông 2. Lớp 7
  8. 2.2. Caùc thaønh phaàn cuûa lôùp  Moät kieåu döõ lieäu laø moät bieåu dieãn cuï theå moät khaùi nieäm trong thöïc teá. Ví duï kieåu int laø moät bieåu dieãn cuï theå cuûa khaùi nieäm soá nguyeân trong toaùn hoïc.  Trong C++, caùc kieåu döõ lieäu coù saün (built-in data types) :int, long, float, double, char... cho pheùp kieåm tra luùc bieân dòch vaø phaùt sinh maõ chöông trình toái öu. Caùc kieåu döõ lieäu naøy cung caáp moät giao dieän töï nhieân ñoäc laäp vôùi phaàn caøi ñaët. Chöông 2. Lớp 8
  9. 2.2. Caùc thaønh phaàn cuûa lôùp  Lôùp trong C++ laø caøi ñaët cuûa kieåu döõ lieäu tröøu töôïng do ngöôøi söû duïng ñònh nghóa, cho pheùp keát hôïp döõ lieäu, caùc pheùp toaùn, caùc haøm lieân quan ñeå taïo ra moät ñôn vò chöông trình duy nhaát. Caùc lôùp naøy coù ñaày ñuû öu ñieåm vaø tieän lôïi nhö caùc kieåu döõ lieäu noäi taïi. Lôùp taùch rôøi phaàn giao dieän (chæ lieân quan vôùi ngöôøi söû duïng) vaø phaàn caøi ñaët lôùp.  Lôùp trong C++ ñöôïc caøi ñaët söû duïng töø khoaù struct vaø class. Chöông 2. Lớp 9
  10. Ví duï so saùnh: Xaây döïng kieåu döõ lieäu stack. 1. Caùch tieáp caän coå ñieån: // Stack1.cpp : //Dung cau truc va ham toan cuc #include typedef int bool; typedef int Item; const bool false = 0, true = 1; struct Stack { Item *st, *top; int size; }; Chöông 2. Lớp 10
  11. Ví duï so saùnh (tt) void StackInit(Stack *ps, int sz) { ps->st = ps->top = new Item[ps->size=sz]; } void StackCleanUp(Stack *ps) { delete [] ps->st; } bool StackFull(Stack *ps) { return (ps->top - ps->st >= ps->size); } Chöông 2. Lớp 11
  12. Ví duï so saùnh (tt) bool StackEmpty(Stack *ps) { return (ps->top st); } bool StackPush(Stack *ps, Item x) { if (StackFull(ps)) return false; *ps->top++ = x; return true; } Chöông 2. Lớp 12
  13. Ví duï so saùnh (tt) bool StackPop(Stack *ps, Item *px) { if (StackEmpty(ps)) return false; *px = *--ps->top; return true; } Chöông 2. Lớp 13
  14. Ví duï so saùnh (tt) void XuatHe16(long n) { static char hTab[] = “0123456789ABCDEF”; Stack s; StackInit(&s,8); int x; do { StackPush(&s, n%16); n /= 16; } while(n); while(StackPop(&s,&x)) cout
  15. Ví duï so saùnh (tt) Nhaän xeùt:  Giaûi quyeát ñöôïc vaán ñeà.  Khai baùo caáu truùc döõ lieäu naèm rieâng, caùc haøm xöû lyù döõ lieäu naèm rieâng ôû moät nôi khaùc. Do ñoù khoù theo doõi quaûn lyù khi heä thoáng lôùn. Vì vaäy khoù baûo trì.  Moïi thao taùc ñeàu coù tham soá ñaàu tieân laø con troû ñeán ñoái töôïng caàn thao taùc. Tö töôûng theå hieän ôû ñaây laø haøm hay thuû tuïc ñoùng vai troø troïng taâm. Ñoái töôïng ñöôïc gôûi ñeán cho haøm xöû lyù.  Trình töï söû duïng qua caùc böôùc: Khôûi ñoäng, söû duïng thöïc söï, doïn deïp. Chöông 2. Lớp 15
  16. Ví duï so saùnh (tt) 2. Caùch tieáp caän duøng haøm thaønh phaàn: //... struct Stack { Item *st, *top; int size; void Init(int sz) {st = top = new Item[size=sz];} void CleanUp() {if (st) delete [] st;} bool Full() const {return (top - st >= size);} bool Empty() const {return (top
  17. Ví duï so saùnh (tt) bool Stack::Push(Item x) { if (Full()) return false; *top++ = x; return true; } bool Stack::Pop(Item *px) { if (Empty()) return false; *px = *--top; return true; } Chöông 2. Lớp 17
  18. Ví duï so saùnh (tt) void XuatHe16(long n) { static char hTab[] = “0123456789ABCDEF”; Stack s; s.Init(8); int x; do { s.Push(n%16); n /= 16; } while(n); while(s.Pop(&x)) cout
  19. Ví duï so saùnh (tt) Nhaän xeùt:  Giaûi quyeát ñöôïc vaán ñeà.  Döõ lieäu vaø caùc haøm xöû lyù döõ lieäu ñöôïc gom vaøo moät choã beân trong caáu truùc. Do ñoù deã theo doõi quaûn lyù, deã baûo trì naâng caáp.  Caùc thao taùc ñeàu bôùt ñi moät tham soá so vôùi caùch tieáp caän coå ñieån. Vì vaäy vieäc laäp trình goïn hôn. Tö töôûng theå hieän ôû ñaây laø ñoái töôïng ñoùng vai troø troïng taâm. Ñoái töôïng thöïc hieän thao taùc treân chính noù.  Trình töï söû duïng qua caùc böôùc: Khôûi ñoäng, söû duïng thöïc söï, doïn deïp. Chöông 2. Lớp 19
  20. 2.2.1 Caùc haøm thaønh phaàn.  Laø haøm ñöôïc khai baùo trong lôùp. Haøm thaønh phaàn coù theå ñöôïc ñònh nghóa beân trong hoaëc beân ngoaøi lôùp.  Haøm thaønh phaàn coù nghi thöùc giao tieáp gioáng vôùi caùc haøm bình thöôøng khaùc: coù teân, danh saùch tham soá, giaù trò traû veà.  Goïi haøm thaønh phaàn baèng pheùp toaùn daáu chaám (.) hoaëc daáu muõi teân (->). Stack s, *ps = &s; s.Init(10); for (int i = 0; i < 20; i++) ps->Push(i); Chöông 2. Lớp 20
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2