若在邏輯上A是B的「一部分」,則不容許B從A派生,而是要用A和其餘東西組合出B。
例如眼(Eye)鼻(Nose)口(Mouth)耳(Ear)是頭(Head)的一部分,因此類Head應該由類Eye、Nose、Mouth、Ear組合而成,而不是派生而成。
class Eye
{
public:
void look(void);
};
class Nose
{
public:
void smell(void);
};
class Mouth
{
public:
void eat(void);
};
class Ear
{
public:
void listen(void);
};
class Head
{
public:
void look(void) { m_eye.look(); }
void smell(void) { m_nose.smell(); }
void eat(void) { m_mouth.eat(); }
void listen(void) { m_ear.listen(); }
private:
Eye m_eye;
Nose m_nose;
Mouth m_mouth;
Ear m_ear;
};
ide