Lập trình hướng đối tượng - Chương 3
lượt xem 73
download
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ế
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Lập trình hướng đối tượng - Chương 3
- Chương 3 THỪA KẾ Lập trình hướng đối tượng – Thừa kế 1
- 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
- Tài liệu đọc Lập trình hướng đối tượng – Thừa kế 3
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- Phân biệt mối quan hệ isa và hasa Isa 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 Hasa: 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
- Ví dụ: isa/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
- 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
- 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
- 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
- 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
- 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
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Lập trình hướng đối tượng với C++ part 3
35 p | 362 | 179
-
Lập trình hướng đối tượng_ Chapter 3
32 p | 386 | 175
-
Đề cương lập trình hướng đối tượng
2 p | 496 | 153
-
Tự học lập trình hướng đối tượng và lập trình cơ sở dữ liệu C part 3
40 p | 325 | 140
-
Lập trình hướng đối tượng_ Chapter 3 (cont)
19 p | 252 | 111
-
Lập trình hướng đối tượng trong java (Phần 3)
6 p | 152 | 38
-
Bài giảng Phương pháp lập trình hướng đối tượng: Bài tập 3
6 p | 112 | 6
-
Bài giảng Lập trình hướng đối tượng: Quan hệ giữa các lớp
57 p | 64 | 5
-
Giới thiệu môn học Lập trình hướng đối tượng - Ths. Nguyễn Thị Khiêm Hòa
8 p | 75 | 5
-
Bài giảng Lập trình hướng đối tượng - Bài 3: Xây dựng lớp
71 p | 52 | 5
-
Bài giảng Lập trình hướng đối tượng: Bài 3 - Trừu tượng hóa và đóng gói
44 p | 11 | 4
-
Bài giảng Lập trình hướng đối tượng: Bài 3 - Nguyễn Khanh Văn
0 p | 72 | 4
-
Bài giảng Lập trình hướng đối tượng: Bài 3, 4 - Phạm Thị Bích Vân
43 p | 61 | 4
-
Bài giảng Lập trình hướng đối tượng: Bài 3 - ThS. Trịnh Thành Trung
71 p | 33 | 3
-
Bài giảng Phương pháp lập trình hướng đối tượng: Bài tập 3 - Trần Phước Tuấn
6 p | 92 | 3
-
Bài giảng Lập trình hướng đối tượng - Bài 5: Kết tập và kế thừa
0 p | 74 | 3
-
Bài giảng Lập trình hướng đối tượng - Bài 3: Đóng gói và xây dựng lớp, tạo và sử dụng đối tượng
0 p | 72 | 3
-
Bài giảng Nguyên lý lập trình hướng đối tượng: Bài 3 - TS. Lý Anh Tuấn
43 p | 22 | 2
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn