Yêu cầu:
Chúng ta cần xây dựng các lớp mô tả đa giác : hình chữ nhật và tam giác. Hai đa giác này có đặc điểm cơ bản, như là chiều rộng và chiều cao để tính diện tích. Do vậy, ta có thể xây dựng 1 lớp đa giác (polygons) gồm các thành viên: width và height. Ta sẽ tạo ra 2 lớp dẫn xuất: lớp tam giác (CTriangle) và lớp hình chữ nhật (CRectangle) kế thừa từ lớp đa giác (CPolygon).
/************************************************************/
#include <iostream>
using namespace std;
class CPolygon
{
protected:
int width, height;
public:
void set_values (int a, int b)
{ width=a; height=b;}
};
class CRectangle: public CPolygon
{
public:
int area () { return width * height; }
};
class CTriangle: public CPolygon
{
public:
int area () { return width * height / 2; }
};
int main () {
CRectangle rect;
CTriangle trgl;
rect.set_values (4,5);
trgl.set_values (4,5);
cout << "Area of rectangle: " << rect.area() << endl;
cout << "Area of triangle: " << trgl.area() << endl;
system("pause");
return 0;
}
Chú ý:
Ở đây, thành viên width và height được khai báo protected thay vì private. Vì thành viên của lớp dẫn xuất chỉ có thể truy cập được thành viên public và protected của lớp cơ sở.
Trong ví dụ này, thành viên của lớp CRectangle và CTriangle có cùng quyền truy cập như trong lớp cơ cở CPolygon.
CPolygon::width // protected access
CRectangle::width // protected access
CPolygon::set_values() // public access
CRectangle::set_values() // public access
Đó là bởi vì, trong ví dụ này ta dùng kiểu kế thừa public.
class Rectangle: public Polygon { /* ... */ }
Kết quả:
1 2 |
Area of rectangle: 20 Area of triangle: 10 |
Leave a Reply