2017-10-07 49 views
2

J'ai cherché plusieurs heures au cours des derniers semestres en essayant de m'assurer que je le présente correctement à mes étudiants. Rien que j'ai trouvé montre cette relation particulière. Ce semestre, je voudrais savoir que je le fais correctement.polymorphisme de modélisation en UML - dépendance aux classes abstraites

Nous avons une classe abstraite, Player et deux classes concrètes qui l'étendent (Pitcher et PositionPlayer). Ensuite, nous avons une classe, équipe avec une carte déclarée être moi-même

<Integer, Player> 

il semble que l'équipe dépend du joueur (la classe abstraite) mais je suppose que la dépendance pourrait être indiquée pour les sous-classes. S'il vous plaît dites-moi lequel de ces est correct, le premier ou le bas? (mon éditeur UML ne fera pas d'italique, d'où les tags). Merci d'avance pour votre aide.

enter image description here

+0

Je ne sais pas pourquoi vous avez supprimé votre commentaire. J'ai réussi à le voir alors je vais répondre. Si 'Team' doit baisser' Player' à 'Pitcher' alors oui la partie inférieure est bonne. Ce que je dis c'est que c'est une mauvaise conception voir https://en.wikipedia.org/wiki/Downcasting#Criticism il y a quelques liens utiles au bas de cette page. – Oleg

+0

Un peu pertinent est [this] (https://cseducators.stackexchange.com/search?q=uml). (Et, bien sûr, il semble que ce site entier pourrait être pertinent pour vous dans tous les cas.) –

Répondre

1

deux sont corrects. Le haut est plus général et le bas plus spécifique. Mais les deux disent la même chose.

Ce qui suit est pour montrer où vous utiliseriez la partie inférieure de votre conception. Si vous possédez une troisième sous-classe dont Team ne dépend pas, vous utilisez la représentation inférieure - sans dépendance à la nouvelle sous-classe.

enter image description here

peut-être pas très réaliste, mais qui pourrait être une constellation de jeu fictif.

+0

Merci! J'apprécie vraiment votre temps. Je suis également ravi de savoir que je n'ai dirigé personne de la façon dont je l'ai enseigné. – AApplin

+0

Comment 'Team' dépend-il des classes qu'il n'utilise pas et ne sait rien? Même si c'est UML correct (je vais vous faire confiance à ce sujet) ce n'est pas un moyen sensé de transmettre une relation significative, personne ne devrait faire que @AApplin et la norme devrait être changé. – Oleg

+0

@Oleg Le 'Joker' est juste un' Player'. Ne faisant pas partie de l'équipe, mais dans le domaine complet (non montré), il pourrait jouer un autre rôle. Seulement comme un «joueur», pas comme un joueur d'équipe. –

-1

Si l'équipe contient un attribut de type MAP, pour moi, cela signifie que Team contient une liste de joueurs, chacun identifié par un identifiant.

Si l'équipe contient un attribut de type joueur avec une cardinalité 0..n, cela signifie que cette équipe est associée au joueur.

Puisque chaque joueur est identifié par un entier, pour moi, il s'agit d'une association qualifiée.

enter image description here

+0

Excusez-vous, la cardinalité du joueur devrait être un, pour un identifiant, il y a un joueur. – granier

+0

S'il s'agit d'une réponse, modifiez-la de manière à ce qu'elle soit claire. Si c'est une question, posez une autre question. – Oleg

+0

c'est la réponse à la question en fait, pour moi une dépence n'est pas la bonne réponse puisque c'est une association ... Je préfère écrire la réponse comme une question, pour moi c'est plus gentil. – granier