これらの要件に対するエレガントなOOP設計は何でしょうか?
「建物、床、スペースのクラス構造を設計します。スペースには、アパート、店舗、オフィスなどがあります。興味があると思われるプロパティ、フィールド、メソッドをすべて含めてください。」
私はこれを試しましたが、それは良い解決策ではないと思います:
space {
floor {
}
building {
floor{
}
}
}
これらの要件に対するエレガントなOOP設計は何でしょうか?
「建物、床、スペースのクラス構造を設計します。スペースには、アパート、店舗、オフィスなどがあります。興味があると思われるプロパティ、フィールド、メソッドをすべて含めてください。」
私はこれを試しましたが、それは良い解決策ではないと思います:
space {
floor {
}
building {
floor{
}
}
}
ここにあなたが始めるためのいくつかのpseduoC++があります。私は公開メンバーを提供しませんでした-あなたが始めるための関係を持つ構造だけです。
「空間は複数の建物に属することができる」という問題について。それは練習です、私はあなたに任せます。
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
};
要件を分析してみましょう。
3つのオブジェクトがあります。建物、床、およびスペース。
建物は1つ以上のフロアを持つことができます。
フロアには1つ以上のスペースを含めることができます。
これからオブジェクトとその関係を開発できるはずです。