2012-03-19 3 views
2

Voici un exemple très rapide pour mon problème:UML: Les associations entre les classes spécialisées

http://img19.imageshack.us/img19/3575/workertool.png

(je ne suis pas autorisé à afficher l'image ici parce que je suis un nouvel utilisateur)

Le code source pour les deux classes ressemble à ceci:

public abstract class Worker{ 

    private Tool myTool; 

} 

public class ABCWorker extends Worker{ 

    public ABCWorker(){ 
    myTool = new ABCTool(); 
    } 

    public work(){ 
    tool = (ABCTool) myTool; 
    //use tool to do some work 
    } 

} 

Comment est-ce que je modélise correctement ceci en UML? À mon avis, il n'y a que trois possibilités:

1) La façon dont je l'ai fait dans l'exemple. Ceci est faux, cependant, car il est dit qu'un ABCWorker peut utiliser n'importe quel outil. Cependant, il ne peut utiliser qu'un ABCTool.

2) Mettez une deuxième association entre ABCWorker et ABCTool. Manifestement faux parce que cela signifierait qu'un ABCWorker utilise deux outils, un ABCTool et un générique.

3) Ne mettre qu'une association entre ABCWorker et ABCTool. Aussi faux, car il omet la relation entre le travailleur et l'outil.

Alors, comment dois-je faire?

Répondre

0

Certaines choses ne peuvent pas être affichées sur un diagramme de classes. Ceci est par exemple un de ces cas, où vous ne pouvez pas vraiment montrer l'interaction entre les objets. Et c'est normal, parce que c'est un diagramme de classe.

Si cela est vraiment important pour vous, alors vous devriez le modéliser en utilisant un diagramme plus approprié, afin de l'expliquer.

+0

Je pense un diagramme de classes est plus approprié pour ce que je fais. Je suis tombé sur ce problème en travaillant sur une thèse, donc si cela ne peut vraiment pas être montré dans un diagramme de classe, je pense pouvoir faire ce que j'ai fait dans l'exemple et dire dans le texte qu'un ABCWorker utilisera toujours un ABCTool. – aheld

+0

Oui, la seule autre solution est l'utilisation d'un commentaire. Mais c'est si ce n'est pas pertinent d'utiliser un autre diagramme. Donc, selon l'importance de cela, créez un nouveau diagramme, ou commentez-le. – squelos

1

Option 2 est presque correcte

2) Mettre une deuxième association entre ABCWorker et ABCTool. Evidemment, c'est faux car cela signifierait qu'un ABCWorker utilise deux outils, un ABCTool et un générique.

Vous définissez une nouvelle propriété ABCTools qui redéfinit l'outil de propriété.

http://www.uml-diagrams.org/uml-core.html#redefinable-element

class Worker { 
    myTool:Tool; 
} 

class HardWorker { 
    hammer:ABCTool {redefines myTool} 
} 
Questions connexes