ORM开发中,UML类图如何表示父类子类实例数组属性?
如何在UML类图中建模Controller类
核心建模思路
你的代码里Controller的models属性利用了面向对象的多态特性:声明为Model[]但实际容纳Model的子类实例。在UML中,这种场景的建模完全符合标准规范,不需要特殊修改来单独指定子类,具体方式如下:
具体建模步骤
- 基础类结构
- 绘制
Model类,标注属性:+ attributes: string[*] - 绘制
User和Schedule类,用空心三角箭头指向Model,表示泛化(继承)关系
- 绘制
- Controller与Model的关联
- 绘制
Controller类,通过聚合关系与Model类连接:- 在
Controller端添加空心菱形(表示聚合,说明Model实例可独立于Controller存在) - 关联两端标注基数:
Controller端为1,Model端为*(表示一个Controller持有多个Model实例)
- 在
- 可选:在
Controller类内部显式标注属性:- models: Model[*],和关联关系配合使用,更清晰体现属性的类型与数量
- 绘制
为什么这样是正确的
UML中,父类型的集合声明(如Model[*])天然支持容纳其所有子类的实例,这和代码中的多态语义完全一致。User和Schedule与Model的泛化关系已经明确了它们的继承关系,因此Controller的models集合可以合法包含这两个子类的实例,你的初始建模如果是这样的结构,其实是正确的,无需额外调整来“指定子类”。
内容的提问来源于stack exchange,提问作者Miguel
相关产品推荐
相关产品推荐

