Diciamo che sto cercando di progettare un distretto. Ho
1) house
2) community (groups of 2 or more then 2 house)
3) city (group of more then two community)
4) district (groups of 2 or more then 2 city)
Quello che ho finora:
class house{
public:
house(std::string name, std::string id);
std::string get_name();
std::string get_id();
private:
std::string name;
std::string id;
};
class community{
public:
community();
// get house names
std::vector<std::string> get_all_house_in_community();
private:
std::string name;
std::vector<house> p_houses; // vector of house
};
class city{
public:
city();
// get house names by collecting from communities
std::vector<std::string> get_all_house_in_city();
private:
std::string name;
std::vector<community> p_communities; // vector of community
}
class district{
public:
district();
// get house names from city
std::vector<std::string> get_all_house_in_district();
private:
std::string name;
std::vector<city> p_cities;
};
Quando viene chiamata la funzione get_all_house_in_district () deve chiamare tutte le get_all_housexxxx delle classi. È una buona idea distribuire i dati tra le classi in questo modo o il distretto dovrebbe tenere tutte le case (se permetto al distretto di tenere tutte le case, allora la classe distrettuale si complica davvero molto rapidamente)?
domanda secondaria: dovrei usare l'ereditarietà qui, non vedo alcuna ragione ma ero solo curioso.
Con queste classi ho voluto creare un semplice sistema di basi di dati.
Esiste un modello di progettazione per rappresentare questo scenario?