Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 28 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
28
Dung lượng
578,39 KB
Nội dung
CH ƯƠ NG CH ƯƠ NG 7 TH Ừ A K Ế TH Ừ A K Ế 1 GV. Võ Hồng Bảo Châu OOP-CHƯƠNG 7-THỪA KẾ MỤC TIÊU y S ử d ụ n g p hư ơ n g th ứ c t ự th ự c hi ệ n tron g các l ớ p dẫn 2 ụ gp g ự ự ệ g p xuất. y Xây dựng các lớp mới thừa kế từ lớp đã có y Lớp có các thành viên là lớp khác GV. Võ Hồng Bảo Châu OOP-CHƯƠNG 7-THỪA KẾ NỘI DUNG CHI TIẾT y KHÁI NI Ệ M TÍNH TH Ừ A K Ế 3 Ệ y LOẠI LỚP THỪA KẾ { THỪA KẾ ĐƠN { THỪA KẾ BỘI y CÁC KIỂU THUỘC TÍNH KẾ THỪA Ứ Ế Ậ À Ủ Ỏ y PHƯƠNG TH Ứ C THI Ế T L Ậ P V À H Ủ Y B Ỏ GV. Võ Hồng Bảo Châu OOP-CHƯƠNG 7-THỪA KẾ KHÁI NiỆM TÍNH THỪA KẾ y T ạ o ra l ớ p m ớ i t ừ l ớ p đã có 4 ạ p p y Sử dụng lại những kết quả đã có y T ạ o ra l ớ p th ừ a k ế còn đ ư ợ c g ọ i: ạ p ợ g ọ { Mở rộng (extend) lớp đã có, { Hoặc đặc tả lại (specification) ế y L ớ p m ớ i đ ư ợ c tạo ra t ừ l ớ p đã có gọi là l ớ p th ừ a k ế (inheritance class) hay lớp dẫn xuất (derived class) L ớ đ ể t l ớ ớ i i là l ớ ở (b d l ) y L ớ p đ ể t ạo ra l ớ p m ớ i gọ i là l ớ p c ơ s ở (b ase d c l ass ) hay lớp cha (super class) GV. Võ Hồng Bảo Châu OOP-CHƯƠNG 7-THỪA KẾ class PERSON Để được cái tương đương class STUDENT 5 ID_Num Name YearOfBirth class PERSON ID_Num Name YearOfBirth class STUDENT th ừ a LỚP CƠ SỞ (LỚP CHA) YearOfBirth Address getID_Num() setID_Num(newID) YearOfBirth Address getID_Num() setID_Num(newID) th ừ a kế class STUDENT quan hệ “là 1” RollNum Score getScore() tính chất L Ớ P RollNum Score getScore() setSore(newScore) getScore() setSore(newScore) riêng L Ớ P DẪN XuẤT (LỚP setSore(newScore) Con = Cha + một tí CON) GV. Võ Hồng Bảo Châu OOP-CHƯƠNG 7-THỪA KẾ LOẠI LỚP THỪA KẾ y Thừa kế đơn (single ẫ ấ y Thừa kế bội (multiple ẫ ấ 6 inheritance): Tạo ra lớp d ẫ n xu ấ t chỉ từ một lớp cơ sở inheritance): Lớp d ẫ n xu ấ t được tạo ra từ hơn 1 lớp cơ sở A A A B A B B B C C C A B C GV. Võ Hồng Bảo Châu OOP-CHƯƠNG 7-THỪA KẾ THỪA KẾ ĐƠN class Lớp cơ s ở { 7 // }; class lớp dẫn xuất:kiểu kế thừa Lớp cơ sở{ // } GV. Võ Hồng Bảo Châu OOP-CHƯƠNG 7-THỪA KẾ VÍ DỤ LỚP point 8 LỚP point Dữ liệu: toại độ (x, y) Hành vi: Xuất tọa độ ra màn hình point LỚP coloredpoint Dữ liệu: toại độ (x, y),màu Hành vi: Xuất tọa độ và màu ra màn hình coloredpoint GV. Võ Hồng Bảo Châu OOP-CHƯƠNG 7-THỪA KẾ Ví dụ class point{ float x,y; public: Kiểu thừa kế public: point(float ox,float oy){x=ox;y=oy;} point(point &p){x=p.x;y=p.y;} void display(){ 9 Lớp dẫn xuất (lớp con) Lớp cơ sở (lớp cha) class coloredpoint:public point{ unsigned int color; public: cout<<“Goi ham point::display() \ n”; cout<<“toa do :”<<x<<“;”<<y<<endl; } }; public: coloredpoint():point(){color=0;} coloredpoint(float ox,float oy,unsigned int c):point(ox,oy){ color=c; } }; void main() { Hành vi l } coloredpoint(coloredpoint &p):point(point &b){ color=b.color; } { coloredpoint m; m.display(); m.point::display(); l d i (236) của l ớp con } void display(){ cout<<“ham coloredpoint::display()\n”; point:::display(); //gọi tới hàm cùng tên trong lớp cơ sở cout<< “ mau “ <<color<<endl; co l ore d po i nt n (2 , 3 , 6) ; coloredpoint p=n; p. display(); p.point::display(); Hành vi của lớp cha cout<< mau <<color<<endl; } }; p.point::display(); } GV. Võ Hồng Bảo Châu OOP-CHƯƠNG 7-THỪA KẾ LƯU Ý y Lớ p dẫn xu ấ t khôn g th ể tru y c ập đ ế n p hươn g thức thi ế t l ập 10 p g y ập p g ập và phương thức hủy bỏ của lớp cơ sở y Hàm friend (hay lớp friend) của lớp cơ sở không thể ẫ ấ là hàm friend (ha y lớp f riend) của lớp d ẫ n xu ấ t y Các phép toán mới được cài đặt (như là sự định nghĩa hồ hé á )óhể đ ậ bì h h ờ c hồ n g p hé p to á n ) c ó t hể đ ược tru y c ậ p bì n h t h ư ờ n g tron g lớp dẫn xuất. y Vớinhững phép toán trả về kiểucủalớpcơ sở không sử y Với những phép toán trả về kiểu của lớp cơ sở , không sử dụng được trong lớp dẫn xuất. Điều này vẫn đúng cho cả nhữn g p hươn g thức trả v ề dữ li ệ u thu ộ c lớ p cơ sở. gp g ệ ộ p GV. Võ Hồng Bảo Châu OOP-CHƯƠNG 7-THỪA KẾ [...]... maNV, tenNV NV t NV ns, tđ, luongCb OOP-CHƯƠNG 7- THỪA KẾ NhanVienĐĐT trường t ờ chuyênmôn pccv NhanVienNC pcđh GV Võ Hồng Bảo Châu Yêu cầu 27 Sử dụng p ụ g phương thực tự thực hiện trong các lớp dẫn xuất g ự ự ự ệ g p Xây dựng các lớp mới thừa kế từ lớp đã có Lớp có các thành viên là lớp khác p p OOP-CHƯƠNG 7- THỪA KẾ GV Võ Hồng Bảo Châu 28 THANK YOU OOP-CHƯƠNG 7- THỪA KẾ GV Võ Hồng Bảo Châu ... với thừa kế bội, phương thức hủy bỏ của lớp xuất hiện trước được thực hiện sau OOP-CHƯƠNG 7- THỪA KẾ GV Võ Hồng Bảo Châu Chương 9 Hàm xây dựng và hàm hủy 16 Trong thừa kế, khi khởi tạo đối tượng: Hàm xây dựng của lớp cha sẽ được gọi trước Sau đó mới là hàm xây dựng của lớp con Trong thừa kế, khi hủy bỏ đối tượng: Hàm hủy của lớp con sẽ được gọi trước Sau đó mới là hàm hủy của lớp cha A B C OOP-CHƯƠNG 7- THỪA... OOP-CHƯƠNG 7- THỪA KẾ GV Võ Hồng Bảo Châu 12 class Sothuc:Double{ public: // }; main(){ Sothuc a, b(10), c; S th b(10) c = a + b; //bị lỗi } OOP-CHƯƠNG 7- THỪA KẾ GV Võ Hồng Bảo Châu CÁC KIỂU THUỘC TÍNH KẾ THỪA 13 PRIVATE PUBLIC Kiểu thuộc tính trong lớp dẫn xuất ất Kiểu Kiể kế thừa hừ Kiểu truy cập các TP ở lớp cơ sở Public Private Public Public private Private x x protected protected private OOP-CHƯƠNG... OOP-CHƯƠNG 7- THỪA KẾ GV Võ Hồng Bảo Châu Ví dụ, có lớp 20 class Date { int d, m, y; public: Date(int=1,int=1,int=2008); Date(int=1 int=1 int=2008); Date(const string); }; Date newYear (7, 2,2008); Date christmas(“25 December“); OOP-CHƯƠNG 7- THỪA KẾ GV Võ Hồng Bảo Châu Xây dựng lớp dẫn xuất 21 class Person:Date{ char* name; int bd,bm,by; y public: Person(char*,int,int,int); ( , , , ); // }; OOP-CHƯƠNG 7- THỪA... ngày hết hạn dùng> OOP-CHƯƠNG 7- THỪA KẾ GV Võ Hồng Bảo Châu Bài giải Slide 25/54 HangĐienMay < maH,tenH,nsx,gia, tgbh,đa,cs > HangSanhSu < maH,tenH,nsx,gia, lnl > HangThucPham < maH,tenH,nsx,gia, ngsx,nhhd > HangHoa maH tenH nsx gia HangDienMay tgbh đa cx OOP-CHƯƠNG 7- THỪA KẾ HangSanhSu lnl HangThucPham ngsx nghhd GV Võ Hồng Bảo Châu BÀI TẬP TẠI LỚP Slide Phân tích phân cấp thừa kế cho các đối tượng... Public private Private x x protected protected private OOP-CHƯƠNG 7- THỪA KẾ GV Võ Hồng Bảo Châu PHƯƠNG THỨC THIẾT LẬP 14 Phương thức thiết lập của lớp cơ sở thực hiện trước g ập p ự ệ phương thức thiết lập của lớp dẫn xuất Đối với thừa kế bội, phương thức thiết lập của lớp cơ sở xuất hiện trước được thực hiện trước ấ OOP-CHƯƠNG 7- THỪA KẾ GV Võ Hồng Bảo Châu PHƯƠNG THỨC HỦY BỎ 15 Phương thức hủy bỏ của... hấ i á lớp, tách tập á h giao này để xây dựng lớp cha (3) Đặt 1 tên gọi có ý nghĩa cho lớp cha (4) Phần còn lại sau khi tách ò ạ tập giao là các lớp con OOP-CHƯƠNG 7- THỪA KẾ GV Võ Hồng Bảo Châu Thừa kế - Bài mẫu Slide 24/54 Phân tích phân cấp thừa kế cho các lớp: Hàng điện máy Hàng à h ứ Hà sành sứ < mã hà ã hàng, tê hàng,... “S TWO B(){ t “Second class B\n”;} d l B\ ” } ~TWO_B(){cout . C GV. Võ Hồng Bảo Châu OOP-CHƯƠNG 7- THỪA KẾ THỪA KẾ ĐƠN class Lớp cơ s ở { 7 // }; class lớp dẫn xuất:kiểu kế thừa Lớp cơ sở{ // } GV. Võ Hồng Bảo Châu OOP-CHƯƠNG 7- THỪA KẾ VÍ DỤ LỚP point 8 LỚP . mới thừa kế từ lớp đã có y Lớp có các thành viên là lớp khác GV. Võ Hồng Bảo Châu OOP-CHƯƠNG 7- THỪA KẾ NỘI DUNG CHI TIẾT y KHÁI NI Ệ M TÍNH TH Ừ A K Ế 3 Ệ y LOẠI LỚP THỪA KẾ { THỪA KẾ ĐƠN { THỪA. setSore(newScore) Con = Cha + một tí CON) GV. Võ Hồng Bảo Châu OOP-CHƯƠNG 7- THỪA KẾ LOẠI LỚP THỪA KẾ y Thừa kế đơn (single ẫ ấ y Thừa kế bội (multiple ẫ ấ 6 inheritance): Tạo ra lớp d ẫ n xu ấ t