Как бы вы спроектировали структуру классов для здания, этажей и пространства? Объектно-ориентированный

Каким будет элегантный дизайн ООП для этих требований?

«Разработайте структуру класса для здания, этажей и пространства. Пространство может быть квартирой, магазином или офисом. Включите любые свойства, поля и методы, которые, по вашему мнению, были бы интересны».

Я пробовал это, но я думаю, что это не очень хорошее решение:

space {
floor {
}
building {
floor{
}
}
}

-1

Решение

Вот немного псевдо 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
};
2

Другие решения

Давайте проанализируем требования.

У вас есть 3 объекта; здание, пол и пространство.

Здание может иметь один или несколько этажей.

Этаж может иметь одно или несколько мест.

Вы должны быть в состоянии развивать объекты и их отношения из этого.

2