【问题标题】:How would you design class structure for a building, floors and space- Object-Oriented [closed]您将如何设计建筑物、楼层和空间的类结构——面向对象[关闭]
【发布时间】:2013-01-13 14:13:48
【问题描述】:

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

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

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

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

【问题讨论】:

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


    【解决方案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 个对象;建筑、楼层和空间。

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

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

      您应该能够由此开发对象及其关系。

      【讨论】:

      • 但是一个空间也可以有多个建筑物,这会使问题复杂化
      • 并非如此。它们是独立的空间,即使它们属于同一所有者。
      猜你喜欢
      • 2019-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-24
      • 1970-01-01
      • 1970-01-01
      • 2017-02-20
      • 1970-01-01
      相关资源
      最近更新 更多