我有2個UML類,它們被命名爲所有者,隨後是車輛。正確的UML語義和語法
我想知道我是否可以說明車輛'概括'擁有者,因爲我希望對象車輛繼承分配給車主的屬性。這看起來不正確,因爲我不認爲車輛是車主的子類或車主的子類型,但看到我是UML新手,我不是專家。
我有2個UML類,它們被命名爲所有者,隨後是車輛。正確的UML語義和語法
我想知道我是否可以說明車輛'概括'擁有者,因爲我希望對象車輛繼承分配給車主的屬性。這看起來不正確,因爲我不認爲車輛是車主的子類或車主的子類型,但看到我是UML新手,我不是專家。
你說「車輛」概括了「所有者」,但接着說:「我希望對象車輛繼承分配給所有者的屬性。」這兩種說法是矛盾的,因爲超類推廣和專業。既然你希望車輛繼承車主的屬性,我假設你是否可以說車主概括爲車輛(和車輛專門所有者)。
在現實世界中,它是不是真實的說明,每車總有一種所有者。你的車擁有什麼?你的意思是它「擁有」它的引擎,輪子和門?這與「擁有」你的汽車或你家的概念是否相同?
類意味着不僅僅是可重複使用的屬性和方法的桶,它可以讓你看起來更省時一些編碼時間 - 儘管很多程序員都這樣認爲。它們被稱爲類,因爲它們代表問題域(即,「真實世界」)中的事物的類別。這是很多程序員誤入歧途的地方 - 他們專注於解決方案域中的事情,這些事情變化更快,並且失去了面向對象的所有好處。 OOA/OOP的關鍵原則之一是問題領域很少發生變化,所以它爲構建軟件提供了一個相對穩定的基礎。如果你聲稱奇怪的東西,比如「車輛永遠是一種所有者」,那麼你就建立在不穩定的沙灘上,並且可能會花費很多時間來抵抗潮流,因爲當你發現索賠不再那麼方便的情況下。 以什麼方式是車輛總是業主?許多面向商業的主題專家是否會同意你的觀點?
您可以使用通用的抽象類來重新組合公共屬性。假設你想要車主和車輛共享一個共同的名稱屬性。你可以使用下面的模型。
UML common attributes http://app.genmymodel.com/engine/xaelis/commonAttributes.jpg
謝謝Xaelis。這似乎很有意義,雖然由於我缺乏經驗而無法確定以及UML方面的知識是否正確。我還需要考慮什麼來驗證和驗證模型?有沒有一種方法可以驗證和驗證模型? – PeanutsMonkey
驗證或驗證模型沒有魔法。最大的問題是「模型是否告訴你想說什麼?」。但第一步是使用真正的建模工具而不是繪圖工具。 – Xaelis
老實說,我不知道,因爲我越多地瞭解它,我越瞭解到我對模型的看法是有偏見的,並且很難從「局外人」的角度來看待。我正在使用適當的建模工具。嗯,有什麼方法可以得到一位能引導我並糾正我的錯誤的maven的幫助,對我的設計有疑問? – PeanutsMonkey
感謝您的回答。原諒我的恩惠。我知道,如果我要說業主概括車輛和車輛專業化車主,那麼說我是在試圖表達車輛的所有權,例如車輛是一種業主,這是不正確的。鮑勃擁有福特。然而,我不確定我如何能夠代表我正在努力實現的目標。 – PeanutsMonkey
我想我會模擬一個扮演「AssetOwner」角色的「Person」和一個扮演「Asset」角色的「Vehicle」。然後你可以將它們聯繫起來。 (從英語語句開始,比如「一個'Asset'由一個'AssetOwner'擁有/一個'AssetOwner'擁有任意數量的'Assets'。)在這個小小的評論框中很難向你展示。我建議你從Leon開始Starr的優秀文章[Articulate Class Models](http://www.uml.org/HTB_Articulate_Class_Models_OMG.pdf),它有很多很好的例子。 –