-1

对于这些要求,什么是优雅的 OOP 设计?

“为建筑物、楼层和空间设计类结构。空间可以是公寓、商店或办公室。包括您认为有趣的任何属性、领域和方法。”

我已经尝试过了,但我认为这不是一个好的解决方案:

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

2 回答 2

2

让我们分析一下需求。

你有 3 个对象;建筑、楼层和空间。

建筑物可以有一层或多层。

一层可以有一个或多个空间。

您应该能够从中开发对象及其关系。

于 2013-01-14T03:24:19.597 回答
2

这里有一些伪 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
};
于 2013-01-14T08:39:05.573 回答