Bài giảng lập trình hướng đối tượng tính kế thừa inheritant

75 327 0
Bài giảng lập trình hướng đối tượng   tính kế thừa   inheritant

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

LOGO OOP KẾ THỪA - Inheritance LOGO Inheritance Concept Polygon Rectangle Triangle class Polygon { private: int width, length; public: void set(int w, int l); } class Rectangle{ private: int width, length; public: void set(int w, int l); int area(); } class Triangle{ private: int width, length; public: void set(int w, int l); int area(); } LOGO Inheritance Concept Polygon Rectangle Triangle class Rectangle : public Polygon { public: int area(); } class Polygon { protected: int width, length; public: void set(int w, int l); } class Rectangle{ protected: int width, length; public: void set(int w, int l); int area(); } LOGO Inheritance Concept Polygon Rectangle Triangle class Triangle : public Polygon { public: int area(); } class Polygon { protected: int width, length; public: void set(int w, int l); } class Triangle{ protected: int width, length; public: void set(int w, int l); int area(); } LOGO Inheritance Concept x y Point Circle x y r 3D-Point x y z class Circle : public Point { private: double r; } class Point { protected: int x, y; public: void set(int a, int b); } class 3D-Point: public Point { private: int z; } LOGO Class Derivation Point 3D-Point Sphere class Point{ protected: int x, y; public: void set(int a, int b); } class 3D-Point : public class Sphere : public 3DPoint{ Point{ private: double z; private: double r; …… …… } } Point is the base class of 3D-Point, while 3D-Point is the base class of Sphe LOGO Kế thừa Sự kế thừa đặc điểm ngôn ngữ dùng để biểu diễn mối quan hệ đặc biệt lớp Các lớp trừu tượng hóa tổ chức thành sơ đồ phân cấp lớp Sự kế thừa mức cao trừu tượng hóa:  cung cấp chế gom chung lớp có liên quan với thành mức khái quát hóa đặc trưng cho toàn lớp nói www.themegallery.com LOGO Kế thừa Các lớp với đặc điểm tương tự tổ chức thành sơ đồ phân cấp kế thừa  Lớp trừu tượng hóa toàn lớp ỏ bên Quan hệ “là 1”: Kế thừa sử dụng thông dụng để biểu diễn quan hệ “là 1”  Một sinh viên người  Một hình tròn hình ellipse  Một tam giác đa giác www.themegallery.com LOGO Lợi ích kế thừa Tạo khả xây dựng lớp từ lớp có Kế thừa có khả tạo chế  khái quát hoá  chuyên biệt hoá từ lớp có  Trong C++, kế thừa định nghĩa tương thích, nhờ ta có chế chuyển kiểu tự động Kế thừa cho phép tổ chức lớp chia sẻ mã chương trình chung nhờ dễ dàng sửa chữa, nâng cấp hệ thống www.themegallery.com LOGO Cách dùng kế thừa Cách 1: Để phản ánh mối quan hệ lớp  Là công cụ để tổ chức phân cấp lớp dựa vào chuyên biệt hóa,  vài hàm thành phần lớp phiên hoàn thiện đặc biệt hoá phiên lớp cha  Trong C++ mối quan hệ thường cài đặt sử dụng: • Kế thừa public • Hàm thành phần phương thức ảo www.themegallery.com LOGO Class Interface Diagram ExtTime class Set Increment Set Increment Protected data: hrs Write Write mins ExtTime ExtTime Time secs Time Private data: zone 61 LOGO Implementation of ExtTime Default Constructor ExtTime :: ExtTime ( ) { zone = EST ; } The default constructor of base class, Time(), is automatically called, when an ExtTime object is created ExtTime et1; et1 hrs = mins = secs = zone = EST 62 LOGO Implementation of ExtTime Another Constructor ExtTime :: ExtTime (int initH, int initM, int initS, ZoneType initZone) : Time (initH, initM, initS) // constructor initializer { zone = initZone ; } ExtTime *et2 = new ExtTime(8,30,0,EST); et2 6000 5000 ??? 5000 hrs = mins = 30 secs = zone = EST 63 LOGO Implementation of ExtTime void ExtTime :: Set (int h, int m, int s, ZoneType timeZone) { Time :: Set (hours, minutes, seconds); // same name function call zone = timeZone ; } void ExtTime :: Write ( ) const // function overriding { string zoneString[8] = {“EST”, “CST”, MST”, “PST”, “EDT”, “CDT”, “MDT”, “PDT”} ; Time :: Write ( ) ; cout [...]...LOGO Cách dùng kế thừa Cách 1: Để phản ánh sự chia sẻ mã chương trình giữa các lớp  không có quan hệ về mặt ngữ nghĩa nhưng có thể có tổ chức dữ liệu và mã chương trình tương tự nhau  Trong C++, cơ chế chia sẻ mã này thường được cài đặt dùng: • Kế thừa private • Hàm thành phần không là phương thức ảo www.themegallery.com LOGO Đặc tính Kế thừa Thừa kế cho phép ta định nghĩa 1 lớp... xuất  thừa kế các thành phần (dữ liệu, hàm) của lớp cơ sở,  thêm vào các thành phần mới, bao hàm cả việc làm “tốt hơn” hoặc làm lại những công việc mà trong lớp cơ sở chưa làm tốt hoặc không còn phù hợp với lớp dẫn xuất www.themegallery.com LOGO Đặc tính Kế thừa Thừa kế cho phép nhiều lớp có thể dẫn xuất từ 1 lớp cơ sở Thừa kế cũng cho phép một lớp có thể là dẫn xuất của nhiều lớp cơ sở Thừa kế không... đối tượng sinh viên tự động có thành phần dữ liệu họ tên và năm sinh của người  Về mặt thao tác: Lớp sinh viên được tự động kế thừa các thao tác của lớp cha  Riêng phương thức thiết lập không được kế thừa www.themegallery.com LOGO Kế thừa đơn – ví dụ Nguoi p1; SinhVien s1; p1.An(); cout ... " "; // Tu lop Nguoi p1.Xuat(); cout

Ngày đăng: 22/01/2016, 14:08

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan