针对这些要求的优雅OOP设计是什么?
“建筑物,地板和空间的设计类结构。空间可以是公寓,商店或办公室。包括您认为有趣的任何属性,字段和方法。”
我试过这个,但我认为这不是一个好的解决方案:
space {
floor {
}
building {
floor{
}
}
}
答案 0 :(得分:2)
让我们分析一下要求。
你有3个物体;建筑,地板和空间。
建筑物可以有一层或多层。
地板可以有一个或多个空格。
你应该能够从中开发对象及其关系。
答案 1 :(得分:2)
这里有一些pseduo 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
};