Kĩ thuật lập trình - Chương 9: Thừa kế

Tài liệu Kĩ thuật lập trình - Chương 9: Thừa kế: CHƯƠNG 9: THỪA KẾMục tiêuGiúp sinh viên hiểu sâu hơn về tính Thừa kế trong lập trình HĐT, cách định nghĩa lớp thừa kế và các thành phần liên quan ...Nội dungKhái niệmĐịnh nghĩa lớp dẫn xuấtCác thành phần thừa kếPhạm vi truy nhập các thành phần của lớp cơ sở Lớp dẫn xuất là lớp được xây dựng bằng việc thừa kế từ một lớp khác. Lớp được thừa kế gọi là lớp cơ sở. Một lớp có thể là dẫn xuất từ một hoặc nhiều lớp cơ sở nhưng cũng có thể là lớp cơ sở để xây dựng các lớp dẫn xuất.Ví dụ: Lớp B là lớp dẫn xuất của lớp A nhưng cũng có thể là lớp cơ sở của lớp C.Một lớp nào đó có thể được dẫn xuất từ nhiều lớp cơ sở.Khái niệmNhận xét: Một lớp dẫn xuất ngoài các thành phần của riêng nó còn được thừa kế tất cả các thành phần của các lớp cơ sở liên quan.Khái niệmCú pháp: class Tên_lớp dẫn xuất: public/ private lớp_cơ sở{ khai báo các thuộc tính public: khai báo, định nghĩa các phương thức};Trong đó: Từ khóa public hoặc private cho biết lớp dẫn xuất thừa kế từ lớp cơ sở theo kiểu public hoặc private. ...

ppt15 trang | Chia sẻ: Khủng Long | Lượt xem: 1214 | Lượt tải: 0download
Bạn đang xem nội dung tài liệu Kĩ thuật lập trình - Chương 9: Thừa kế, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
CHƯƠNG 9: THỪA KẾMục tiêuGiúp sinh viên hiểu sâu hơn về tính Thừa kế trong lập trình HĐT, cách định nghĩa lớp thừa kế và các thành phần liên quan ...Nội dungKhái niệmĐịnh nghĩa lớp dẫn xuấtCác thành phần thừa kếPhạm vi truy nhập các thành phần của lớp cơ sở Lớp dẫn xuất là lớp được xây dựng bằng việc thừa kế từ một lớp khác. Lớp được thừa kế gọi là lớp cơ sở. Một lớp có thể là dẫn xuất từ một hoặc nhiều lớp cơ sở nhưng cũng có thể là lớp cơ sở để xây dựng các lớp dẫn xuất.Ví dụ: Lớp B là lớp dẫn xuất của lớp A nhưng cũng có thể là lớp cơ sở của lớp C.Một lớp nào đó có thể được dẫn xuất từ nhiều lớp cơ sở.Khái niệmNhận xét: Một lớp dẫn xuất ngoài các thành phần của riêng nó còn được thừa kế tất cả các thành phần của các lớp cơ sở liên quan.Khái niệmCú pháp: class Tên_lớp dẫn xuất: public/ private lớp_cơ sở{ khai báo các thuộc tính public: khai báo, định nghĩa các phương thức};Trong đó: Từ khóa public hoặc private cho biết lớp dẫn xuất thừa kế từ lớp cơ sở theo kiểu public hoặc private. Nếu không nêu rõ public hay private thì ngầm định là private.Định nghĩa lớp dẫn xuất Nếu kế thừa theo dạng public thì tất cả các thành phần public của lớp cơ sở cũng là thành phần public của lớp dẫn xuất. Nếu kế thừa theo dạng private thì tất cả các thành phần public của lớp cơ sở sẽ là thành phần private của lớp dẫn xuất.Định nghĩa lớp dẫn xuất Thừa kế dữ liệu: Có nghĩa là các thuộc tính của lớp cơ sở được thừa kế trong lớp dẫn xuất. Lúc này, thuộc tính của lớp dẫn xuất = thuộc tính lớp cơ sở + thuộc tính riêng.- Tuy nhiên, trong lớp dẫn xuất không được phép truy nhập đến các thuộc tính private của lớp cơ sở.Ví dụ: Class LOP1{ kdl thuoc_tinh1.1, thuoc_tinh 1.2, ; public: }Các thành phần thừa kếclass LOP2{ kdl thuoc_tinh2.1, thuoc_tinh 2.2, ; public: }Class LOP3: public LOP2, LOP1{ kdl thuoc_tinh1, thuoc_tinh2, ; public:.} Hãy xác định tập thuộc tính của LOP3?Các phương thức của LOP3 được thao tác trên thuộc tính nào?Các thành phần thừa kế Thừa kế phương thức: Trừ hàm tạo, hàm hủy của lớp cơ sở. Tất cả các phương thức của lớp cơ sở đều được thừa kế trong lớp dẫn xuất.Các thành phần thừa kế Các thành phần private của lớp cơ sở không được phép truy nhập trong lớp dẫn xuất. Do đó, nếu muốn truy nhập vào thành phần nào đó trong lớp cơ sở từ lớp dẫn xuất thì ta cần khai báo dưới dạng public hoặc protected. Có sự khác nhau giữa public và protected.Nếu thành phần được khai báo bởi public thì được truy nhập bất cứ đâu trong chương trình. Còn khai báo bằng protected thì chỉ được truy nhập trong lớp cơ sở và lớp dẫn xuất trực tiếp.Phạm vi truy nhập đến các thành phần của lớp cơ sở Để phân biệt được các thành phần của các lớp, ta cần sử dụng tên lớp + toán tử dẫn xuất :: đặt trước tên thành phần.Ví dụ:Giả sử ta có lớp C kế thừa từ 2 lớp A và BKhi đó:C h; khai báo đối tượng thuộc lớp Ch.C::n là thuộc tính n được khai báo trong Ch.A::n là thuộc tính n được khai báo trong Ah.A::pthuc() là phương thức trong Ah.B::pthuc() là phương thức trong BSử dụng các thành phần của lớp dẫn xuất- Xây dựng lớp HCN Gồm các thuộc tính: d, r Các phương thức nhập: nhapdl(), dientich(), chuvi()=> Xây dựng lớp HHOPCN kế thừa từ lớp HCN. Khai báo một đối tượng HHOPCN, hiển thị ra màn hình chuvi, diện tích đáy, diện tích toàn phần và thể tích của nó.Ví dụ Với các thuộc tính khai báo trong lớp dẫn xuất ta sử dụng lệnh gán như thông thường. Các thành phần kiểu đối tượng. Để khởi gán giá trị cho các đối tượng này cần sử dụng hàm tạo của lớp tương ứng. Các thuộc tính kế thừa từ lớp cơ sở. Để khởi gán cho các thuộc tính này cần sử dụng hàm tạo của lớp cơ sở.Cách xây dựng hàm tạo của lớp dẫn xuấtVí dụ:Ta có lớp A:class A{ double a; public: A(double x) { a=x; } void in() { cout<<"a="<<a<<endl; }};Cách xây dựng hàm tạo của lớp dẫn xuấtLớp B:class B{ double b; public: B(double x) { b=x; } void in() { cout<<"b="<<b<<endl; }};Yêu cầu:Định nghĩa lớp C kế thừa từ lớp B, có thuộc tính có kiểu đối tượng của lớp A. Xây dựng hàm tạo và phương thức in() để hiển thị cả a, b, c.Khởi tạo đối tượng thuộc lớp C. Thực hiện phương thức in a, b, c.Cách xây dựng hàm tạo của lớp dẫn xuất- Xây dựng lớp NGUOI gồm thuộc tính: hoten. Các phương thức: nhap(), xuat().+ Xây dựng lớp SINHVIEN kế thừa từ lớp NGUOI và bổ sung các thuộc tính: Masinhvien, d1,d2,d3; các phương thức: nhap(), tinhdiem(), xuat(). Với công thức tính điểm (d1+d2+d3*2)/4+ Xây dựng lớp NHANVIEN kế thừa từ lớp NGUOI và bổ sung các thuộc tính Manhanvien, hesoluong, phucap; Các phương thức: nhap(), tinhluong(), xuat().với công thức tính lương: 830*hesoluong+phucapBài tập thực hành

Các file đính kèm theo tài liệu này:

  • ppttailieu.ppt