Найти в Дзене
programmer's notes (python and more)

ООП на Python. Агрегация. Приложение к видео 15

Доброго времени суток, читатели, зрители моего канала programmer's notes.

Теперь в Дзен есть Подборки. Данная статья относится к подборке

ООП в Python | programmer's notes | Дзен

Ссылка на мой канал

programmer's notes

Приложение к видеоуроку

Агрегация в ООП

Агрегация это объединение нескольких элементов в одну систему. Конечно, это должно иметь какой-то смысл. Например, мы объединяем людей по каким-то признакам: политические взгляды, здоровье, музыкальные пристрастия и т.п. Новая система их агрегированных элементов, при этом, обладает уже своими интересными свойствами.

Ну хватит философии.

Так в чём же суть агрегации применительно к объектно-ориентированному программированию? Всё очень просто. Если у нас есть отдельные объекты, то мы можем их объединить их в другой класс. Соответственно объект этого класса будет объединять в себе (агрегировать) другие объекты. Конечно, это вещь совсем не формальная и она определяет связь между объектами различных классов.

Рассмотрим пример. Студенты и группы, в которых они учатся. При этом отметим одну важную деталь. Студент — самостоятельная сущность. То же можно сказать и о группах. Но студенты объединяются в группы и тут мы как раз имеем тот самый случай агрегации.

В программе ниже реализована такая агрегация.

Текст программы см. ниже
Текст программы см. ниже
primer38.py

Результат выполнения программы

101 Петров 23232
101 Иванов 23233
102 Кириллов 23234

Сделаем несколько пояснений к программе.

  • В классе Student реализован метод setgr(). Необходимость в нём заключается в том, что группа у студента может меняться.
  • При этом группа в классе student это всего лишь обычный атрибут, а не объект класса Group.
  • В классе Group есть метод setst(). Он формирует список студентов, входящих в группу. Если у студента сменилась группа, то вызов этого метода у всех объектов Group восстановит правильные списки групп.
  • В конце программы осуществляется вывод групп и студентов, которые на данный момент к группе относятся.

Замечу, что связь между классами, которую мы разобрали, это связь между целым и частями. Но части абсолютно самостоятельны. Это агрегация. Кстати, замечу, агрегация общее свойство объектно-ориентированного подхода, а на Python мы просто продемонстрировали это свойство или, точнее говоря, тип связи между классами.

Всего наилучшего. Оставляйте свои комментарии, не забывайте про лайки и подписывайтесь на мой канал programmer's notes.

Если долго всматриваться в код, то код начнёт всматриваться в тебя
Если долго всматриваться в код, то код начнёт всматриваться в тебя