Zależność - zmiana w klasie wpływa na zmianę w klasie zależnej. Przykład - Okrąg jest zależny od kształtu (interfejsu). Jeśli zmienisz Shape, wpłynie to również na Circle. Zatem Circle jest zależny od Shape.
Skojarzenie - oznacza, że istnieje pewien związek między 2 obiektami
(jeden-jeden, jeden-wiele, wiele-wiele)
Skojarzenie jest dwojakiego rodzaju-
- Kompozycja
Zbiór
1) Kompozycja - silniejsze skojarzenie lub związek między 2 obiektami. Tworzysz obiekt klasy B wewnątrz innej klasy A.
public class A {
B b;
public void setB(){
this.b= new B();
}
}
Jeśli usuniemy klasę A, B nie będzie istnieć (obiekt B jest tworzony tylko wewnątrz A).
Inny przykład - Ciało i wątroba. Wątroba nie może istnieć poza ciałem.
2) Agregacja - słabszy typ asocjacji między 2 obiektami.
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 */
}
}
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.