Comment afficher une relation Singleton dans un diagramme de classes
Si une classe contient pointeur vers une classe singleton, peut-il êtreaggregation
?
À ma connaissance il ne peut pas être un has-a
relation à partir de la classe de ne pas en faire une instance de la classe singleton, c'est juste de l'utiliser comme association
relation.
source d'informationauteur ahj
Vous devez vous connecter pour publier un commentaire.
Le titre ne fait pas complète à 100% les sens comme l'a écrit. Il y a des classes singleton, mais il n'y a pas vraiment de singleton relations. Toute relation peut être affecté à une multiplicité à chaque extrémité, de sorte que si vous voulez dire un-à-un les relations, tout ce que vous faire est d'attribuer multiplicité 1 aux deux extrémités.
Classes peuvent aussi avoir des multiplicités. Vous ne verrez pas souvent utilisé, sauf dans un cas: les singletons.
Quand il s'agit d'Un avoir ou un contenant ou faisant référence à B, il existe trois niveaux de l'étanchéité dans UML.
Agrégation (carnet rhomboïde tête de flèche) implique que le confinement n'est pas exclusive et que le contenu de l'objet ne partage pas tous les aspects de son cycle de vie avec l'objet contenant. Dans la mise en œuvre, ce qui est généralement un pointeur.
Composition (rempli rhomboïde tête de flèche) implique que le contenu de l'objet est détruit lorsque l'objet contenant. Se présente au travail signifie généralement que l'enceinte de confinement est exclusif. Dans la mise en œuvre, ce qui est souvent un pointeur dont le destructeur est appelé dans le destructeur de la classe conteneur (bien qu'il ne peut être créé dans le constructeur de la classe conteneur).
Dirigé association ou d'un membre de l'attribut (la même chose en UML) implique que le contenu de l'objet est une partie de l'état, ou à l'un des constituants de l'objet contenant. Dans la mise en œuvre, cela signifie généralement que la référence n'est pas un pointeur, ou si c'est que le contenu de l'objet est co-créée et détruite avec l'objet contenant.
Agrégation d'un singleton est parfaitement possible (même à partir de plusieurs classes différentes), parce que l'agrégation est, par définition, non-exclusive.
Composition est un peu douteux, à moins que le contenant de la classe est aussi un singleton.
Attribut /mise en scène de l'association est le plus susceptible de mal. Si le contenant est une classe singleton, il ne ferait aucun sens de faire de la classe un singleton, car c'est implicite. Et si la classe est utilisée en tant que membre dans deux classes différentes, il ne peut pas être un singleton.
En outre, vous pouvez également ajouter autant de l'Utilisation de la relations que vous le souhaitez. Ce qui est commun à toute la structure, et implique que la classe à la source à la fin de la relation d'appels de méthodes dans la classe de la cible à la fin.
Je dirais que, techniquement, oui, vous pouvez avoir un membre de la variable est un pointeur vers un objet singleton et appeler à l'agrégation; à l'aide de l'agrégation terme n'a pas beaucoup de sens une fois que vous écrivez le code. Pour toutes fins utiles, c'est juste une association.
Cependant, l'utilisation d'une agrégation de l'association dans un diagramme peut ou ne peut pas aider un observateur du diagramme pour le comprendre. Que, probablement, dépend de qui vous allez le montrer et ce qu'ils pourraient comprendre l'agrégation.
Pour réellement répondre à la question dans le titre (à l'aide des infos dans Le Guide de l'Utilisateur UML (2e Édition):
(Note de l'
1
dans le coin supérieur droit de la classe singleton case indiquant cardinalité.)Il y a aussi une agrégation d'un carré au lieu d'un rempli.
L'ouverts, c'est la première instance de ne pas faire de l'autre (mais toujours a un a un lien).
Vous pourriez prétendre que c'est agrégationmais la vérité de ce qu'elle est: les singletons n'ont rien à voir avec le code orienté objet. Ils sont une forme de l'état global (tout comme les variables globales sont).
Vous pourriez envisager une approche différente du problème.
P. S certains matériaux qui pourraient aider: