Страницы

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

пятница, 14 декабря 2018 г.

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

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


Ответ

Агрегация — это отношение между объектами, при котором
один объект содержит другой как часть, но внешний объект не является владельцем внутреннего.
Это означает, что окончание жизненного цикла внешнего объекта не означает автоматически окончание жизненного цикла внутреннего объекта.
Пример: страна аггрегирует своих граждан (то есть, они являются её частью). Но не уничтожает их при распаде страны.
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() { // не удаляем граждан, пусть живут } };

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

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