Доброго времени суток, читатели, зрители моего канала programmer's notes.
Эта статья дополнение к курсу
Статья совсем уже не о Python. Она вообще о классах и объектно-ориентированных подходах. Но при разработке больших программ на основе объектно-ориентированного подхода подобный анализ несомненно будет полезен. Наш краткий обзор, однако, лишь краткий справочник связей (отношений) между классами. Для более детального изучения подобных вопросов вам понадобиться какой-нибудь хороший учебник по UML (Unified Modeling Language).
О связях между классами
Надо сказать, что о большей части связей между классами мы уже говорили. В данной статье я лишь перечислю связи и кратко их поясню. Возможно ещё появятся пара статей, где будем обсуждать их реализация
Наследование
О наследовании мы говорили очень много. Это один из видов связей между классами. При такой связи есть родительский класс и дочерний класс, который наследует методы родительского класса. При наследовании происходит уменьшение множества экземпляров родительского класса путём уточнения их параметров и функциональных возможностей.
Реализация
Реализация это наследование от абстрактного класса. Это мы уже обсуждали.
Агрегация
Агрегация, как мы уже указывали в предыдущих публикациях, предполагает, что объект одного класса может содержать (агрегировать) объекты другого класса. При этом оба класса остаются независимыми. Пример, который мы рассматривали, это студенческие группы и студенты.
Композиция
Композиция несколько напоминает агрегацию, но существенное отличие. При композиции экземпляры второго класса не могут существовать самостоятельно. Оценка не может существовать сама по себе, он жестко привязана к ученику.
Ассоциация
Часто встречающаяся связь. Реализуется, когда объекты одного класса могут быть связаны с объектами другого класса через переменные объекта. Ниже представлен типичный пример ассоциативной связи, её подвида "многие ко многим". Собственник (объект) может иметь список ссылок на объекты класса Квартиры, владельцем которых он является. Но связь в данном случае двусторонняя, так как у квартиры могут быть несколько собственников. Т.е. у объекта Квартира также может быть список, указывающий на собственников.
Зависимость
Зависимость последний тип связи между классами. Выражается он в том, выполнение методов одного класса зависит от объектов другого класса. Магазин делает заказ на склад. Выполнение заказа зависит от того, есть в наличие на складе тот или иной продукт и его количество. Т.е. метод объекта Магазин должен использовать объект класса Склад, чтобы узнать наличие на складе тех или иных продуктов.
Всего наилучшего. Оставляйте свои комментарии, не забывайте про лайки и подписывайтесь на мой канал programmer's notes.