2013-07-30 49 views
2

我有2个UML类,它们被命名为所有者,随后是车辆。正确的UML语义和语法

我想知道我是否可以说明车辆'概括'拥有者,因为我希望对象车辆继承分配给车主的属性。这看起来不正确,因为我不认为车辆是车主的子类或车主的子类型,但看到我是UML新手,我不是专家。

回答

4

你说“车辆”概括了“所有者”,但接着说:“我希望对象车辆继承分配给所有者的属性。”这两种说法是矛盾的,因为超类推广专业。既然你希望车辆继承车主的属性,我假设你是否可以说车主概括为车辆(和车辆专门所有者)。

在现实世界中,它是不是真实的说明,每车总有一种所有者。你的车拥有什么?你的意思是它“拥有”它的引擎,轮子和门?这与“拥有”你的汽车或你家的概念是否相同?

类意味着不仅仅是可重复使用的属性和方法的桶,它可以让你看起来更省时一些编码时间 - 尽管很多程序员都这样认为。它们被称为,因为它们代表问题域(即,“真实世界”)中的事物的类别。这是很多程序员误入歧途的地方 - 他们专注于解决方案域中的事情,这些事情变化更快,并且失去了面向对象的所有好处。 OOA/OOP的关键原则之一是问题领域很少发生变化,所以它为构建软件提供了一个相对稳定的基础。如果你声称奇怪的东西,比如“车辆永远是一种所有者”,那么你就建立在不稳定的沙滩上,并且可能会花费很多时间来抵抗潮流,因为当你发现索赔不再那么方便的情况下。 以什么方式是车辆总是业主?许多面向商业的主题专家是否会同意你的观点?

+0

感谢您的回答。原谅我的恩惠。我知道,如果我要说业主概括车辆和车辆专业化车主,那么说我是在试图表达车辆的所有权,例如车辆是一种业主,这是不正确的。鲍勃拥有福特。然而,我不确定我如何能够代表我正在努力实现的目标。 – PeanutsMonkey

+1

我想我会模拟一个扮演“AssetOwner”角色的“Person”和一个扮演“Asset”角色的“Vehicle”。然后你可以将它们联系起来。 (从英语语句开始,比如“一个'Asset'由一个'AssetOwner'拥有/一个'AssetOwner'拥有任意数量的'Assets'。)在这个小小的评论框中很难向你展示。我建议你从Leon开始Starr的优秀文章[Articulate Class Models](http://www.uml.org/HTB_Articulate_Class_Models_OMG.pdf),它有很多很好的例子。 –

1

您可以使用通用的抽象类来重新组合公共属性。假设你想要车主车辆共享一个共同的名称属性。你可以使用下面的模型。

UML common attributes http://app.genmymodel.com/engine/xaelis/commonAttributes.jpg

+0

谢谢Xaelis。这似乎很有意义,虽然由于我缺乏经验而无法确定以及UML方面的知识是否正确。我还需要考虑什么来验证和验证模型?有没有一种方法可以验证和验证模型? – PeanutsMonkey

+0

验证或验证模型没有魔法。最大的问题是“模型是否告诉你想说什么?”。但第一步是使用真正的建模工具而不是绘图工具。 – Xaelis

+0

老实说,我不知道,因为我越多地了解它,我越了解到我对模型的看法是有偏见的,并且很难从“局外人”的角度来看待。我正在使用适当的建模工具。嗯,有什么方法可以得到一位能引导我并纠正我的错误的maven的帮助,对我的设计有疑问? – PeanutsMonkey