Jaka jest różnica między relacją skojarzenia a relacją zależności na diagramie klas UML?
Z tego, co wiem, skojarzenie to silniejszy związek niż zależność, ale nie jestem pewien, dlaczego jest silniejszy.
Każdy przykład byłby więcej niż mile widziany :)
Stowarzyszenie prawie zawsze oznacza, że jeden przedmiot ma inny obiekt jako pole / nieruchomość / atrybutu (zmienne terminologia).
Zależność zwykle (lecz nie zawsze) oznacza, że przedmiot przyjmuje inny obiekt jako parametr sposobu, wystąpienie lub korzysta z innego obiektu. Zależność jest bardzo dużo do zrozumienia przez stowarzyszenie .
źródło
W kategoriach OOP:
Skojarzenie -> A ma obiekt C (jako zmienna składowa)
Zależność -> A odwołuje się do B (jako parametr metody lub typ zwracany)
Jest też bardziej szczegółowa odpowiedź .
źródło
Zależność jest taka, jak w przypadku definiowania metody, która przyjmuje String (w języku Java, C #, ponieważ ciąg jest w nich obiektem) jako parametr, a Twoja klasa jest zależna od klasy String.
Skojarzenie jest podobne do deklarowania ciągu znaków jako atrybutu w klasie. wtedy twój kod jest powiązany z klasą string.
źródło
Skojarzenie jest dwojakiego rodzaju-
Zbiór
1) Kompozycja - silniejsze skojarzenie lub związek między 2 obiektami. Tworzysz obiekt klasy B wewnątrz innej klasy A.
Jeśli usuniemy klasę A, B nie będzie istnieć (obiekt B jest tworzony tylko wewnątrz A).
2) Agregacja - słabszy typ asocjacji między 2 obiektami.
Nawet jeśli usuniesz klasę A, B będzie istnieć na zewnątrz (B jest tworzony na zewnątrz i przekazywany do klasy A)
Inny przykład - Man & Car. Człowiek ma samochód, ale człowiek i samochód istnieją niezależnie.
źródło
Tutaj: „Asocjacja a zależność a agregacja a kompozycja” - masz świetny vade mecum z diagramami klas uml i fragmentami kodu. Autor podaje nam listę relacji: skojarzenie, zależność, agregacja, skład w jednym miejscu.
źródło
Zależność jest bardzo ogólna, a zmniejszenie złożoności polega na maksymalnym zmniejszaniu zależności.
Powiązanie jest silną (statyczną) zależnością. Agregacja i kompozycja są jeszcze silniejsze.
źródło
Skojarzenie ma miejsce, gdy jeden obiekt ma łącze do innego i nie używa metod obiektów relacyjnych. Na przykład dla rubinu
Oznacza to, że możesz pobrać obiekt profilu od użytkownika, ale użytkownik nie używa w sobie metod profilu (nie ma zależności od interfejsu profilu).
Zależność oznacza, że użytkownik ma łącze do innego obiektu i wywołuje w sobie metody tego obiektu
Tutaj, jeśli metoda informacji profilu zostanie zmieniona lub zostanie zmieniona nazwa, nasza klasa zależnego użytkownika również musi zostać zmieniona.
źródło