arrays - 如何表示一个类型为多个类继承的类的属性?

标签 arrays inheritance attributes uml class-diagram

我正在创建一个小型 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 进行建模?

我这样做了:

enter image description here

但我认为这是错误的,因为 Controller 类不应该有一个模型实例数组, Controller 类应该有一个从模型继承的类数组。

最佳答案

私有(private)属性(property)modelModel ,但没有上限的多重性可以记为属性:

- model: Model [*]

但您也可以通过关联以图形方式显示它,告诉每个 Controller实例可能与 0 个或多个 Model 关联实例:

Diagram with 2 associated classes

-意味着private*是多样性的捷径0..*至少意味着0实例和*没有最高限制。

根据已编辑的问题进行编辑

在同一张图中,您也可以说 Model可以进一步特化 UserSchedule两者都继承自它:

enter image description here

这对应于您想要建模的内容:它表示 Controller实例可以与 0 个或多个 Model 关联实例。但这些实例不必是父类(super class)的直接实例:在 UML 中,当User时或Schedule继承自Model ,这意味着 User 的每个实例或Schedule也是 Model 的一个实例。因此, Controller 实例可以链接到计划和用户。

顺便说一句:你可以做 Model一个抽象类(名称为斜体),表示没有模型的直接实例,只有其子类的实例。

关于arrays - 如何表示一个类型为多个类继承的类的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74159195/

相关文章:

java - 从数组中删除特定值(java)

c++ - 在 C++ 中,指针类型数组的元素是否保证默认初始化为 nullptr?

在子类化(和静态方法)中使用泛型的 Java

python - 在 python 中更新 'constant' 属性时引发异常

java - 使用 Java 删除并返回数组中指定字符串的第一次出现

javascript - for 循环生成的二维 JavaScript 数组正在被最后一个循环结果覆盖

c++ - 类层次结构中所有对象的 shared_ptr 的静态 vector

c++ - 在访问存储在 vector<base*> 中的已知派生类对象时使用 dynamic_cast 或 static_cast 有什么问题?

android - ExifInterface 返回图像方向 0

c# - 仅允许特定类型的自定义属性