Dependência - Uma mudança em uma classe afeta a mudança em sua classe dependente. Exemplo - o círculo depende da forma (uma interface). Se você alterar a Forma, isso afetará o Círculo também. Portanto, o Círculo depende da Forma.
Associação - significa que há uma certa relação entre 2 objetos
(um-um, um-muitos, muitos-muitos)
A associação é de 2 tipos
- Composição
Agregação
1) Composição - associação mais forte ou relacionamento entre 2 objetos. Você está criando um objeto de uma classe B dentro de outra classe A
public class A {
B b;
public void setB(){
this.b= new B();
}
}
Se excluirmos a classe A, B não existirá (o objeto B é criado apenas dentro de A).
Outro exemplo -Body & Liver .Liver não pode existir fora do corpo.
2) Agregação - tipo mais fraco de associação entre 2 objetos.
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 */
}
}
Mesmo se você excluir a classe A, B existirá fora (B é criado fora e passado para a classe A)
Outro exemplo disso - Homem e Carro. O homem tem um carro, mas o homem e o carro existem independentemente.