
Bài giảng Lập trình nâng cao: Bài 13 - Hoàng Thị Điệp
Thông tin tài liệu:
Nội dung trích xuất từ tài liệu:
Bài giảng Lập trình nâng cao: Bài 13 - Hoàng Thị ĐiệpBài 13: Tính thừa kế Giảng viên: Hoàng Thị ĐiệpKhoa Công nghệ Thông tin – ĐH Công Nghệ Thuật ngữ• inheritance: tính thừa kế• derive: dẫn xuất / thừa kế• base/parent class: lớp cơ sở / lớp cha• derived/child class: lớp dẫn xuất / lớp con• override: che khuất (khác overload) – function overriding khác function overloading• multiple inheritance: đa thừa kếDTH INT2202 2 Chapter 14 InheritanceCopyright © 2010 Pearson Addison-Wesley.All rights reserved Day 12 InheritanceDTH INT2202 4 Mục tiêu bài học• Căn bản về tính thừa kế – Lớp dẫn xuất và hàm kiến tạo – Từ khóa protected – Định nghĩa lại hàm thành viên – Những hàm không được thừa kế• Lập trình tính thừa kế – Toán t ử gán và hàm kiến tạo sao chép – Hàm hủy trong lớp dẫn xuất – Đa thừa kếDTH INT2202 5 Giới thiệu tính thừa kế• Lập trình hướng đối tượng – Kĩ thuật lập trình mạnh – Cung cấp cơ chế trừu tượng gọi là thừa kế• Trước tiên định nghĩa dạng tổng quát của lớp – Sau đó định nghĩa dạng cụ thể thừa kế các thuộc tính của dạng tổng quát – Và bổ sung/chỉnh sửa tính năng cho phù hợp với dạng cụ thểDTH INT2202 6 Căn bản về tính thừa kế• Một lớp mới thừa kế từ một lớp khác• Lớp cơ sở – là lớp “tổng quát” để các lớp khác dẫn xuất• Lớp dẫn xuất – là lớp mới – tự động sao từ lớp cơ sở: • các biến thành viên • các hàm thành viên – có thể thêm hàm và biến thành viên của riêng nóDTH INT2202 7 Lớp dẫn xuất• Xét ví dụ: lớp biểu diễn động vật Mammal• Lớp này bao gồm: chó (Dog), mèo (Cat), ngựa (Horse), …• Mỗi loài là một tập con của lớp động vậtDTH INT2202 8 Lớp cơ sở• Một con vật phải thuộc một loài nào đó trong lớp động vật• Động vật nói chung – có tuổi đời (itsAge) – có cân nặng (itsWeight) – có các khả năng cơ bản như kêu (speak), ngủ (sleep)• Như vậy lớp tổng quát Mammal có thể chứa các thuộc tính chung cho tất cả động vậtDTH INT2202 9 Lớp Mammal• Nhiều hàm/biến thành viên của lớp động vật Mammal có thể sử dụng cho tất cả các loài – Hàm truy cập biến thành viên – Hàm biến đổi biến thành viên – Các biến • tuổi đời • cân nặng• Tuy nhiên ta sẽ không tạo đối tượng thuộc lớp MammalDTH INT2202 10 Lớp Mammal• Xét hàm speak() : – Nó sẽ được “định nghĩa lại” trong các lớp dẫn xuất – Để những loài khác nhau có tiếng kêu khác nhau • Dog: “Ruff ruff woof woof” • Cat: “Meow meow meow” • Horse: “Winnie winnie” • Pig: “Oink oink” – Hàm speak() vô nghĩa khi ta chưa biết con vật thuộc loài nào • Chưa biết nó thuộc loài nào thì không biết tiếng kêu sẽ như thế nào – Do đó hàm speak() của Mammal chỉ in ra màn hình xâu “Mammal sound!”DTH INT2202 11 Dẫn xuất từ lớp Mammal• Các lớp dẫn xuất từ lớp Mammal: – sẽ tự động có tất cả các biến/hàm thành viên của Mammal• Lớp dẫn xuất vì thế được hiểu là “thừa kế” các thành viên từ lớp cơ sở• Sau đó có thể ĐỊNH NGHĨA LẠI các thành viên đã có sẵn hoặc THÊM thành viên mớiDTH INT2202 12 Giao diện của lớp Mammal class Mammal{ public: // ham kien tao, ham huy Mammal(): itsAge(2), itsWeight(6){} ~Mammal(){} // ham truy cap bien thanh vien int getAge()const { return itsAge; } void setAge(int age) { itsAge = age; } int getWeight() const { return itsWeight; } void setWeight(int weight) { itsWeight = weight; } // ham khac void speak()const { cout Giao diện của lớp Dog enum BREED {YORKIE, CAIRN, DANDIE, SHETLAND, DOBERMAN, LAB}; // Lop Dog mo phong cho class Dog: public Mammal{ public: // ham kien tao, ham huy Dog(): itsBreed(YORKIE){} ~Dog(){} // ham truy cap bien thanh vien BREED getBreed() const { return itsBreed; } void setBreed(BREED breed) { itsBreed = breed; } // ham khac void speak()const { cout Giao diện lớp Dog• Nếu chia chương trình thành nhiều tệp – main.cpp, Mammal.h, Mammal.cpp, Dog.h, Dog.cpp – thì bạn cần bổ sung cấu trúc #ifndef – và khai báo các thư viện cần thiết – Trong main.cpp, khai báo “Dog.h”• Dòng đầu của lớp Dog: class Dog: public Mammal – xác định nó thừa kế public từ lớp MammalDTH INT2202 15 Các thuộc tính bổ sung của lớp Dog• Giao diện của lớp dẫn xuất chỉ liệt kê những thành viên mới hoặc “cần định nghĩa lại” – vì tất cả những thành viên khác thừa kế từ lớp cơ sở đã được định nghĩa rồi – nghĩa là, mọi con chó đều có itsAge và itsWeight...• Lớp Dog bổ sung: – hàm kiến tạo – biến thành viên itsBreed – hàm thành viên getBreed(), setBreed(), wagTail(), begForFood()DTH INT2202 16 Hàm thành viên được định nghĩa lại trong Dog• Lớp Dog đã định nghĩa lại: – hàm thành viên speak() – phiên bản cài đặt nó trong Dog sẽ “che khuất” phiên bản cài đặt trong Mammal• ...
Tìm kiếm theo từ khóa liên quan:
Lập trình nâng cao Bài giảng Lập trình nâng cao Ngôn ngữ lập trình Ngôn ngữ C++ Tính thừa kế Lập trình tính thừa kếTài liệu có liên quan:
-
Giáo trình Lập trình hướng đối tượng: Phần 2
154 trang 313 0 0 -
Kỹ thuật lập trình trên Visual Basic 2005
148 trang 306 0 0 -
Bài thuyết trình Ngôn ngữ lập trình: Hệ điều hành Window Mobile
30 trang 292 0 0 -
NGÂN HÀNG CÂU HỎI TRẮC NGHIỆM THIẾT KẾ WEB
8 trang 246 0 0 -
Bài giảng Một số hướng nghiên cứu và ứng dụng - Lê Thanh Hương
13 trang 245 0 0 -
Giáo trình Lập trình cơ bản với C++: Phần 1
77 trang 241 0 0 -
Giáo án Tin học lớp 11 (Trọn bộ cả năm)
125 trang 230 1 0 -
Bài tập lập trình Windows dùng C# - Bài thực hành
13 trang 204 0 0 -
Thiết kế mạch logic bằng Verilog - HDL
45 trang 193 0 0 -
Bài giảng Nhập môn về lập trình - Chương 1: Giới thiệu về máy tính và lập trình
30 trang 188 0 0 -
Giáo trình Lập trình C căn bản: Phần 1
64 trang 174 0 0 -
Báo cáo thực tập: Quản lý nhân sự & tiền lương
52 trang 160 0 0 -
Giáo trình nhập môn lập trình - Phần 22
48 trang 143 0 0 -
Giáo trình Lập trình C căn bản - HanoiAptech Computer Education Center
136 trang 141 0 0 -
LUẬN VĂN: ỨNG DỤNG NGÔN NGỮ LẬP TRÌNH RÀNG BUỘC COMET VÀO BÀI TOÁN LẬP THỜI KHÓA BIỂU
43 trang 141 0 0 -
142 trang 134 0 0
-
Giáo trình lập trình hướng đối tượng - Lê Thị Mỹ Hạnh ĐH Đà Nẵng
165 trang 128 0 0 -
Bài giảng Phương pháp lập trình: Chương 9 - GV. Từ Thị Xuân Hiền
36 trang 119 0 0 -
Giáo trình Ngôn ngữ lập trình 2
50 trang 114 0 0 -
Giáo trình Nhập môn lập trình VB6: Phần 2
184 trang 110 0 0