о отношениях между классами и объектами, которое поможет вам лучше вьехать в реализацию различных шаблонов проектирования и дальнейшее их понимание.
(На самом деле не очень поможет, но знать надо) Не ну вообще сама суть ООП как раз таки в том что вы оперируете с объектами, и указываете как они должны относится друг к другу, и тип их связанности, так что по сути паттерны то тут особо и не причем.
Кстати, если говорить несколько грубо - то сама суть паттернов заключается как раз таки в том чтобы используя основные типы отношений меж классами и объектами замутить хитровыебанную систему классов которая решит какую то там великую проблему в программировании.
Всего вообще существует на данный момент 5 основных типов отношений: ассоциация, композиция и агрегация, наследование, реализация.
Давайте пройдемся по каждому ----- Ассоциация Это тип отношения, когда объекты могут ссылаться друг на дружку.
При этом живут два объекта независимо друг от друга, нууу или почти.
Имея 2 объекта, нам необходимо их каким либо образом связать друг с другом.
И вообще в обычном понимании под ассоциацей понимают просто наличие связи между объектами.
Базовым примером может послужить вот такая штука: Один объект имеет свойство в котором хранится ссылка на другой объект.
Но тут еще вводится такое понятие как кратность связей - Некоторые объекты в единичном экземпляре могут использоваться многими другими объектами - к примеру команда и игроки.
Какое то определенное число игроков может состоять в одной команде.
Такая связь называется один ко многим.
Есть еще к примеру бинарная связь - тут примером может послужить работник и его пропуск, у каждого работника пропуск с идентификатором привязанным к самому служащему.
А следующие 2 типа отношений у нас достаточно тесно связанны с ассоциацией.
----- Первый из них - композиция: Это жоское отношение при котором один объект не только является частью другого объекта, а вообще в принципе не может принадлежать кому либо еще.
Иначе говоря композиция организует сильную связь между объектами При таком отношении основной объект полностью контролирует жизненный цикл объектов от которых он зависит Создаются зависимости в конструкторе или любом другом инициализирующем методе.
И уничтожаются они вместе с основным объектом.
Из-вне ничто не должно влиять на эти объекты.
Простой пример -> есть машина и есть ее двигатель.
Машина конечно может существовать без двигателя, но суть немного не в этом, а в том что одновременно один двигатель на нескольких машинах стоять не может.
Поэтому для такой связи используется композиция и класс автомобиля полностью контролирует жизненный цикл этого двигателя ----- Второй тип связанный с ассоциацией - агрегация.
Это тип отношений когда один объект может являтся частью другого - Агрегация организует слабую связь между объектами Тут все очень похоже на композицию, только в отличии от нее - все зависимости инициализируются вне объекта основного класса.
Вообще пример рассмотренный в ассоциации является так же примером и агрегации, как бы сейчас странно это не звучало.
Так что пример про игроков и команды все так же актуален.
Да и вообще - если вы назовете композицию или агрегацию ассоциацией - вы будете правы, ассоциация предполагает наличие связей между объектами, а композиция и агрегация делают эту связь более конкретезированной.
----- Следующий тип отношения - Наследование - тут все просто, это одна из трех основных концепций ООП, которая позволяет расширить функциональность нового класса на основе уже существующего.
И простой пример, где используется наследование: Наследование это конечно на самом деле тема отдельного видео и если у вас вдруг есть с этим проблемы, то достаточно скоро у нас должно выйти видео C# уроки для маленьких и тупых, где эта тема будет раскрыта в красках, так что следите за новостями.
----- Идем дальше -> реализация Под реализацией мы предпологаем наличие одного или нескольких интерфейсов, которые должен реализовать наш основной класс Пример использования интерфейсов Опять таки - это тема отдельного видео, если у вас есть проблемы с пониманием интерфейсов, то сверху справа ссылка на теоретический материал, так же есть второе видео на тему практического использования интерфейсов - ссылки продублированны в описании.
---- Пуф, вот и видосик подошел к концу - подписывайтесь на канал, паблик вк, ставьте лайки, и делитесь этим видео! Всем до скорых встреч!