纠正UML语义和语法

时间:2013-07-30 03:36:23

标签: uml

我有2个名为owner的UML类,后跟车辆。

我想知道我是否可以声明该车辆“概括”所有者,因为我希望对象车辆继承分配给所有者的属性。这似乎不对,因为我不会将车辆视为车主的子类或子类型,但看到我是UML的新手,我不是专家。

2 个答案:

答案 0 :(得分:4)

你说,“车辆'概括'拥有者',但随后说,”我希望对象车辆继承分配给所有者的属性。“这两个语句是矛盾的,因为超类概括和子类专门化。由于您希望Vehicle从Owner中继承属性,我假设您在询问是否可以声明所有者概括 Vehicle(以及Vehicle 专门所有者)。

在现实世界中,是一个真实的陈述,即每辆车总是一种所有者。您的车拥有什么?你是说它“拥有”它的发动机,车轮和车门?这与“拥有”您的汽车或您家的概念相同吗?

类代表的不仅仅是可重用属性和方法的桶,它们可以让你看似节省一些编码时间 - 尽管很多程序员都会这样对待它们。它们被称为,因为它们代表问题域中的事物类(即“真实世界”)。这是许多程序员误入歧途的地方 - 他们专注于解决方案领域中的事情,这些事情变化得更快,并且他们失去了面向对象的所有好处。 OOA / OOP的关键原则之一是问题域不经常更改,因此它提供了一个相对稳定的基础来构建软件。如果你声称奇怪的东西,比如“车辆永远是一种所有者”,你就会在不稳定的沙滩上建造,并且可能会花费大量时间来对抗潮流,当你发现声称不再那么方便的情况时。 车辆始终车主的方式是什么?许多以商业为导向的主题专家会与您达成一致吗?

答案 1 :(得分:1)

您可以使用公共抽象类重新组合常用属性。假设您希望所有者 Vehicle 共享公共名称属性。您可以使用以下模型。

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