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

Lập trình hướng đối tượng - Chương 3

Chia sẻ: Đặng Kim Thạch | Ngày: | Loại File: PPT | Số trang:80

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

Tài liệu tham khảo giáo trình Lập trình hướng đối tượng - Chương 3 : Thừa kế

Chủ đề:
Lưu

Nội dung Text: Lập trình hướng đối tượng - Chương 3

  1. Chương 3 THỪA KẾ Lập trình hướng đối tượng – Thừa kế 1
  2. Nội dung chính  Tại sao phải thừa kế ?  Các thuật ngữ  Thừa kế trong C++  Phạm vi truy cập trong các kiểu thừa kế  Đơn thừa kế và đa thừa kế  Sự tương hợp kiểu giữa lớp cơ sở và lớp dẫn xuất  Định nghĩa các hàm thành viên cho các lớp dẫn  xuất  … Lập trình hướng đối tượng – Thừa kế 2
  3. Tài liệu đọc Lập trình hướng đối tượng – Thừa kế 3
  4. Tại sao phải thừa kế ? B àn  G hế và  Lớp Cácđố ượng   it Lớp Tí dùng ạibằng hừa  ế nh  l   t k Làm  hế  để xây  ựng ớp  ới  àn àm   ệc  B àn  n ối t nào    d l m :B l vi và  ă t ? cas   ni  abl l sdi ngt e cas   s l sde k Lập trình hướng đối tượng – Thừa kế 4
  5. Xây dựng lớp mới từ lớp đã có Fur t e niur C hai r Tabl e Lounge D i ng ni Sofa D esk C hai r Tabl e cas   s   i abl l sde k:publct e cas  abl:publcf niur l st e  i ur t e cas   ni  abl:publct e l sdi ngt e  i abl Lập trình hướng đối tượng – Thừa kế 5
  6. Một ví dụ khác (1) class Rectangle{ private: Polygon    int width, length; public:    void set(int w, int l); Rectangle    int area(); Triangle } class Polygon class Triangle{ { private: private:    int width, length;    int width, length; public: public:    void set(int w, int l);    void set(int w, int l);    int area(); } } Lập trình hướng đối tượng – Thừa kế 6
  7. Một ví dụ khác (2) class Polygon Polygon { protected:    int width, length; public:    void set(int w, int l); Rectangle } Triangle class Rectangle{ protected: class Rectangle : public Polygon    int width, length; { public: public: int area();    void set(int w, int l); }    int area(); } Lập trình hướng đối tượng – Thừa kế 7
  8. Một ví dụ khác (3) class Polygon Polygon { protected:    int width, length; public:    void set(int w, int l); Rectangle } Triangle class Triangle{ protected: class Triangle : public Polygon    int width, length; { public: public: int area();    void set(int w, int l); }    int area(); } Lập trình hướng đối tượng – Thừa kế 8
  9. Thừa kế để  Tạo ra mối quan hệ phân cấp giữa các lớp  Khả năng dùng lại phần mềm  Phát triển (mở rộng) các lớp đã có mà không cần  phải sửa hoặc biên dịch lại chúng  Có thể dùng lại code, do đó tiết kiệm thời gian  Giảm lỗi vì không cần biên dịch lại những lớp đã  có  Che giấu thông tin  Các lớp mới không cần biết bên trong các phương  thức của lớp đã có  Nhưng nó vẫn có thể sử dụng chúng  Có thể mở rộng code đã có (không cần viết lại) Lập trình hướng đối tượng – Thừa kế 9
  10. Các thuật ngữ  Lớp cơ sở (trong C++)/Lớp cha (trong Java)  Lớp đã có mà các lớp mới có thể thừa kế từ nó  Lớp dẫn xuất (trong C++)/Lớp con (trong Java)  Lớp mới được tạo ra bằng thừa kế từ lớp đã có  Lớp cơ sở được gọi là tổng quát hóa của lớp dẫn  xuất  Lớp dẫn xuất được gọi là chuyên biệt hóa của lớp  cơ sở  Một lớp dẫn xuất có thể là lớp cơ sở của các lớp  dẫn xuất khác: hình thành phân cấp lớp Lập trình hướng đối tượng – Thừa kế 10
  11. Các thuật ngữ (tt)  Lớp cơ sở trực tiếp: là lớp cơ sở mà từ nó một lớp  dẫn xuất được thừa kế một cách tường minh  Lớp cơ sở gián tiếp: là lớp được thừa kế từ  2  hoặc nhiều mức phía trên trong phân cấp lớp  Đơn thừa kế: một lớp được dẫn xuất từ một lớp cơ  sở (trong Java chỉ có đơn thừa kế)  Đa thừa kế: cho phép một lớp có thể được thừa  kế từ nhiều lớp (trong C++ cho phép đơn thừa kế  và đa thừa kế) Lập trình hướng đối tượng – Thừa kế 11
  12. Ví dụ: Lớp cơ sở, lớp dẫn xuất, … CommunityMember Single Employee Student Alumnus inheritance Single Faculty Staff inheritance Administrator Teacher Single inheritance Multiple AdministratorTeacher inheritance Lập trình hướng đối tượng – Thừa kế 12
  13. Biểu diễn thừa kế bằng UML Person Name: String Address: Address DOB: Date Student Staff Student Number: Integer Staff Number: Integer Program: ProgramCode StartDate: Date Faculty: FacultyCode Classification: Integer Permanent Casual AnnualSalary: Money PayRate: Money AccruedLeave: Integer ContractHours: Integer ContractEnd: Date Lập trình hướng đối tượng – Thừa kế 13
  14. Phân biệt mối quan hệ is­a và has­a  Is­a hoặc a kind of: thừa kế  Lớp dẫn xuất là một lớp cơ sở  Car is a Vehicle  Has­a: chứa/có  Lớp có một thành viên  Car has a Engine Lập trình hướng đối tượng – Thừa kế 14
  15. Ví dụ: is­a/a kind of class Telephone Các lớp cơ sở - tổng quát class SpeakerTelephone - ít thành viên - kích thước đối tượng nhỏ hơn class WirelessTelephone Các lớp dẫn xuất class VoiceMailTelephone - cụ thể Inheritance is called - nhiều thành viên “is-a” relationship. (ngược với “has-a” relationship) hơn - kích thước đối Ex. “WirelessTelephone tượng lớn hơn is a kind of Telephone.” class SpeakerRedialTelephone Lập trình hướng đối tượng – Thừa kế 15
  16. Những gì được thừa kế ? D ẫn  ấtt   ơ  ở xu  ừ c s Thành  ên  vi Thành  ên  vi A A Thành  ên  vi Thành  ên  vi B B D ẫn  ấtt xu  ừ Thành  ên  vi Thành  ên  vi C C Thành  ên  vi D Lớp  ơ  ở c s Được ạo r t t ong ớp  ẫn  ất Lớp  ẫn  ất l d xu d xu Lập trình hướng đối tượng – Thừa kế 16
  17. Thừa kế trong C++ •M ộtl p  t ể   ớ có h được  ẫn  ấtt  ớp  ã  t d xu  ừ l đ có heo  ạng: d cl ass  ass_nam e:( cl  publc| ot ed| i e)base_nam e i pr ect pr vat   { m em ber decl atons   ar i }; •Từ  pr ect cho  ếtche  ấu hông i ở ớp  ơ  ở, khóa  ot ed  bi   gi t tn  l c s chỉ  các hành  ên  ủa ớp  ẫn  ấtm ớicó hể r cập có  t vi c l d xu     t t uy  được,còn    các ớp  l khác hông i l pr vat t tn à  i e. Lập trình hướng đối tượng – Thừa kế 17
  18. Truy cập thành viên của lớp Others Base Pri e vat Publc i Prot ed ect deri ved Fri end Lập trình hướng đối tượng – Thừa kế 18
  19. Truy cập các thành viên được thừa kế  Việc truy cập các thành viên được thừa kế của  lớp dẫn xuất phụ thuộc nhiều vào  các thành viên  đó được khai báo public, private hoặc protected  trong lớp dẫn xuất  Ngoài ra, việc truy cập các thành viên được thừa  kế của lớp dẫn xuất còn phụ thuộc vào loại thừa  kế: public, private hoặc protected. Điều này được  xác định trong định nghĩa của lớp dẫn xuất Về nguyên tắc, tất cả các thành viên của lớp cơ sở đều  được thừa kế trong lớp dẫn xuất, nhưng chỉ khác ở  khả năng truy cập mà thôi Lập trình hướng đối tượng – Thừa kế 19
  20. Thừa kế public  Các thành viên public của lớp cơ sở trở thành các  thành viên public của lớp dẫn xuất  Các thành viên protected của lớp cơ sở trở thành  các thành viên protected của lớp dẫn xuất; và  Các thành viên private của lớp cơ sở sẽ không  thể được truy cập bên trong lớp dẫn xuất  Lập trình hướng đối tượng – Thừa kế 20
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

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