为学校制作一个简单的 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(){
}
}
我正在尝试为学校创建一个简单的 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(){
}
}