Вот очень быстрый пример моей проблемы:
http://img19.imageshack.us/img19/3575/workertool.png
(я не могу разместить изображение здесь, потому что я новый пользователь)
Исходный код для обоих классов выглядит следующим образом:
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
}
}
Как правильно смоделировать это в UML?На мой взгляд, есть только три возможности:
1) То, как я это сделал в примере.Это неправильно, однако, потому что он говорит, что ABCWorker может использовать любой инструмент.Однако он может использовать только ABCTool.
2) Поставить вторую связь между ABCWorker и ABCTool.Очевидно, что это неправильно, потому что это означало бы, что ABCWorker использует два инструмента, ABCTool и универсальный.
3) Установите только одну связь между ABCWorker и ABCTool.Также неправильно, потому что в нем пропущены отношения между Worker и Tool.
Так как мне это сделать?