Tài liệu Lập trình hướng đối tượng - Chương 5: Kỹ thuật thừa kế: CHƯƠNG 5: KỸ THUẬT THỪA KẾCài đặt sự thừa kếSử dụng các thành phần của lớp cơ sởĐịnh nghĩa lại các hàm thành phầnTruyền thông tin giữa các hàm thiết lập của lớp dẫn xuất và lớp cơ sởCác loại dẫn xuất khác nhau và sự thay đổi trạng thái của các thành phần lớp cơ sởSự tương thích giữa các đối tượng của lớp dẫn xuất và lớp cơ sởToán từ gán và thừa kếHàm ảo và tính đa hìnhHàm ảo thuần tuý và lớp cơ sở trừu tượngĐa thừa kế và các vấn đề liên quanCHƯƠNG 5: KỸ THUẬT THỪA KẾGIỚI THIỆUThừa kế cho phép ta định nghĩa một lớp mới, gọi là lớp dẫn xuất, từ một lớp đã có, gọi là lớp cơ sở. Lớp dẫn xuất sẽ thừa kế các thành phần (dữ liệu, hàm) của lớp cơ sở, đồng thời thêm các thành phần mới.Thừa kế cho phép không cần phải biên dịch lại các thành phần chương trình vốn đã có trong các lớp cơ sở và hơn thế nữa không cần phải có chương trình nguồn tương ứngCHƯƠNG 5: KỸ THUẬT THỪA KẾGIỚI THIỆUMột ví dụ về sự thừa kếLớp: mặt hàngThuộc tính:TênSố lượng trong khoGiá muaGiá bánCác phương thứcChênh lệch giá mu...
56 trang |
Chia sẻ: Khủng Long | Lượt xem: 1232 | Lượt tải: 0
Bạn đang xem trước 20 trang mẫu tài liệu Lập trình hướng đối tượng - Chương 5: Kỹ thuật thừa kế, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
CHƯƠNG 5: KỸ THUẬT THỪA KẾCài đặt sự thừa kếSử dụng các thành phần của lớp cơ sởĐịnh nghĩa lại các hàm thành phầnTruyền thông tin giữa các hàm thiết lập của lớp dẫn xuất và lớp cơ sởCác loại dẫn xuất khác nhau và sự thay đổi trạng thái của các thành phần lớp cơ sởSự tương thích giữa các đối tượng của lớp dẫn xuất và lớp cơ sởToán từ gán và thừa kếHàm ảo và tính đa hìnhHàm ảo thuần tuý và lớp cơ sở trừu tượngĐa thừa kế và các vấn đề liên quanCHƯƠNG 5: KỸ THUẬT THỪA KẾGIỚI THIỆUThừa kế cho phép ta định nghĩa một lớp mới, gọi là lớp dẫn xuất, từ một lớp đã có, gọi là lớp cơ sở. Lớp dẫn xuất sẽ thừa kế các thành phần (dữ liệu, hàm) của lớp cơ sở, đồng thời thêm các thành phần mới.Thừa kế cho phép không cần phải biên dịch lại các thành phần chương trình vốn đã có trong các lớp cơ sở và hơn thế nữa không cần phải có chương trình nguồn tương ứngCHƯƠNG 5: KỸ THUẬT THỪA KẾGIỚI THIỆUMột ví dụ về sự thừa kếLớp: mặt hàngThuộc tính:TênSố lượng trong khoGiá muaGiá bánCác phương thứcChênh lệch giá mua bánMuaBánLớp: mặt hàng nhập khẩu thừa kế từ lớp mặt hàngThuộc tínhThuế nhập khẩuCác phương thứcchênh lệch giá mua bánLớp: xe gắn máy thừa kế từ lớp mặt hàng nhập khẩuCHƯƠNG 5: KỸ THUẬT THỪA KẾGIỚI THIỆUMột ví dụ về sự thừa kếLớp: xe gắn mày thừa kế từ mặt hàng nhập khẩuThuộc tính:Dung tích xilanhCác phương thứcLớp: hàng điện tử dân dụng thừa kế từ mặt hàngThuộc tínhĐiện ápThời gian bảo hànhCác phương thứcThời gian bảo hành thực tếCHƯƠNG 5: KỸ THUẬT THỪA KẾ1. ĐƠN THỪA KẾLớp dẫn xuất chỉ thừa kế từ một lớp cơ cở#include #include class point { float x,y; public: point() {x = 0; y = 0;} point(float ox, float oy) {x = ox; y = oy; } point(point &p) {x = p.x; y = p.y;} void display() { cout có việc chuyển kiểu ngầm định từ một đối tượng thuộc lớp dẫn xuất sang một đối tượng thuộc lớp cơ sởpoint p;p.display();coloredpointcol pc(2,3,5);pc=p; //phù hợpMột con trỏ đối tượng lớp cơ sở có thể chỉ đến một đối tượng lớp dẫn xuất, còn một con trỏ lớp dẫn xuất không thể nhận địa chỉ của một đối tượng lớp cơ sởCHƯƠNG 5: KỸ THUẬT THỪA KẾ1. ĐƠN THỪA KẾ#include #include class point { float x,y; public: point() {x = 0; y = 0;} point(float ox, float oy) {x = ox; y = oy; } point(point &p) {x = p.x; y = p.y;} void display() { coutdisplay(); là point::display();void main() { clrscr(); point *adp; coloredpoint pc(2,3,5); pc.display(); coutmove(2,3); coutmove(2,3)\n"; pc.display(); adp->display(); getch(); }CHƯƠNG 5: KỸ THUẬT THỪA KẾĐƠN THỪA KẾTương thích giữa con trỏ lớp dẫn xuất và con trỏ lớp cơ sở#include #include class point { float x,y; public: point() {x = 0; y = 0;} point(float ox, float oy) {x = ox; y = oy; } point(point &p) {x = p.x; y = p.y;} void display() { coutdisplay(); gọi tới hàm point::display();void main() { clrscr(); point *adp; coloredpoint pc(2,3,5); pc.display(); coutmove(2,3); coutmove(2,3)\n"; pc.display(); adp->display(); getch(); } CHƯƠNG 5: KỸ THUẬT THỪA KẾĐƠN THỪA KẾTương thích giữa tham chiếu lớp dẫn xuất và tham chiếu lớp cơ sở#include #include class point { float x,y; public: point() {x = 0; y = 0;} point(float ox, float oy) {x = ox; y = oy; } point(point &p) {x = p.x; y = p.y;} void display() { coutdisplay(); gọi tới hàm point::display();void main() { clrscr(); coloredpoint pc(2,3,5); pc.display(); cout#include class point { float x,y; public: float getx() {return x;} float gety() {return y;} point() {x = 0; y = 0;} point(float ox, float oy) {x = ox; y = oy; } point(point &p) {x = p.x; y = p.y;} void display() { cout#include class point { float x,y; public: point() { coutdisplay();\n"; ptr->display(); coutdisplay();\n"; ptr->display(); getch(); }CHƯƠNG 5: KỸ THUẬT THỪA KẾ3. HÀM ẢO VÀ TÍNH ĐA HÌNHTừ khoá virtual có thể đặt trước hay sau tên kiểu dữ liệu nhưng phải trước tên hàm để chỉ rằng là một hàm ảoTuỳ thuộc vào kiểu của đối tượng có địa chỉ chứa trong con trỏ lớp dẫn xuất ptr mà lời gọi hàm ptr->display() sẽ gọi đến phương thức display() của point hay coloredpointCHƯƠNG 5: KỸ THUẬT THỪA KẾ3. HÀM ẢO VÀ TÍNH ĐA HÌNH#include #include class point { float x,y; public: point() { cout#include class point { float x,y; public: point() { cout#include class point { float x,y; public: point() { coutdisplay();\n"; ptr->display(); coutdisplay();\n"; ptr->display(); getch(); }CHƯƠNG 5: KỸ THUẬT THỪA KẾ3. HÀM ẢO VÀ TÍNH ĐA HÌNHKhai báo hàm ảo ở một lớp bất kỳ trong sơ đồ thừa kế#include #include class point { float x,y; public: point() { cout#include class point { float x,y; public: point() { cout#include class point{ float x,y; public: point (float ox,float oy) { coutcontent; current=current->next; } return adel; } int last() {return (current==NULL);} };CHƯƠNG 5: KỸ THUẬT THỪA KẾ4. ĐA THỪA KẾ4.2 Danh sách móc nối đối tượnglist::~list() { element *suiv; current=head; while(current!=NULL) {suiv=current->next;delete current;current=suiv;} }void list::add(void *chose) { element *adel= new element; adel->next =head; adel->content=chose; head=adel; }CHƯƠNG 5: KỸ THUẬT THỪA KẾ4. ĐA THỪA KẾ4.2 Danh sách móc nối đối tượngLớp point#include class point { int x,y; public: point(int abs=0,int ord=0) {x=abs;y=ord;} void display() {cout display();} }CHƯƠNG 5: KỸ THUẬT THỪA KẾ4. ĐA THỪA KẾ4.2 Danh sách móc nối đối tượngLớp mới list_points thừa kế từ list và point, cho phép quản lý danh sách móc nối các đối tượng point như sauclass list_points :public list,public point { public: list_points() {} void display(); }; void list_points::display() { first(); while (!last()) { point *ptr=(point *)prochain();ptr->display();} }
Các file đính kèm theo tài liệu này:
- tailieu.ppt