2013-08-20 66 views
1

如果我將一個指向某個類的對象的指針添加爲UML中的類圖中的類的數據屬性,那麼下面的格式是否錯誤?對象作爲類圖中的類的數據屬性UML

enter image description here

+0

你是什麼意思的「錯」?據我所知,不違反UML規範。指針仍然是成員變量。在更概念層面上,我將其解讀爲「每個代理人都有能力,動作和看見」。無論那些意思。更重要的是:它是否適合你和你的觀衆?你們都知道你的意思嗎?如果是的話就沒問題。 – sfinnie

+0

謝謝@sfinnie,我搜索了互聯網,但在類圖中找不到任何有關使用對象的內容,在類屬性內強調了對象的正確性? –

+0

已經提供了答案,比評論更合適。 – sfinnie

回答

1

找不到任何有關在類圖使用對象的東西,是 強調類屬性中的對象是否正確?

我想你可能會誤解類,對象和屬性。道歉,如果這是我做錯誤的理解。所以。這裏是簡短的回答:

  • 它是絕對正常的,屬性的類型是一個類。換句話說,你並不侷限於使用像int,long,char等原始類型。
  • 正如你所說,結果就是在運行時這些屬性的值本身就是對象。具體而言,類的能力,移動和看到的實例。更具體地說,代理(即每個代理對象)的每個實例將持有對其他3個對象的引用 - 或更確切地說是指針 - 每個「能力」,「移動」和「看」的實例。

所以,假設這是正確的,你有什麼是正確的 - 除了下劃線。

爲屬性或操作加下劃線表示它位於類級而不是實例級。這相當於java中的static。想想在類作用域或構造函數中聲明常量。

如果我理解你的模型不是你想要的。您希望Agent的每個實例都擁有(指向)自己的Ability,Move和See實例。您不希望所有Agent對象共享相同的3個實例。假設如此,你不需要下劃線。

希望我明白,這有幫助。

+0

精彩的解釋,謝謝:) –

+0

也刪除屬性名稱中的'*'。如果你的屬性是由一個類輸入的,它就是對這個類的一個實例的引用,所以不需要(並且非法)添加'*'來表示它是一個指針。 – Xaelis