【发布时间】:2014-08-26 05:29:19
【问题描述】:
我正在尝试对一些需求进行建模,并且我在网络上看到了一些具有用例概括的示例,但是 UML 2.5 standard review 没有说明用例图中的概括,或者我找不到。
那么,标准是否支持泛化?
【问题讨论】:
-
你会如何——正式地——定义泛化。在我看来这很难。你几乎可以概括任何东西,直到没有什么好说的了......关于矩形是正方形的概括还是相反的问题有很多讨论(在数学中,这种关系很清楚,在 oo-design 中,它是肯定不是)。
-
@CommuSoft:为什么在OO设计中不应该明确
Square是Rectangle的子类型?当然,可以正式定义特定类别类型的泛化。例如,OWL 这样做是为了类(对象类型)之间的泛化。 -
@gwag:因为一个简单的原因,一个矩形有一个额外的字段(和属性),这是违反 oo 设计的。我也会投票给 Square extends Rectangle`news.ycombinator.com/item?id=822354
-
@CommuSoft:就通用 OO 而言,您有一个观点,但问题是特定于 UML,其中确实正式定义了泛化。
-
@CommuSoft:这只是基于错误建模的误解。正确的模型是
Square是Rectangle( width, height)的子类型,Square附带一个不变量,要求宽度 = 高度。子类型化并不总是意味着添加属性,它也可能意味着添加约束/不变量(这在 XML Schema 中被restriction称为子类型化)。