Diagramme de classe UML de l'association - comment, quand et pourquoi?
J'ai l'habitude de les obtenir, de sorte confondu avec UML et cette situation n'est pas différente.
Disons que j'ai une interface IAnimal, de la catégorie Aliments et Chat:
interface IAnimal {
void Feed(Food food);
}
class Cat : IAnimal {
void Feed(Food food) {
//code
}
}
J'ai 3 questions à propos du dessin de diagramme de classe UML pour ces 3 éléments:
- Je suppose que je devrais utiliser de l'association entre IAnimal et de la Nourriture ou du Chat et de la Nourriture. Devrait-il y avoir une flèche sur un des côtés de l'association de la ligne, si oui, puis sur le côté et pourquoi là?
- si j'écris Nourrir comme un IAnimal méthode sur le diagramme, devrais-je écrire une méthode d'Alimentation à l'intérieur de la classe Chat ou dois-je écrire que seules de nouvelles méthodes Chat?
- le plus important: l'association doit-elle être comprise entre IAnimal et de l'Alimentation, de Chat et de la Nourriture, ou les deux?
Quel type de diagramme UML? Je suppose un Diagramme de Classe, mais si oui, dites - le! Il y a 12 autres types de diagramme UML!
OriginalL'auteur agnieszka | 2009-01-02
Vous devez vous connecter pour publier un commentaire.
UML définit un certain nombre de relation types.
Les relations ont un certain nombre de différentes notations:
Picturalement
Qui est:
IAnimal
etFood
est un utilisation relation.Ceci est montré comme une dépendance avec le stéréotype «utiliser»
IAnimal
etCat
est un réalisation relation.Relations d'Association sont utilisés pour indiquer connexions entre deux ou plusieurs classificateurs. Cela implique qu'au moins une des classes a un attribut de l'autre type (ou une collection). En fait, les attributs et les association se termine contiennent les mêmes informations et peuvent être interchangés.
Donc, à mon humble avis, les relations que vous décrivez ne doit pas être modélisées comme des associations.
OriginalL'auteur toolkit
En supposant une classe de schéma électrique, vous devriez avoir une "utilisation" de l'association entre IAnimal et de la Nourriture et un "est" une association entre Chat et de la IAnimal et de Chien et IAnimal:
et pourquoi ne pas écrire une association de la ligne entre Chat et de la Nourriture? il utilise la Nourriture. ou est-ce juste "nous ne sommes pas à la fin de l'histoire"?
Parce que ce serait redondant. Le schéma déjà nous dit un animal utilise la nourriture, et un chat "est un" animal. Donc un chat utilise la nourriture. Un supplément de flèche serait le désordre.
est-il de même avec les méthodes? dois-je écrire que le Chat a une méthode d'Alimentation ou suffit-il que IAnimal en a un?
Il suffit que IAnimal en a un.
OriginalL'auteur Arne Burmeister
Comment vous êtes pointilleux sur ce genre de choses dépend en grande partie sur ce que vous êtes en utilisant UML pour en premier lieu.
Si vous avez une sorte de whizzy UML-à-code de traducteur, alors vous devez être pointilleux (mais il semble que vous êtes plus à l'aise avec le code que avec des boîtes et des lignes - alors, pourquoi voudriez-vous utiliser un tel outil?)
Si vous êtes tout simplement en utilisant UML pour communiquer avec d'autres personnes, alors vous pouvez vous permettre d'être un peu moins pointilleux.
Craig Larman "Application UML et Habitudes", souligne ce point, en incluant des diagrammes qui regardent comme si ils ont été esquissées sur un tableau blanc. Une solide ligne que le standard UML, selon eux, devrait être en pointillé est bien dans ce genre de schéma. Donc, avec des pointes de flèche et ainsi de suite.
Il est clair pour moi que la ligne devrait passer de
IAnimal
àFood
.Si la pointe de la flèche ajoute de la clarté (pour les lecteurs) est une question de choix, mais il indique une relation unidirectionnelle:
De l'introduction de ce morceau:
vous avez raison, mais c'est à vous de choisir le détail du document. Vous pouvez supprimer toutes les méthodes de la classe de schéma électrique, vous pouvez dessiner des différentes ne choisir que certaines associations pour chaque. C'est souvent utile pour les grands diagrammes qui va être encombré avec des lignes partout.
Édité ma réponse à clarifier cela.
OriginalL'auteur slim
Je dirais que IAnimal aurait-Alimentaire, car il est métabolisé, mais si vous voulez vraiment pour désigner A-je pense qu'il devrait être une agrégation (ouvert de diamant) ou de la composition de symbole (rempli de diamants), en fonction de la suppression en cascade caractéristiques.
Il y a deux écoles de pensée avec UML, selon Martin Fowler. Il y a les "dessinateurs", qui utilisent la notation sur les tableaux blancs et les morceaux de papier pour communiquer assez de leurs idées à d'autres développeurs.
Puis il y a ceux qui considèrent UML comme des dessins d'ingénierie, où chaque détail d'un dessin ou modèle doivent être capturés.
Je suis fermement dans l'ancien camp. En tant qu'ancien ingénieur, je peux vous dire par expérience personnelle que UML n'a pas le pouvoir réel des dessins d'ingénierie pour obtenir de conception de logiciel.
S'il vous arrive de croire dans le dernier cas, veuillez faire un ordinateur de bureau complet ou web, conception de l'INTERFACE utilisateur à l'aide d'UML et de la publier ici.
OriginalL'auteur duffymo
1) Aucune des associations doit être écrit entre l'interface IAnimal et le type de Nourriture. Les Associations ne sont utilisés pour se connecter avec des types de propriétés à l'intérieur des classes. E. G
ensuite, vous devez écrire une association indiquant la connexion entre ces deux types.
Ce que vous devriez tirage au contraire, est une dépendance pour indiquer que l'interface IAnimal dépend du type de Nourriture. La dépendance est établi de même que l'association dans l'image ci-dessus, il suffit de changer la ligne droite de la ligne pointillée.
2) non, ne pas écrire ces méthodes et de ne pas écrire avec des dépendances. Laissez tous les notations seulement sur l'Interface IAnimal
OriginalL'auteur Nikola Stjelja