我有典型的班级设计问题,我想征求意见。班级设计的选择
让我们假设我有一个基类Animal。从这堂课我得到几类特定的动物。我对他们的相互作用感兴趣。由于它们的相互作用可能因动物而异,我所做的就是创建具有纯虚函数的基类,即抽象类:
class dog;
class cat;
class bird;
类动物{
私人:
INT腿;
公共:
虚拟无效相互作用(const的狗&)= 0;
virtual void Interact(const cat &)= 0;
virtual void Interact(const bird &)= 0;
};
然后,对于每个特定的动物,我创建一个Animal类的派生类。例如:
类犬:公共动物{
//与其他动物的相互作用的执行情况:
无效互动(常量狗&对象){...身体...};
void Interact(const cat & object){... body ...};
void Interact(const bird & object){... body ...};
};
类似于猫和鸟类。 现在我关心的是鸟类。鸟可以飞行,并有狗和猫没有的额外变量/方法。什么将是一个聪明的方式来管理呢?例如,蛮力的方法是增加基类动物额外的方法和变量,如int wings
和void fly()
。重点是他们不会被狗和猫班使用。它不干净。 也许另一种方式是竟被宣布从动物派生类FlyingAnimal:
类FlyingAnimal:公共动物{
私人:
INT翅膀;
public:
void Fly();
};
,然后我可以从这个代替动物创造一流的小鸟:
类鸟:公开FlyingAnimal {
身体和定义无效互动(...)的...
};
您对此有何看法?也许你有另一个建议。
非常感谢提前! Xtof
你的“交互”方法应该做什么,以及动物与之交互的行为方式有什么不同? – Philipp