В чем разница между отношением ассоциации и отношением зависимости на диаграмме классов UML?
Насколько я знаю, ассоциация - это более сильные отношения, чем зависимость, но я не уверен, насколько она сильнее.
Любой пример был бы более чем приветствуем :)
Объединение почти всегда подразумевает , что один объект имеет другой объект в качестве поля / свойства / атрибута (терминология отличается).
Зависимость , как правило (но не всегда) означает , что объект принимает другой объект в качестве параметра метода, конкретизирует, или использует другой объект. Зависимость очень сильно подразумевается в ассоциации .
источник
В терминах ООП:
Ассоциация -> A имеет объект C (как переменная-член)
Зависимость -> A ссылается на B (как параметр метода или возвращаемый тип)
Есть и более развернутый ответ .
источник
Зависимость подобна тому, как если вы определяете метод, который принимает String (в Java, C #, поскольку строка является в них объектом) в качестве параметра, тогда ваш класс зависит от класса String.
Ассоциация похожа на объявление строки как атрибута в своем классе. тогда ваш код связан со строковым классом.
источник
Ассоциация бывает 2-х типов -
Агрегация
1) Композиция - более сильная ассоциация или связь между 2 объектами. Вы создаете объект класса B внутри другого класса A
Если мы удалим класс A, B не будет (объект B создается только внутри A).
2) Агрегация - более слабый тип ассоциации между 2 объектами.
Даже если вы удалите класс A, B будет существовать снаружи (B создается снаружи и передается в класс A)
Другой пример - Man & Car. У человека есть машина, но человек и машина существуют независимо.
источник
Здесь: «Ассоциация против зависимости против агрегирования против композиции» , у вас есть отличный опыт с диаграммами классов uml и фрагментами кода. Автор дает нам список взаимосвязей: Ассоциация, Зависимость, Агрегация, Состав в одном месте.
источник
Зависимость является очень общей, и снижение сложности связано с уменьшением зависимостей в максимально возможной степени.
Ассоциация - это сильная (статическая) зависимость. Агрегация и композиция еще сильнее.
источник
Ассоциация - это когда один объект просто имеет ссылку на другой и не использует методы реляционных объектов. Для рубина например
Это означает, что вы можете получить объект профиля от пользователя, но пользователь не использует методы профиля внутри себя (не зависит от интерфейса профиля).
Зависимость означает, что Пользователь имеет ссылку на другой объект и вызывает методы этого объекта внутри себя.
Здесь, если информационный метод профиля будет изменен или переименован, наш класс зависимых пользователей также должен быть изменен.
источник