2012-11-26 109 views
1

我完全理解代碼,但是我在理解UML時遇到了一些問題,因爲它涉及到代碼。UML關聯代碼

問題1 - 如果我有一個類

public class one 
{....} 

public class two 
{ 
    one ob; 
    public two(){ob=new one();} 
} 

我知道這是一個關聯,但我這顯示在類圖中帶箭頭或不?

enter image description here

問題2 - 如果我有以下類

public class three 
{ 
    public three(){.........} 

    public void method() { one obt=new one(); } 
} 

這是三班和一個類之間的關聯?我不確定,因爲它從方法中被應用。

回答

1

我知道這是一個關聯,但是我在一個帶有箭頭的類圖中展示了它嗎?

如果類one沒有提及two類,那麼你應該有一個箭頭。但它從two指向one(與您如何顯示的方式相反)。原因:箭頭表示可導航性。 two類可以導航到one類,因爲它包含一個實例。相反是不正確的。從技術上講,它應該是一個開放的箭頭,而不是你使用的封閉形式。

這是三級和一級之間的關聯嗎?我不確定,因爲它從方法中被應用。

如果從threeone唯一的參考是作爲方法參數,那麼你會很可能顯示爲一個依賴不是關聯。協會宣佈實體之間存在系統性關係 - 例如由Order Lines組成的Purchase Order。在大多數情況下轉換爲成員變量(或其集合)的代碼中。依戀是一種比協會更弱的關係形式,並不意味着系統的聯繫。

hth。

+1

有一件事要糾正:箭頭表示可導航性(不可見性)。沒有箭頭意味着協會可以在兩個方向上通航。 (這btw。並不一定意味着它有一個成員變量。) – Christian

+0

謝謝@Christian,更正。 – sfinnie

1

首先箭頭是從另一個方向,從twoone因爲two點在one。如果您沒有用箭頭表示它,則表示您不知道關係的方向 - 可以撥打one調用twotwo調用one。既然你知道two擁有one,你應該添加箭頭方向。

關於你提到的第二個問題,是的,這是從threeone因爲three需要one的關係。這種關係可以是依賴關係或關聯,具體取決於threeone的關係。