UML:专业类之间的关联

时间:2012-03-19 10:55:07

标签: inheritance uml associations modeling class-diagram

这是我的问题的一个非常快速的例子:

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之间的关系。

那我该怎么做呢?

2 个答案:

答案 0 :(得分:2)

选项2几乎是正确的

  

2)在ABCWorker和ABCTool之间建立第二个关联。明显   错误,因为这意味着ABCWorker使用两个工具,一个ABCTool   和通用的。

您定义了一个新属性ABCTools,它重新定义了属性工具。

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

class Worker {
     myTool:Tool;
}

class HardWorker { 
     hammer:ABCTool {redefines myTool}  
}

答案 1 :(得分:0)

有些事情无法在类图上显示。 例如,这是其中一种情况,您无法真正显示对象之间的交互。这是正常的,因为这是一个类图。

如果这对您来说非常重要,那么您应该使用更合适的图表对其进行建模,以便对此进行解释。