Каким будет элегантный дизайн ООП для этих требований?
«Разработайте структуру класса для здания, этажей и пространства. Пространство может быть квартирой, магазином или офисом. Включите любые свойства, поля и методы, которые, по вашему мнению, были бы интересны».
Я пробовал это, но я думаю, что это не очень хорошее решение:
space {
floor {
}
building {
floor{
}
}
}
Вот немного псевдо C ++, чтобы вы начали. Я не предоставлял публичных участников — только структуры с отношениями, чтобы вы начали.
Что касается вопроса «пространство может принадлежать более чем одному зданию». Это упражнение, я оставлю до вас.
class Building;
class Space;
class Floor;
class Building
{
int number_of_floors;
vector<Floor*> _floors; // list of floors in the building
// building specific data
string name;
string address;
};
class Floor
{
Building* pBuilding; // building for which this floor belongs
int floor_number; // the floor number (e.g 1-99)
vector<Space*>; // list of spaces on this floor
};class Space
{
public:
enum SpaceType
{
Apartment,
Store,
Office
};
private:
SpaceType _spacetype;
Floor* pFloor; // floor in which this space exists on
};
Давайте проанализируем требования.
У вас есть 3 объекта; здание, пол и пространство.
Здание может иметь один или несколько этажей.
Этаж может иметь одно или несколько мест.
Вы должны быть в состоянии развивать объекты и их отношения из этого.