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

时间:2017-08-06 14:48:16

标签: java class model uml diagram

我正在尝试为学校创建一个简单的类图。在我的班级层次结构中,学校通常由两个主要利益相关者(学生和教师)组成,并且许多学生可以分配给教师即可。我可以知道如何展示这种关系吗?

我在类图中使用了聚合和枚举,但是我不确定它是否正确。你能告诉我吗? enter image description here

2 个答案:

答案 0 :(得分:5)

多重性:您使用多重性的方式是正确的(我可以预见)。这意味着每位教师必须至少有一名学生。没有学生,就没有老师。听起来像是一所没有永久教师的雇佣和消防学校。

聚合:您可以按照自己的方式使用共享聚合(开放式菱形)。这是正确的,但请参阅下面的评论。

枚举:关于<<enumeration>>,您只需要一个依赖项而不是一个关联项。与类的关系不同,<<enumeration>>是一种&#34;原语&#34;没有表示为对象。

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

有关共享聚合的其他备注: 您不必关心共享聚合。根据UML规范,它没有共同的语义(UML 2.5的第110页):

  

表示该属性具有共享聚合语义。共享聚合的精确语义因应用领域和建模者而异。

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

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

答案 1 :(得分:3)

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

public class Teacher extends StakeHolders{

   public Student[] students;

   public void markAttendance(){

   }
}