Différence entre association et dépendance?
Dans un diagramme de classe 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 sais pas comment elle est plus forte.
Tout exemple serait plus que bienvenu:)
7 réponses
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à, en ce que vous pouvez toujours demander un commande pour ses clients. Il n'a pas besoin d'être un champ, si vous êtes modélisation d'un point de vue plus d'interface, il peut simplement indiquer le présence d'une méthode qui retournera le client de la commande.
Pour citer la 3ème édition D'UML Distillé (maintenant vient de sortir) " a la dépendance existe entre deux éléments si la définition de un élément (le fournisseur) peut entraîner des changements à l'autre (le client)". C'est une relation très vague et générale, c'est pourquoi L'UML a une foule de stéréotypes pour différentes formes de dépendance. En termes de code, des choses telles que nommer un type de paramètre et créer un objet dans une variable temporaire implique une dépendance.
...
Une association implique presque toujours qu'un objet a l'autre objet comme champ/propriété/attribut (la terminologie diffère). Une dépendance implique généralement (mais pas toujours) qu'un objet accepte un autre objet en tant que paramètre de méthode, instancie ou utilise un autre objet. Une dépendance est très impliquée par une association.
En termes de POO:
Association --> Un est un C objet (comme une variable membre)
Dépendance -- > A références B (en tant que 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 string est un objet en eux)en tant que paramètre, alors votre classe dépend de la classe String.
L'Association est comme lorsque vous déclarez une chaîne en tant qu'attribut dans votre classe. ensuite, votre code est associé à la classe string.
String name = null //: is a association.
La Dépendance - Un changement dans une classe affecte le changement c'est dépendante de la classe. Exemple-le cercle dépend de la forme (une interface). Si vous changez de forme, cela affecte également le cercle. Ainsi, le cercle dépend de la forme.
Association- signifie qu'il existe une certaine relation entre les 2 objets
(un-un, un-plusieurs,plusieurs-plusieurs)
L'Association est de 2 types-
- Composition
-
Agrégation
1) Composition - plus forte Association ou relation entre 2 objets. Vous créez un objet 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'objet B est créé dans A uniquement).
Un autre exemple-corps et foie .Le foie ne peut pas exister en dehors du corps.
2) agrégation - type plus faible d'Association entre 2 objets.
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 classe uml 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 réduire la complexité consiste à diminuer les dépendances autant que possible.
Une association est une dépendance forte (statique). L'agrégation et la Composition sont encore plus fortes.