Страницы

Поиск по вопросам

воскресенье, 29 декабря 2019 г.

Агрегация между классами

#cpp #классы


Объясните пожалуйста понятие агрегации между классами. Например, если есть два класса,
classx и classy и они находятся в отношении агрегации, то как это реализовывается в
коде. Полезным будут и какие-то понятные примеры из интернета, я не нашел ничего толкового.
    


Ответы

Ответ 1



Агрегация — это отношение между объектами, при котором один объект содержит другой как часть, но внешний объект не является владельцем внутреннего. Это означает, что окончание жизненного цикла внешнего объекта не означает автоматически окончание жизненного цикла внутреннего объекта. Пример: страна аггрегирует своих граждан (то есть, они являются её частью). Но не уничтожает их при распаде страны. class citizen { }; class country { // используем указатель, чтобы предотвратить копирование сущностей (у нас не может быть // одновременно два "экземпляра" одного и того же гражданина), а также владение ими. unordered_set population; public: void add_citizen(citizen* pc) { population.insert(pc); } voit remove_citizen(citizen* pc) { population.erase(pc); } ~country() { // не удаляем граждан, пусть живут } };

Ответ 2



Агрегация это когда объекты одного класса входят в объекты другого ( то есть, отношение типа “часть-целое”).

Комментариев нет:

Отправить комментарий