UML 中的类型化聚合
Typed aggregation in UML
在下面的 UML class 图中,我想表明 Course.chapters
和 Chapter.sections
成员是由 AugmentedList<Chapter>
和 [=14= 实现的]分别。
我知道在SO上应该避免图片,所以这里是这个图对应的Kotlin代码。
interface AugmentedList<E>: List<E> {
val introduction: String
val conclusion: String
}
interface Section
interface Chapter {
val sections: AugmentedList<Section>
}
interface Course {
val chapters: AugmentedList<Chapter>
}
我知道将模板化 class 绑定到非模板化 class 的方法是通过 binding,但是我想避免向图表,因为接口 AugmentedList<Chapter>
和 AugmentedList<Section>
不会在代码中显式实现。
也许对于未实现但仅在 UML 图中使用的接口存在刻板印象?
我也考虑过向 Course
接口添加限定符 chapters: AugmentedList<Chapter>
,但我觉得这不是限定符的目的。
是否有正确的方法来准确说明组合的实现方式?
图表中的警告章节和部分在错误的一侧,它们必须与多重性在同一侧0..*
.
如果您不想显示命名绑定 类,例如 ChapterList 和 SectionList,例如 :
你可以使用匿名绑定类(见图9.6 匿名绑定Class第106页formal/2017-12-05):
如果您甚至不想显示它们,您可以使用属性来显示属性:
无论如何,如果你想画你的作品,你可以这样做:
这清楚地(即使不是正式地)表明了 chapters/sections 是如何被记住的。当然理论上你必须定义构造型 AugmentedList,扩展元类 Association 通常用于模型到代码转换是扩展 UML 的原因之一(参见第 12.3.1.1 定位配置文件与元模型、MOF 和 UML formal/2017-12-05 第 252 和 253 页)
在图表中,我使用一些依赖项 <<use>>
来突出显示 类 之间的链接,它们不是强制性的,例如,您可以直接在 课程 [=53 之间使用它们=] 和 Chapter 以及在 Chapter 和 Section 之间(如果情况并非如此)。
在下面的 UML class 图中,我想表明 Course.chapters
和 Chapter.sections
成员是由 AugmentedList<Chapter>
和 [=14= 实现的]分别。
我知道在SO上应该避免图片,所以这里是这个图对应的Kotlin代码。
interface AugmentedList<E>: List<E> {
val introduction: String
val conclusion: String
}
interface Section
interface Chapter {
val sections: AugmentedList<Section>
}
interface Course {
val chapters: AugmentedList<Chapter>
}
我知道将模板化 class 绑定到非模板化 class 的方法是通过 binding,但是我想避免向图表,因为接口 AugmentedList<Chapter>
和 AugmentedList<Section>
不会在代码中显式实现。
也许对于未实现但仅在 UML 图中使用的接口存在刻板印象?
我也考虑过向 Course
接口添加限定符 chapters: AugmentedList<Chapter>
,但我觉得这不是限定符的目的。
是否有正确的方法来准确说明组合的实现方式?
图表中的警告章节和部分在错误的一侧,它们必须与多重性在同一侧0..*
.
如果您不想显示命名绑定 类,例如 ChapterList 和 SectionList,例如 :
你可以使用匿名绑定类(见图9.6 匿名绑定Class第106页formal/2017-12-05):
如果您甚至不想显示它们,您可以使用属性来显示属性:
无论如何,如果你想画你的作品,你可以这样做:
这清楚地(即使不是正式地)表明了 chapters/sections 是如何被记住的。当然理论上你必须定义构造型 AugmentedList,扩展元类 Association 通常用于模型到代码转换是扩展 UML 的原因之一(参见第 12.3.1.1 定位配置文件与元模型、MOF 和 UML formal/2017-12-05 第 252 和 253 页)
在图表中,我使用一些依赖项 <<use>>
来突出显示 类 之间的链接,它们不是强制性的,例如,您可以直接在 课程 [=53 之间使用它们=] 和 Chapter 以及在 Chapter 和 Section 之间(如果情况并非如此)。