您将如何为建筑物,地板和空间设计类结构 - 面向对象

时间:2013-01-13 14:13:49

标签: java c++ oop object-oriented-analysis class-structure

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

“建筑物,地板和空间的设计类结构。空间可以是公寓,商店或办公室。包括您认为有趣的任何属性,字段和方法。”

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

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

2 个答案:

答案 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
};