为学校制作一个简单的 UML class 图

Making a simple UML class diagram for a school

我正在尝试为学校创建一个简单的 class 图表。在我的 class 层次结构中,一个 学校 通常由两个主要的 利益相关者 (学生和老师)和许多 students 可以分配给 teacher。我可以知道如何显示这种关系吗?

我在我的 class 图表中使用了聚合和枚举,但是,我不确定它是否正确。你能告诉我吗?

多重性:你使用多重性的方式是正确的(正如我所预见的那样)。这意味着每个老师必须至少有一个学生。没有学生,就没有老师。听起来像是一所没有固定教师的雇佣和解雇学校。

聚合:您可以像以前一样使用共享聚合(空心菱形)。这是正确的,但请看下面我的评论。

Enumeration:关于 <<enumeration>> 你只需要一个依赖而不是一个关联。与 类 的关系不同,<<enumeration>> 是一种 "primitive",它不表示为对象。

角色名称:正如@Oguz 指出的那样,在关联的末尾使用角色名称是个好主意。因此,您可以将 teacher 放在 Teacher 附近,将 students(复数,因为您有 1..*)放在 Student 附近。这些角色将作为属性实现。

关于共享聚合的补充说明: 您一定不要太在意共享聚合。根据 UML 规范,它没有通用语义(UML 2.5 第 110 页):

Indicates that the Property has shared aggregation semantics. Precise semantics of shared aggregation varies by application area and modeler.

聚合更多地是关于对象的生命周期,现实生活中的应用程序很少见(主要是如果您必须在成本或安全方面了解内存)。

所以在你的(和大多数其他)案例中,多重性就是你想要展示的。这通常比显示例如更重要。复合聚合(子对象与其父对象一起死亡)更不用说共享组合了。

您可以将聚合名称更改为学生。在 java 代码中,老师 class 有一个名为 students 的数组、arraylist 或 set 等。还有一件事,这个关系是 1 对多还是 0 对多(0..*)?

public class Teacher extends StakeHolders{

   public Student[] students;

   public void markAttendance(){

   }
}