169 похожих чатов

Кажись от сути вопроса ушли в сторону, вопрос был о

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


Для пояснения, может кто не знал, межклассовые отношения:
Композиция, зависимость, наследование(наследование, интерфейсы), агрегация, ассоциация - это силы связи, различаются по жесткости. Условно A is B, A uses B, A has B, A owns B

18 ответов

12 просмотров

в моём понимании, композиция подразумевает, что класс-пользователь знаком с интерфейсом класса-утилиты. т.е. не только знает, что бывает такой класс, но и знает сигнатуру его методов и может их использовать. при чём эти утилиты следует задавать именно интерфейсами, чтобы не зависеть от конкретных реализаций. речь, например, о class User { protected ItnerfaceUtil $Util; }

SuleYman-Aliev Автор вопроса
Dmitriy
в моём понимании, композиция подразумевает, что кл...

знает сигнатуру его методов и может их использовать -

Зависимость это агрегация? Просто обычно выбирают между композицией и агрегацией, зависимость в обеих ситуациях есть

SuleYman-Aliev Автор вопроса
Sergey P
Зависимость это агрегация? Просто обычно выбирают ...

Да тут полностью согласен, но есть еще детали, которые многие упускают я так понял. Слово зависимость в контексте межклассовых отношений имеет разные уровни/силу связей. Они определены в UML нотации диаграмма классов. Ассоциация, композиция, агрегация, наследование(два типа наследование и интерфейсы), зависимость.Вот последний пункт он определен типо как в методе класса A создается return new B(), вопрос был в том как оно реализовано кодом, это такой способ связи как я понял не хранящий в сотсоянии объекта А. Так как он исключетельно известен только в методе

SuleYman Aliev
Да тут полностью согласен, но есть еще детали, кот...

Ммм, а можешь показать источник на которые ты ориентируешься? Ты ж понимаешь что это не категории, они пересекаются и т д.

SuleYman-Aliev Автор вопроса

Любой учебник по UML диаграмма классов, в поиске вбей UML диаграмма классов межклассовые отношения. Тут картинки не шлются) давай в личке продолжим

SuleYman Aliev
Да тут полностью согласен, но есть еще детали, кот...

Любое прямое использование одного класса в другом является зависимостью одного от другого. Так что весьма странно слово "зависимость" рассматривать отдельно.

SuleYman Aliev
Да тут полностью согласен, но есть еще детали, кот...

смотри. Вот у нас есть dependency: class A { public function doSomething() { return new \DateTime(); } public function somethingElse(User $user) { $user->doSomething(); } } то есть либо мы внутри ее создаем, либо она приходит извне. Но A не хранит референс а значит доступна наша зависимость только в течении вызова метода. Но жизненные циклы объектов не пересекаются. Ассоциация же подразумевает что у тебя объект хранит ссылку всегда class User { private Profile $profile }

~
Return new b это разве не композиция?🤔

если ты выплевываешь объект наружу то ты теряешь контроль за жизненным циклом. А значит это не композиция и не агрегация

А что это тогда за зависимость получается?)

~
А что это тогда за зависимость получается?)

зависимость это "мой класс знает про другой класс и он ему нужен". Не важно как.

SuleYman-Aliev Автор вопроса
~
Return new b это разве не композиция?🤔

Нет конечно, композицией оно станет тогда когда будет является состоянием к примеру объекта А через свойство, тоесть в жизненом цикле объекта. Тут Сергей все расписал, а у тебя еще вопрос возник))

SuleYman Aliev
Нет конечно, композицией оно станет тогда когда бу...

Ну тут больше вопрос что это за зависимость) Которая не участвует в жизненном цикле, но в то же время является зависимостью)

SuleYman-Aliev Автор вопроса
~
Ну тут больше вопрос что это за зависимость) Котор...

Хороший вопрос, который у меня тоже появился, после разбора UML )

SuleYman-Aliev Автор вопроса
~
Ну тут больше вопрос что это за зависимость) Котор...

Ну смотрел мистера Сойера, он говорит об это как использование, тоесть самое слабое зацепление. Еще же такое встретичь в абстрактной фабрике)

SuleYman-Aliev Автор вопроса
~
Ну тут больше вопрос что это за зависимость) Котор...

Хотя...., B зависит от А в таком случаи, тоесть мы рассматриваем что источник(B) зависит о цели A, пока А не вызовет метод B не появится, условно это является зависимостью. А все остальное как и было сказано уже ассоциацией разных видов(агрегация, композиция) - зависимость с жизненным циклом.

Похожие вопросы

Обсуждают сегодня

я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
Всем привет! Массив вводится с клавиатуры, кол-во элементов неизвестно, поэтому я указал arr db 100 dup(?) С нахождением максимума проблем нет, а вот минимум почему-то всегд...
En Vind Av Sorg
11
в сях есть множество как в питоне? для удаление дубликатов
Linus
25
читать файл максимально быстро? странный вопрос))
zamtmn
53
Я хочу запустить свой проект в тг. Что-то между пирамидой и майнилкой. Еще подобного ничего не было. Уникальная идея. Нужен именно не бот, а приложение. С ввод, выводом тон...
Павел А.
6
а как бы вылезти из ИО, что то типа IO -> Ether или в какую сторону смотреть ? что то туплю
Fedor
14
тоесть, указав return eax, сгенерируется никому ненужная инструкция mov eax,eax ?
Aiwan \ (•◡•) / _bot
24
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Реально в одиночку написать игровой движок на Си?
ㅤ (SVO)
11
Всем привет, товарищи! Можете меня поздравить, получил "отлично" за дисциплину "языки программирования низкого уровня". Честно говоря, не очень хочу, чтобы основы асма, которы...
Ыиу
1
Карта сайта