想象一下我有一个fishTank
类。该类将代表一个鱼缸,它的大小,可以划鱼的某些边界,不能划鱼的某些障碍,通过鱼缸的水的流动等等。
class fishTank
{
private:
double length;
double height;
//And some more complex things that define a fish tank
public:
fishtank(double, double, ...);
}
现在我需要在鱼缸中添加鱼。宣告我的鱼类类别的适当方法是什么? (鱼代表一大群鱼)
fishTank
内,我一个人独享鱼是没有意义的。fishTank
的属性,鱼类中的所有内容都取决于鱼缸:如何在鱼缸中装载鱼取决于鱼缸的大小,鱼的移动方式取决于大小和陷阱的属性等。我的第一个尝试是创建fish类,并在fish构造函数中将tank作为参数传递。然后将鱼的矢量作为私人成员添加到水箱中:
class fish
{
private:
//All properties of fish
public:
fish(const fishTank& aTank, All other properties of fish);
}
class fishTank
{
private:
std::vector<fish> fishInTank;
//Same as before
public:
//Same as before;
}
这真的是实现我所需的正确方法吗?我只是认为这不是一个好的设计,我将需要鱼缸作为鱼的参数,然后将每条鱼添加到鱼缸中。这有意义吗?
这是实现诸如抽象鱼类之类或在鱼缸内筑巢鱼的正确地方吗?
鱼需要了解fishTank
的属性
Fish
类可以在FishTank
类内声明,甚至可以是受保护的或私有的。这将使在Fish
之外更难/无法使用。但是没有办法表明它只能是FishTank
的直接成员。