Comment puis-je décrire un pointeur vers la classe dans un diagramme de classes UML?
Si j'ai un class A
qui contient un pointeur vers une class B
et une méthode qui prend en entrée un pointeur vers class B
class A {
private:
B* attribute;
public:
void method(B* par);
}
comment puis-je le décrire dans un diagramme de classes UML? Ai-je à utiliser ? Ce type de composition est-il?
- Ce type de diagrammes UML utilisez vous? Diagramme de classe (le plus populaire)? creately.com/blog/diagrams/uml-diagram-types-examples
- J'ai écrit diagramme de classe.
- Je comprends votre problème, mais il est difficile de répondre sans peinture diagramme UML lui-même 🙂
- Je veux juste savoir si je dois écrire le symbole * et quel genre de composition que j'ai à utiliser. Je suis en utilisant un programme pour faire le graphique, mais il ne m'autorise pas à utiliser * symbole =(
- vous vous demandez entre composition et agrégation? Lorsqu'Un propriétaire de B, c'est à dire. il ne la new et delete sur le B pointeur il serait normalement composition, si B est quelque part d'autre et d'Un obtient une référence à elle, alors elle est généralement considérée comme l'agrégation autant que je sache
- Dans mon cas, Un contient un pointeur vers B, mais UN de CRÉER et de SUPPRIMER B. Est-ce une composition?
- Ai-je écrire * dans le diagramme de classe?
Vous devez vous connecter pour publier un commentaire.
En UML, il n'est pas aussi important de montrer si c'est un pointeur ou pas. Pourquoi? Parce que, vous pourriez être en utilisant UML décrivant une INONDATION pour une langue sans pointeurs.
Réponse rapide: à partir de votre code, les agrégats B (vide diamant à une classe, d'Une connexion B avec une ligne pleine). C'est parce qu'il n'y a pas de destructeur qui supprime ce A. attribut les références de pointeur.
Ce qui est vraiment important, c'est-à-dire quelle est la durée de vie de l'objet référencé. Ainsi, pour un objet référencé (a relation) qui meurt lorsque le propriétaire est détruit, vous devez utiliser un solide (rempli) de diamant. Ceci est appelé composition. Donc, le propriétaire doit gérer la durée de vie de la propriété de l'objet. Un exemple est l'homme a des mains. Les mains ne survivent pas à l'objet est détruit.
Lorsque le diamant n'est pas rempli (agrégation), le propriétaire n'est pas responsable de la gestion de la durée de vie de l'objet possédé. Par exemple, vous ne vous attendez pas à voir que la propriété objet supprimé dans le destructeur. Un employeur a un TeamLeadRole, mais lorsque l'employeur est "détruit" (c'est à dire à gauche de l'entreprise), alors le TeamLeadRole est toujours disponible.
Maintenant, traditionnellement, quand vous voyez un rempli de diamants, vous aurez souvent (pas tout le temps), aura un objet par valeur. Où, quand vous voyez un vide diamant, vous pouvez utiliser une référence ou pointeur.
Si votre classe utilise une autre classe, mais ne pas garder les instances (ou références/pointeurs) de cette catégorie, alors vous pouvez désigner la dépendance par une simple ligne (solide) entre les objets. Cela signifie qu'il ya une relation est appelée association.
Un simple pointeur C++ correspond directement à un objet de référence dans un diagramme de classes UML, comme le montre le schéma suivant:
Une telle référence à la propriété exprime un uni-directionnelle (binaire) de l'association, comme illustré dans le diagramme suivant:
Avis de la "dot" au B du côté de l'association de la ligne. Cela signifie que l'association fin avec le nom "attribut" est la propriété de la classe A, ce qui signifie qu'il correspond à la référence de la propriété montré dans le diagramme ci-dessus (l'association peut être remplacée par la référence à la propriété). Pour plus d'explication, voir le Chapitre 5 de ce tutoriel.
Vous ne pouvez pas utiliser le C++ symbole "*" dans le diagramme de classes UML, car
Dans tous les cas, la relation entre les classes A et B est une association. Il peut être une composition, si vous en avez le plus d'informations sémantiques d'un agrégat relation composant. Notez que votre question devrait être formulée: "Ce genre d'association est-il?" au lieu de "Quel genre de composition est-il?", parce que la composition et l'agrégation sont des types spéciaux d'associations.
Il y a la possibilité de faire une différence entre *, & et [] champs sur des diagrammes de classe UML. Il est nommé "Modificateur de Type". Le problème, c'est pour l'afficher sur le diagramme pour votre outil. Si vous disposez d'un outil de création de diagrammes, il suffit de le dessiner à la fin comme un stéréotype de la fin. Mais attention à ne pas le mélanger avec de la multiplicité! Si vous disposez d'un outil de modélisation, vous"ll ont à faire.
Mais avis, ce pointeur/référence de champ est censé être un défaut, de sorte que vous n'avez pas besoin vraiment préciser votre cas dans le diagramme de classe.
Si vous voulez montrer cette information d'une manière correcte, utiliser un plus détaillé Diagramme de Structure Composite. De là, vous pouvez afficher ces &,*,[] vous le souhaitez.
Pour les différentes variantes de l'association dans le diagramme de classes look de cette ma réponse pour la question similaire:
https://stackoverflow.com/a/21478862/715269