Em um diagrama de classes UML, qual é a diferença entre um relacionamento de associação e um relacionamento de dependência?
Pelo que eu sei, uma associação é um relacionamento mais forte do que uma dependência, mas não tenho certeza de como é mais forte.
Qualquer exemplo seria mais do que bem-vindo :)
Uma associação quase sempre implica que um objeto tem o outro objeto como um campo / propriedade / atributo (a terminologia é diferente).
Uma dependência normalmente (mas nem sempre) implica que um objeto aceita outro objeto como parâmetro de método, instancia ou usa outro objeto. Uma dependência está muito implícita em uma associação .
fonte
Em termos OOP:
Associação -> A tem um objeto C (como uma variável de membro)
Dependência -> A faz referência a B (como um parâmetro de método ou tipo de retorno)
Também há uma resposta mais detalhada .
fonte
Dependência é como quando você define um método que leva uma String (em Java, C #, já que a string é um objeto neles) como um parâmetro, então sua classe é dependente da classe String.
A associação é como quando você declara uma string como um atributo em sua classe. então seu código é associado à classe string.
fonte
A associação é de 2 tipos
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
Se excluirmos a classe A, B não existirá (o objeto B é criado apenas dentro de A).
2) Agregação - tipo mais fraco de associação entre 2 objetos.
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.
fonte
Aqui: "Associação vs. Dependência vs. Agregação vs. Composição" , você tem um grande vade mecum com diagramas de classes e trechos de código uml. O autor nos dá uma lista de relacionamentos: Associação, Dependência, Agregação, Composição em um só lugar.
fonte
Uma dependência é muito geral e diminuir a complexidade significa diminuir as dependências o máximo possível.
Uma associação é uma dependência forte (estática). Agregação e composição são ainda mais fortes.
fonte
Associação é quando um objeto tem apenas um link para outro e não usa métodos de objetos relacionais. Para rubi por exemplo
Isso significa que você pode obter um objeto de perfil do usuário, mas o usuário não usa os métodos do perfil dentro de si (não depende da interface de um Perfil).
Dependência significa que o usuário tem um link para outro objeto e chama os métodos desse objeto dentro de si
Aqui, se o método de informação do Perfil for alterado ou renomeado, nossa classe de Usuário Dependente também precisa ser alterada.
fonte