我想知道一勞永逸如何編寫UML基數,因爲我經常不得不討論關於他們(這樣的證明和來源是非常歡迎的。如何*真*寫UML基數?
如果我想要一個解釋Mother
可以有幾個Child
仁但一個Child
有且只有一個Mother
,我應該寫:
Mother * ---------- 1 Child
或者
Mother 1 ---------- * Child
?
我想知道一勞永逸如何編寫UML基數,因爲我經常不得不討論關於他們(這樣的證明和來源是非常歡迎的。如何*真*寫UML基數?
如果我想要一個解釋Mother
可以有幾個Child
仁但一個Child
有且只有一個Mother
,我應該寫:
Mother * ---------- 1 Child
或者
Mother 1 ---------- * Child
?
第二個 母親1 ----------------- 1 .. *兒童
你會發現在UML specification爲相關的所有人物大量的實例抽象語法...
很多人在開始使用UML時都會遇到這個問題,特別是當它們來自另一個表示名稱總是按順時針方向讀取的表示法時,無論它們位於哪一行。這真是混淆!
紅鬍子是正確的,儘管UML規範沒有明確規定關聯結束信息(即名稱和多重性)的寫法,它暗示了它在幾個地方。例如,圖7.11(顯示屬性)和7.12(顯示與箭頭旁的關聯結點的單向關聯)是等效屬性符號;因此,多重性的確會走到物業的類型旁邊。
我學會記住哪一端具有多重性,想象一個單向圖形的實例,並在指向目標的箭頭旁邊寫下數字。
順便說一句,你應該使用描述性關聯結束名稱。這些常常變成Java中的屬性名稱,XSD中的元素名稱等等。例如,在Java中,Mother類可能具有類型爲「Set <Child>」的「children」屬性。如果你不給它們命名,你通常會得到不需要的默認名稱。
當然紅鬍子是正確的,正確的答案是第二個。
至於記住這一個提示,我建議用英語思考:你說「孩子有ONE母親」,並在這句話就像在UML,ONE被旁邊寫着母親。相當簡單。
如果您已經熟悉** Merise **符號,那麼UML只是爲了確定基數而採用其他方法。因此,你的第一個例子在Merise圖中是正確的。 – Attila