Представьте, что у меня есть fishTank
класс. Этот класс будет представлять аквариум, у него есть размер, некоторые границы, где рыба может быть, некоторые препятствия, где рыба не может быть, некоторая вода течет через аквариум, который перемещает рыбу вокруг, и т. Д.
class fishTank
{
private:
double length;
double height;
//And some more complex things that define a fish tank
public:
fishtank(double, double, ...);
}
Теперь мне нужно добавить рыбу в аквариум. Как правильно объявить мой класс рыбы? (Рыба представляет большую группу отдельных рыб)
- Моя рыба всегда будет внутри
fishTank
, для меня нет смысла иметь одну рыбу. - Рыба должназнать свойства
fishTank
, все в классе рыбы зависит от аквариума: способ загрузки рыбы в аквариум зависит от размера аквариума, способ перемещения рыбы зависит от размера и свойств ловушки,и т. д. - В одном аквариуме может быть много разных видов рыб.
Моя первая попытка создать класс рыбы и передать аквариум в качестве аргумента в конструкторе рыбы. ,Затем добавьте вектор рыбы в аквариум в качестве частного участника:
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;
}
Это действительно правильный способ реализации того, что мне нужно? Я просто не думаю, что это хороший дизайн, мне понадобится аквариум в качестве аргумента для рыбы, а затем добавить каждую рыбу в сам аквариум. Имеет ли это смысл?
Будет ли это правильным местом для реализации чего-то вроде абстрактного класса рыб или гнезда рыбы внутри аквариума?