Есть задача, смоделировать вот такую ситуацию задача В каждом городе есть несколько почтовых отделений, которые принимают и отправляют посылки. Определяется их вес, дата отправки и доставки, цена. Клиент отправляет посылку и платит деньги за ее доставку цветом выделил классы Уже перечитал много статей по этой теме но так и не решил как грамотно устроить связь между объектами(( Помогите пж
что то типо такого... struct Посылка{ Посылка() : оплачено(false) {} Вес вес; ДатаОтправки до; ДатаДоставки дд; Цена цена; bool оплачено; void взвесить(Вес вес) { this->вес = вес; } void оценить_и_оплатить(Цена цена) { this->цена = цена; оплачено = true; } void отправить_и_доставить(ДатаОтправки до, ДатаДоставки дд) { this->до = до; this->дд = дд; } }; struct Клиент{ ФИО фио; Клиент(ФИО фио) : фио(фио) {} void load(Select select) { посылки = select.execute(); } void save(Update update) { update.execute(); } void add(Посылка& посылка) { посылки.push_back(посылка); } vector<Посылка> посылки; }; struct ПочтовоеОтделение { Индекс индекс; vector<Клиент> клиенты; ПочтовоеОтделение(Индекс индекс) : индекс(индекс) {} void load(Select select) { клиенты = select.execute(); } void save(Update update) { update.execute(); } void accept(Клиент& клиент) { for (auto& посылка : клиент.посылки) { взвесить(посылка); оценить_и_оплатить(посылка); отправить_и_доставить(посылка); } клиенты.push_back(клиент); } void update(const ПочтовоеОтделение& отделение) { } friend bool operator==(const ПочтовоеОтделение& a, const ПочтовоеОтделение& b) { return a.индекс == b.индекс; } }; struct Город { Название название; Город(Название название) : название(название) {} void load(Select select) { отделения = select.execute(); } void save(Update update) { update.execute(); } void update(ПочтовоеОтделение& отделение) { if (отделения.contains(отделение)) { auto target = find(отделения.begin(), отделения.end(), отделение); target->update(отделение); } else { отделения.push_back(отделение); } } vector<ПочтовоеОтделение> отделения; }; Code struct Посылка{ Посылка() : оплачено(false) {} Вес вес; ДатаОтправки до; ДатаДоставки дд; Цена цена; bool оплачено; void взвесить(Вес вес) { this->вес = вес; } void оценить_и_оплатить(Цена цена) { this->цена = цена; оплачено = true; } void отправить_и_доставить(ДатаОтправки до, ДатаДоставки дд) { this->до = до; this->дд = дд; } }; struct Клиент{ ФИО фио; Клиент(ФИО фио) : фио(фио) {} void load(Select select) { посылки = select.execute(); } void save(Update update) { update.execute(); } void add(Посылка& посылка) { посылки.push_back(посылка); } vector<Посылка> посылки; }; struct ПочтовоеОтделение { Индекс индекс; vector<Клиент> клиенты; ПочтовоеОтделение(Индекс индекс) : индекс(индекс) {} void load(Select select) { клиенты = select.execute(); } void save(Update update) { update.execute(); } void accept(Клиент& клиент) { for (auto& посылка : клиент.посылки) { взвесить(посылка); оценить_и_оплатить(посылка); отправить_и_доставить(посылка); } клиенты.push_back(клиент); } void update(const ПочтовоеОтделение& отделение) { } friend bool operator==(const ПочтовоеОтделение& a, const ПочтовоеОтделение& b) { return a.индекс == b.индекс; } }; struct Город { Название название; Город(Название название) : название(название) {} void load(Select select) { отделения = select.execute(); } void save(Update update) { update.execute(); } void update(ПочтовоеОтделение& отделение) { if (отделения.contains(отделение)) { auto target = find(отделения.begin(), отделения.end(), отделение); target->update(отделение); } else { отделения.push_back(отделение); } } vector<ПочтовоеОтделение> отделения; }; P.S. город никакого отношения к почтовому отделению не имеет. это отделения имеют индекс предприятия связи и места назначения, а также фактический почтовый адрес. сами же отделения структурно входят в состав почтовой организации. отделения одного города никак между не связаны, у них раздельные балансы. хотя и имеют возможность передать почтовое отправление для выдачи в другое отделение по личной просьбе получателя в устной либо письменной форме, (да и в чистом си нет классов, только в с++)