1 Chương 5 Kế thừa Cao Tuấn Dũng Huỳnh Quyết Thắng Bộ môn CNPM TS H Q Thắng TS C T Dũng CNPM 2 Quan hệ là (is a) Ngoài việc nhóm các đối tượng có cùng tập thuộc tính/hành vi lại với nhau, con người[.]
Chương 5: Kế thừa Cao Tuấn Dũng Huỳnh Quyết Thắng Bộ môn CNPM Quan hệ (is a) Ngồi việc nhóm đối tượng có tập thuộc tính/hành vi lại với nhau, người thường nhóm đối tượng có số (chứ khơng phải tất cả) thuộc tính/hành vi Ví dụ, ta nhóm tất xe chạy động thành nhóm, phân thành nhóm nhỏ tuỳ theo loại xe (xe ca, xe tải, ) Mỗi nhóm lớp đối tượng tương tự, tất nhóm có chung số đặc điểm Quan hệ nhóm với nhóm lớn gọi quan hệ “là” – xe ca “là” xe chạy động – xe tải “là” xe chạy động – xe máy “là” xe chạy động TS H.Q Thắng - TS C.T Dũng CNPM Khái niệm: Kế thừa Kết tập Có hai cách tạo mối liên hệ hai lớp với mục đích sử dụng lại mã LTHDT: – Cách thứ (Quan hệ has – a): tạo đối tượng lớp có sẵn lớp mới, lớp kết tập lớp định nghĩa với lớp cũ có – Cách thứ hai (Quan hệ is-a): tạo lớp phát triển lớp có sẵn Trong lớp sử dụng lại code có lớp cũ phát triển tính chất Cách gọi kế thừa Sự khác khái niệm: Trong kết tập tái sử dụng thông qua lại đối tượng, Trong kế thừa tái sử dụng thông qua lớp TS H.Q Thắng - TS C.T Dũng CNPM Kế thừa kết tập TS H.Q Thắng - TS C.T Dũng CNPM Ví dụ Kết tập Một trị chơi gồm đối thủ, ba quân súc sắc trọng tài class Game Cần bốn lớp: { – người chơi – súc sắc – trọng tài – trò chơi Die die1, die2, die3; Player player1, player2; Arbitrator arbitrator1; } Lớp Trò chơi coi lớp khách hàng ba lớp lại TS H.Q Thắng - TS C.T Dũng CNPM Ví dụ Kết tập Die - value : int + throw() Player - name : String - points : int + throwDie() Arbitrator - name : String + countingPoints() TS H.Q Thắng - TS C.T Dũng CNPM Khởi tạo huỷ bỏ đối tượng kết tập kế thừa Khi đối tượng tạo mới, chương trình dịch đảm bảo tất thuộc tính phải khởi tạo gán giá trị tương ứng Trong kết tập kế thừa, nảy sinh vấn đề khởi tạo đối tượng có kết tập đối tượng thuộc lớp kế thừa cần phải khởi tạo đối tượng thuộc lớp định nghĩa: cần phải định nghĩa chúng khởi tạo theo thứ tự TS H.Q Thắng - TS C.T Dũng CNPM Khởi tạo huỷ bỏ đối tượng kết tập kế thừa Thứ tự khởi tạo kết tập: – Các đối tượng thành phần khởi tạo trước – Các hàm khởi tạo lớp đối tượng thành phần thực trước – Các hàm huỷ thực theo thứ tự ngược lại Thứ tự khởi tạo kế thừa – Các hàm khởi tạo lớp sở thực trước Các hàm huỷ thực theo thứ tự ngược lại TS H.Q Thắng - TS C.T Dũng CNPM Khởi tạo huỷ bỏ đối tượng kết tập kế thừa Truyền giá trị đối số cho hàm khởi tạo – Khi khai báo hàm khởi tạo kế thừa chung ta có quyền đăng ký sử dụng hàm khởi tạo lớp sở với đối số tương ứng – Tương tự khai báo hàm khởi tạo lớp kết tập, có quyền khai báo đối tượng thành phần lớp kết tập khởi tạo – Lưu ý: Trong hai trường hợp phải sử dụng hàm khởi tạo đăng ký lớp tương ứng TS H.Q Thắng - TS C.T Dũng CNPM Kế thừa Nguyên lý mô tả lớp sở mở rộng/cụ thể lớp tồn tại, hay nhiều lớp (trong trường hợp đa thừa kế) Trên cách nhìn mơ đun hóa: Nếu B thừa kế A, dịch vụ A sẵn có B (theo cách thực khác nhau) Trên cách nhìn xuất phát từ kiểu: Nếu B thừa kế A, thể A yêu cầu, thể B đáp ứng TS H.Q Thắng - TS C.T Dũng CNPM 10 Kế thừa Inheritance xác định quan hệ (relationship ) lớp lớp chia sẻ cấu trúc và/hoặc hành vi hay nhiều lớp khác phả hệ lớp tạo lớp - subclass kế thừa từ hay nhiều lớp cha - superclasses Kế thừa gọi quan hệ : is-a TS H.Q Thắng - TS C.T Dũng CNPM 11 TS H.Q Thắng - TS C.T Dũng CNPM 12 Tính tương đồng Lớp cá voi kế thừa từ lớp động vật có vú cá voi đv có vú ( is-a mammal ) Lớp cá voi subclass, lớp DVCV superclass Mammal Class Whale Class Horse Class TS H.Q Thắng - TS C.T Dũng CNPM 13 Kế thừa Cả Whale Horse có quan hệ is-a với mammal class Cả Whale Horse có số hành vi thơng thường Mammal Inheritance chìa khóa để tái sử dụng code – Nếu lớp cha tạo, lớp tạo thêm vào số thông tin TS H.Q Thắng - TS C.T Dũng CNPM 14 Lớp sở lớp dẫn xuất • • • Một lớp xây dựng từ lớp khác gọi lớp dẫn xuất; lớp dùng để xây dựng lớp dẫn xuất gọi lớp sở Bất lớp trở thành lớp sở; lớp sở cho nhiều lớp dẫn xuất Đến lượt mình, lớp dẫn xuất lại dùng làm sở để xây dựng lớp dẫn xuất khác Ngồi lớp dẫn xuất từ nhiều lớp sở Như mối quan hệ sở dẫn xuất đa dạng, sau số sơ đồ mô tả mối quan hệ trên: B A A A B C B C D D C TS H.Q Thắng - TS C.T Dũng CNPM 15 Lớp sở lớp dẫn xuất Tổng quát D C B C C B C B Tính thừa kế Một lớp dẫn xuất thành phần riêng mình, cịn thừa kế tất thành phần lớp sở liên quan TS H.Q Thắng - TS C.T Dũng CNPM 16 Lớp sở lớp dẫn xuất Các thuộc tính lớp sở thừa kế lớp dẫn xuất; điều có nghĩa tập thuộc tính lớp dẫn xuất bao gồm: thuộc tính khai báo lớp dẫn xuất thuộc tính lớp sở Tuy lớp dẫn xuất không phép truy nhập đến thuộc tính private lớp sở TS H.Q Thắng - TS C.T Dũng CNPM 17 Sơ đồ quan hệ đối tượng Mục đích để rõ khác biệt lớp tham gia quan hệ – lớp khác lớp cha chỗ nào? – lớp khác chỗ nào? TS H.Q Thắng - TS C.T Dũng CNPM 18 Sơ đồ quan hệ đối tượng Biểu diễn khác biệt lớp nào? – khơng có khác chẳng có lý để lập lớp – Giả sử, xe ca có thêm thuộc tính passengers (số hành khách tối đa mà xe chở); xe tải có thêm thuộc tính maximum payload (trọng tải tối đa) hành vi load (bốc), unload (dỡ) Khi biểu diễn thuộc tính hành vi lớp con, cần liệt kê thuộc tính/hành vi mà lớp cha khơng có – đơn giản hố sơ đồ, khơng lặp lại thuộc tính/hành vi thừa kế (có thể tìm thấy chúng cách “lần theo mũi tên”) – nhấn mạnh điểm khác biệt, cho phép dễ dàng nhận lý cho việc lập lớp TS H.Q Thắng - TS C.T Dũng CNPM 19 Sơ đồ quan hệ đối tượng xe ca có thuộc tính vin, make, model, hành vi drive, kèm theo thuộc tính passengers xe tải có thuộc tính vin, make, model, hành vi drive, kèm theo thuộc tính maximum payload hành vi load, unload TS H.Q Thắng - TS C.T Dũng CNPM 20 10 ... tượng kết tập kế thừa Khi đối tượng tạo mới, chương trình dịch đảm bảo tất thuộc tính phải khởi tạo gán giá trị tương ứng Trong kết tập kế thừa, nảy sinh vấn đề khởi tạo đối tượng có kết tập đối. .. tính chất Cách gọi kế thừa Sự khác khái niệm: Trong kết tập tái sử dụng thông qua lại đối tượng, Trong kế thừa tái sử dụng thông qua lớp TS H.Q Thắng - TS C.T Dũng CNPM Kế thừa kết tập TS H.Q Thắng... tượng thuộc lớp kế thừa cần phải khởi tạo đối tượng thuộc lớp định nghĩa: cần phải định nghĩa chúng khởi tạo theo thứ tự TS H.Q Thắng - TS C.T Dũng CNPM Khởi tạo huỷ bỏ đối tượng kết tập kế thừa