我正在创建一个小型 ORM,并且必须使用 UML 制作一个类图。我如何表示属性是从公共(public)父类(super class)继承的类实例的数组,如下所示:
class Model {
public attributes: string[];
}
class User extends Model {}
class Schedule extends Model {}
class Controller {
private models: Model[] = [new User, new Schedule]
}
如何在 UML 图中对类 Controller 进行建模?
我这样做了:
但我认为这是错误的,因为 Controller 类不应该有一个模型实例数组, Controller 类应该有一个从模型继承的类数组。
最佳答案
私有(private)属性(property)model
类Model
,但没有上限的多重性可以记为属性:
- model: Model [*]
但您也可以通过关联以图形方式显示它,告诉每个 Controller
实例可能与 0 个或多个 Model
关联实例:
-
意味着private
,*
是多样性的捷径0..*
至少意味着0
实例和*
没有最高限制。
根据已编辑的问题进行编辑
在同一张图中,您也可以说 Model
可以进一步特化 User
和Schedule
两者都继承自它:
这对应于您想要建模的内容:它表示 Controller
实例可以与 0 个或多个 Model
关联实例。但这些实例不必是父类(super class)的直接实例:在 UML 中,当User
时或Schedule
继承自Model
,这意味着 User
的每个实例或Schedule
也是 Model
的一个实例。因此, Controller 实例可以链接到计划和用户。
顺便说一句:你可以做 Model
一个抽象类(名称为斜体),表示没有模型的直接实例,只有其子类的实例。
关于arrays - 如何表示一个类型为多个类继承的类的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74159195/