, . , , . - (Liskovs Substitution Principle).
, : , , , ? . :
- (Bus IS A Vehicle).
- (Truck IS A Vehicle).
. , Engine Vehicle, :
- ???
, , , .
, , , . , , , - :
class Point3D
{
float m_x, m_y, m_z;
};
class Circle
: public Point3D
{
float m_radius;
public:
Circle (Point3D _center, float _radius)
: Point3D(_center), m_radius(_radius)
{}
};
, . . ! , - :
class Circle
{
Point3D m_center;
float m_radius;
public:
Circle (Point3D _center, float _radius)
: m_center(_center), m_radius(_radius)
{}
};
- ( ):
class Ellipse
: public Circle
{
float m_radius2;
public:
Ellipse (Point3D _center, float _radius1, float_radius2)
: Circle(_center, _radius1), m_radius2(_radius2)
{}
};
- . , - , :
|
|
class Ellipse
{
Point3D m_center;
float m_radius1, m_radius2;
public:
Ellipse (Point3D _center, float _radius1, float _radius2)
: m_center(_center), m_radius1(_radius1), m_radius2(_radius2)
{}
};
class Circle
: public Ellipse
{
public:
Circle (Point3D _center, float _radius)
: Ellipse(_center, _radius, _radius)
{} // ^
};
, . . , , , , -, . , , , , .
- - , :
class ShapeWithCenter
{
Point3D m_center;
public:
ShapeWithCenter (Point3D _center)
: m_center(_center)
{}
};
class Circle
: public ShapeWithCenter
{
float m_radius;
public:
Circle (Point3D _center, float _radius)
: ShapeWithCenter(_center), m_radius(_radius)
{}
};
class Ellipse
: public ShapeWithCenter
{
float m_radius1, m_radius2;
public:
Ellipse (Point3D _center, float _radius1, float _radius2)
: ShapeWithCenter(_center), m_radius1(_radius1), m_radius2(_radius2)
{}
};