Разница между ассоциацией и зависимостью?



в диаграмме классов UML, в чем разница между отношением ассоциации и отношением зависимости?



из того, что я знаю, ассоциация-это более сильные отношения, чем зависимость, но я не уверен, насколько она сильнее.



любой пример будет более чем приветствуется :)

1048   7  
uml

7 ответов:

в чем разница между зависимостью и ассоциации?:

В общем случае вы используете ассоциацию для представления чего - то вроде Поля в классе. Ссылка всегда есть, в том, что вы всегда можете спросить заказ для своего клиента. Это не должно быть на самом деле поле, если вы моделирование с более интерфейсной точки зрения, он может просто указать наличие метода, который вернет заказ клиенту.

цитата из 3-е издание UML Distilled (сейчас только выходит) " a существует зависимость между двумя элементами, если изменения в определении один элемент (поставщик) может привести к изменению другого (поставщика). клиент.") Это очень расплывчатые и общие отношения, поэтому UML имеет множество стереотипов для различных форм зависимости. В терминах кода такие вещи, как именование типа параметра и создание объект во временной переменной подразумевает зависимость.

...

ассоциация почти всегда подразумевает, что один объект имеет другой объект в качестве поля/свойства/атрибута (терминология отличается). Зависимость обычно (но не всегда) подразумевает, что объект принимает другой объект в качестве параметра метода, создает экземпляр или использует другой объект. Зависимость очень сильно подразумевается ассоциацией.

в терминах ООП:

Ассоциации -> A есть C объект (как переменная-член)

зависимостей --> A ссылки B (в качестве параметра метода или возвращаемого типа)

public class A {
    private C c;
    public void myMethod(B b) {
        b.callMethod();
    }
}

есть еще и более подробный ответ.

зависимость похожа на то, когда вы определяете метод, который принимает строку(в Java, C#, поскольку строка является объектом в них) в качестве параметра, то ваш класс зависит от класса String.

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

String name = null //: is a association.

зависимость - изменение в классе влияет на изменение в его зависимом классе. Пример-круг зависит от формы (интерфейс). Если вы измените форму, это также повлияет на круг. Таким образом, круг имеет зависимость от формы.

Ассоциации - означает, что существует определенная связь между 2 объектами

(один-одному, один-многим,многие-многим)

Ассоциация имеет 2 типа -

  1. состав
  2. агрегация

    1) Состав сильнее Ассоциации или связь между 2 объектами. Вы создаете объект класс B внутри класс

 public class A {
       B b;
       public void setB(){
         this.b= new B();
        }
     }

если мы удалим класс A, B не будет существовать (объект B создается только внутри A).

другой пример -тело и печень .Печень не может существовать вне тела.

2) агрегирование - более слабый тип Ассоциации между 2 объектами.

public class A {       
             B b;
             public void setB(B b_ref){
                 this.b= b_ref;   
                /* object B is passed as an argument of a method */
              }
   }

даже если вы удалите класс A, B будет существовать снаружи(B создается снаружи и передается в класс A)

еще один пример этого-человек и автомобиль . У человека есть автомобиль, но человек и автомобиль существуют независимо.

здесь: Ассоциации"против зависимостей между агрегацией и композицией", у вас есть большой vade mecum с диаграммами классов uml и фрагментами кода. Автор дает нам список отношений: Ассоциация, зависимость, агрегация, композиция в одном месте.

зависимость очень общая, и снижение сложности связано с уменьшением зависимостей как можно больше.

ассоциация-это сильная (статическая) зависимость. Агрегация и состав еще сильнее.

Comments

    Ничего не найдено.