Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 23 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
23
Dung lượng
727 KB
Nội dung
Lập trình hướng đối tượng 10/01/22 09:38 Object Oriented Programing– Information Systems Department 1 CHƯƠNG IV 10/01/22 09:38 Object Oriented Programing– Information Systems Department 2 Khái niệm Kế thừa: khả cho phép xây dựng lớp mới: Được thừa hưởng thành phần từ hay nhiều lớp có (lớp sở) Trong lớp ta bổ sung thêm thành phần định nghĩa lại thành phần Ví dụ 1: Xây dựng lớp PS1 {ts, ms, nhập, in, tối giản} Lớp PS2 {ts, ms, nhập, in, tối giản, cộng, trừ, nhân chia phân số} Object Oriented Programing– Information Systems Department Khái niệm (tiếp) Ví dụ 2: Yêu cầu xây dựng lớp Lớp NGƯỜI NGƯỜI Dl: ht, ns, gt Lớp SV Pt: nhap(), in() Lớp GV SV Dl: ht, ns, gt Pt: nhap(), in(), xếp loại() Object Oriented Programing– Information Systems Department GV Dl: ht, ns, gt Pt: nhap(), in(), tangluong() Khái niệm (tiếp) Kế thừa tạo mơ hình phân cấp: PS1 PS2 NGƯỜI SV GV Mơ hình kế thừa tạo quan hệ “is a” Ví dụ: đối tượng SV “là một” loại thuộc lớp NGƯỜI Object Oriented Programing– Information Systems Department Khái niệm (tiếp) Các loại kế thừa: PS1 PS2 A B C Kế thừa đơn: có lớp sở Đa kế thừa: có nhiều lớp sở Object Oriented Programing– Information Systems Department Xây dựng lớp dẫn xuất Cú pháp class :[kiểu dẫn xuất] ,[kiểu dẫn xuất] … { // Các thành phần lớp Object Oriented Programing– Information Systems Department Xây dựng lớp dẫn xuất Trong đó: public Kiểu dẫn xuất là: protected private (ngầm định) public: tất public lớp cha pubic lớp private: tất thành phần public lớp cha private lớp Object Oriented Programing– Information Systems Department Quyền truy xuất (1) Quyền truy xuất lớp cha : (2) Kiểu dẫn xuất (1) private protected public private private private private protected private protected protected public private protected public (2) Quyền truy xuất lớp Object Oriented Programing– Information Systems Department Định nghĩa lại quyền truy xuất Để định nghĩa lại: Chỉ cần liệt kê thành phần sau từ khố quyền truy xuất tương ứng : ::; Ví dụ: class A{ private: f1,f2; protected: f3,f4; public: f5,f6; }; class B:A { public: A::f6; }; Kết quả: f1->f5 private, f6 public Object Oriented Programing– Information Systems Department 10 Định nghĩa lại quyền truy xuất Chú ý: Khi định nghĩa lại quyền truy xuất với tp tên bị tác động Chỉ định lại quyền truy xuất theo quyền thành phần lớp cha Nếu lớp sở có nhiều thành phần tên khác quyền truy xuất khơng thể định nghĩa lại Nếu lớp có thành phần tên thành phần lớp che phủ thành phần lớp cha Object Oriented Programing– Information Systems Department 11 Ví dụ: Xây dựng lớp số phức Gồm: phần thực, phần ảo Phương thức: nhập, in Xây dựng lớp SP1 kế thừa lớp SP Bổ sung: +, -, * Hàm main: Nhập số phức a,b Tính in a+b, a*b, modul Object Oriented Programing– Information Systems Department 12 Ví dụ: Xây dựng lớp thí sinh TS Gồm: SBD, sinh, khu vực Phương thức: nhập, in Xây dựng lớp TSA kế thừa lớp TS Bổ sung: điểm toán, lý, hoá, nhập, in Xây dựng lớp TSC kế thừa lớp TS Bổ sung: điểm văn, sử, địa, nhập, in Hàm main: Nhập ds thí sinh, in danh sách khối, in ds trúng tuyển theo khối Object Oriented Programing– Information Systems Department 13 Hàm khởi tạo hàm huỷ a Hàm khởi tạo - Hàm khởi tạo lớp cha không kế thừa - Mỗi đối tượng lớp coi đối tượng lớp cha Do đó: gọi hàm khởi tạo lớp kéo theo gọi hàm khởi tạo lớp cha Thứ tự gọi: Hàm khởi tạo lớp cha Hàm khởi tạo lớp Ví dụ: hàm khởi tạo lớp A, B Object Oriented Programing– Information Systems Department 14 Hàm khởi tạo hàm huỷ Nếu xây dựng hàm khởi tạo lớp con: - Phải gọi hàm khởi tạo lớp cha tường minh Cú pháp ([tham số]):([tham số]) { } Chú ý: Hàm khởi tạo lớp sở thực trước Nếu lớp dẫn xuất có nhiều lớp sở trình tự thực tuân theo trình tự kế Object Oriented Programing– Information Systems Department 15 Hàm khởi tạo hàm huỷ b Hàm huỷ Hàm huỷ lớp sở không kế thừa Hàm huỷ lớp dẫn xuất thi hành trước hàm huỷ lớp sở Object Oriented Programing– Information Systems Department 16 Lớp sở ảo Xét trường hợp: Theo nguyên lý kế thừa: C có hai thành phần x Vấn đề xảy ra: Giả sử lớp A có thành phần x Trong lớp B có thành phần x Xây dựng lớp C kế thừa từ lớp A B Khi truy cập thành phần x C chương trình dịch khơng biết thành phần x lớp A hay B Sự nhập nhằng kế thừa Để giải quyết: Ta xác định phạm vi tường minh Ví dụ: C d; d.A::x; d.B::x; Object Oriented Programing– Information Systems Department 17 Lớp sở ảo Xét trường hợp hai: Gọi A lớp sở lớp B C Gọi D lớp dẫn xuất lớp B C A x B C x x D x Object Oriented Programing– Information Systems Department 18 Lớp sở ảo Giải quyết: Khai báo tường minh .::; Coi A lớp sở ảo B C Khi D có thể A Khai báo: class : virtual Khi ta khai báo class B: virtual public A{…} class C: virtual public A{…} Object Oriented Programing– Information Systems Department 19 Bài tập Bài 1: Cài đặt lớp PS1 gồm có: Dữ liệu: tử số, mẫu số Phương thức: nhập ps(mẫu khác 0), in ps, tối giản Chương trình chính: nhập ps a,b, in phân số tối giản Cài đặt lớp PS2 kế thừa PS1 bổ sung: Phương thức: bổ sung phương thức so sánh phân số Chương trình chính: nhập ps, thơng báo kết so sánh Object Oriented Programing– Information Systems Department 20 Bài tập Bài 2: Cài đặt lớp SP1 gồm có: Dữ liệu: phần thực, phần ảo Phương thức: nhập,in Chương trình chính: nhập sp a, b, in a, b Cài đặt lớp SP2 kế thừa SP1 bổ sung: Phương thức: cộng, trừ, nhân, chia số phức Chương trình chính: nhập sp, phép tính a+b, a-b, a*b, a/b; Object Oriented Programing– Information Systems Department 21 Bài tập Bài 3: Cài đặt lớp NGUOI gồm có: Dữ liệu: họ tên, ngày sinh, địa Phương thức: nhập,in người Cài đặt lớp NV kế thừa NGUOI bổ sung: Dữ liệu: phòng ban, hệ số lương, phụ cấp Phương thức: định nghĩa lại pt nhập, in để có đầy đủ thơng tin Chương trình chính: nhập mảng NV có n người (n