Différence entre association et dépendance?

Dans un diagramme de classes UML, quelle est la différence entre une relation d’association et une relation de dépendance?

D’après ce que je sais, une association est une relation plus forte qu’une dépendance, mais je ne suis pas sûre de la façon dont elle est plus forte.

N’importe quel exemple serait plus que bienvenu 🙂

Quelle est la différence entre dépendance et association? :

En général, vous utilisez une association pour représenter quelque chose comme un champ dans une classe. Le lien est toujours là, dans la mesure où vous pouvez toujours demander une commande à son client. Il ne doit pas nécessairement s’agir d’un champ, si vous modélisez du sharepoint vue de l’interface, cela peut simplement indiquer la présence d’une méthode qui renverra le client de la commande.

Pour citer la 3ème édition de UML Distilled (maintenant juste sortie) “il existe une dépendance entre deux éléments si des modifications apscopes à la définition d’un élément (le fournisseur) peuvent entraîner des modifications sur l’autre (le client)”. C’est une relation très vague et générale, ce qui explique pourquoi l’UML a une foule de stéréotypes pour différentes formes de dépendance. En termes de code, le fait de nommer un type de paramètre et de créer un object dans une variable temporaire implique une dépendance.

Une association implique presque toujours qu’un object a l’autre object en tant que champ / propriété / atsortingbut (la terminologie diffère). Une dépendance implique généralement (mais pas toujours) qu’un object accepte un autre object en tant que paramètre de méthode, instancie ou utilise un autre object. Une dépendance est très impliquée par une association.

En termes de POO:

Association -> Un object has-a C (en tant que variable membre)

Dépendance -> A référence B (comme paramètre de méthode ou type de retour)

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

Il y a aussi une réponse plus détaillée .

La dépendance est comme lorsque vous définissez une méthode qui prend une chaîne (en Java, C #, car la chaîne est un object) en tant que paramètre, alors votre classe dépend de la classe Ssortingng.

L’association est comme lorsque vous déclarez une chaîne en tant qu’atsortingbut dans votre classe. alors votre code est associé à la classe de chaîne.

 Ssortingng name = null //: is a association. 

Dépendance – Un changement dans une classe affecte le changement dans sa classe dépendante. Example-Circle dépend de Shape (une interface). Si vous changez de forme, cela affecte aussi le cercle. Donc, Circle dépend de Shape.

Association – signifie qu’il existe une certaine relation entre 2 objects

(un, un, plusieurs, beaucoup)

L’association est de 2 types-

  1. Composition
  2. Agrégation

    1) Composition – plus forte Association ou relation entre 2 objects. Vous créez un object d’une classe B dans une autre classe A

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

Si nous supprimons la classe A, B n’existera pas (l’object B est créé dans A uniquement).

Un autre exemple – Body & Liver .Liver ne peut exister en dehors du corps.

2) Agrégation – type d’ association plus faible entre 2 objects.

 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 */ } } 

Même si vous supprimez la classe A, B existera à l’extérieur (B est créé à l’extérieur et passé à la classe A)

Un autre exemple de ceci – Man & Car. L’homme a une voiture mais l’homme et la voiture existent indépendamment.

Ici: “Association vs dépendance vs agrégation vs composition” , vous avez un grand vade-mecum avec des diagrammes de classes et des extraits de code. L’auteur nous donne une liste de relations: Association, Dépendance, Agrégation, Composition en un seul endroit.

Une dépendance est très générale et la réduction de la complexité consiste à diminuer autant que possible les dépendances.

Une association est une dépendance (statique) forte. L’agrégation et la composition sont encore plus fortes.