2012-03-19 56 views
2

之間的關聯下面是我的問題,一個很簡單的例子:UML:專業類

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之間的關係。

那麼我該怎麼做呢?

回答

0

有些東西不能顯示在類圖上。 例如,這是其中一種情況,您無法真正顯示對象之間的交互。這很正常,因爲這是一個類圖。

如果這對你來說真的很重要,那麼你應該使用更合適的圖表對它進行建模,以解釋這一點。

+0

我認爲類圖是更適合我在做什麼。我在討論論文時遇到了這個問題,所以如果這真的不能在類圖中顯示出來,我想我可以放棄我在示例中做的事情,並在文本中說明ABCWorker將始終使用一個ABCTool。 – aheld 2012-03-19 11:07:11

+0

是的,唯一的解決方案是使用評論。但是,這是如果它不使用另一個圖。所以根據這個重要性,創建一個新的圖表,或者只是評論一下。 – squelos 2012-03-19 11:18:15

1

選項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} 
}