Association UML et de la dépendance
Quelle est la différence entre l'association et de la dépendance? Pouvez-vous donner des exemples de code?
Quelle est la relation entre la classe A et de B?
class A
{
B *b;
void f ()
{
b = new B ();
b->f();
delete b;
}
}
- Double Possible de la Différence entre l'association et de la dépendance?
Vous devez vous connecter pour publier un commentaire.
La réponse courte est: comment spécifiques de la langue source à construire doit être représentée en UML n'est pas strictement défini. Ce serait de la partie normalisée profil UML pour la langue en question, mais ce sont malheureusement peu et loin entre. Réponse longue suit.
Dans votre exemple, j'ai peur, j'ai envie de dire "ni", juste pour être difficile.
A
a une variable membre de typeB
, de sorte que la relation est en fait une agrégation ou une composition... Ou une association. En UML, une association avec un nom de rôle cible est sémantiquement équivalent à un attribut avec le nom correspondant.En règle générale, c'est une agrégation si
b
est initialisé dansA
s'constructeur; c'est une composition de plus, s'il est détruit dansB
's destructeur (partagé cycle de vie). Si ne s'applique pas, c'est un attribut /mise en scène de l'association.Si
b
n'était pas une variable de membre dansA
, et la variable localeb
n'était pas operatoed (pas de méthodes ont été appelés sur elle), alors je ne représenter que comme une dépendance:A
besoinsB
, mais il n'a pas un attribut de ce type.Mais
f()
appelle en fait une méthode définie dansB
. Pour moi, cela rend la bonne relation une<<use>>
, ce qui est un plus spécialisées forme de dépendance.Enfin, une (non-orienté) de l'association est la plus faible de lien entre les deux classes, et pour cette raison que j'ai tendance à ne pas les utiliser lors de la description de la source de constructions. Quand je le fais, j'ai l'habitude de les utiliser quand il n'y a aucune source directe de code des relations, mais les deux classes sont toujours en quelque sorte liés. Un exemple de cela pourrait être une situation où les deux sont responsables pour les différentes parties de la même grande algorithme, mais une troisième classe utilise les deux.
Il peut être utile de voir cette question que j'avais posée: une association implique une dépendance en UML
Ma compréhension est:
Association
Dépendance
Si vous voulez voir la différence, le "code", une association entre A et B, la mise en œuvre d'Une (ou B ou les deux, selon les cardinalités, navigation,...) dans un OO lang serait un attribut de type B.
En revanche, une dépendance, Une aurait probablement une méthode où l'un des paramètres est de type B. Si A et B ne sont pas liés, mais en changeant B aurait une incidence sur la charge de la classe A, car peut-être la façon la méthode manipule l'objet B est plus valable (par exemple B a changé la signature d'une méthode et cela provoque une erreur de compilation dans la classe A)
L'obtenir à partir de Wiki: la Dépendance est une forme plus faible de la relation qui indique qu'une classe dépend de l'autre parce qu'il l'utilise à un moment donné du temps. Une classe dépend d'un autre si ce dernier est un paramètre variable ou variable locale à la méthode de l'ancien. C'est différent d'une association, d'où un attribut de l'ancien est une instance de ce dernier.
Donc je pense que le cas est ici de l'association, si B est un paramètre de variable ou variable locale à la méthode de l'Une, puis ils sont à la dépendance.
Une dépendance est vraiment très vaguement définis. Donc, il n'y aurait pas de représentation de code.
Wiki: Une dépendance est une relation sémantique où un changement de l'affluent ou de l'indépendant de la modélisation élément peut affecter la sémantique de la modélisation en fonction de l'élément.[1]
De l'OMG Spec: Une dépendance est une relation qui signifie qu'un seul ou un ensemble d'éléments de modèle nécessite d'autres éléments de modèle pour la spécification ou à la mise en œuvre. Cela signifie que la totalité de la sémantique de la fonction des éléments est soit du point de vue sémantique ou structurellement dépend de la définition du fournisseur de l'élément(s).