UML类图依赖关系或关联

UML类图依赖关系或关联,uml,class-diagram,Uml,Class Diagram,在某些情况下,我不确定如何区分是否应该将关系定义为依赖关系或关联关系 比如说, 课堂考勤表{ 学生地图; 参加; 公立学校学生(学生) { 添加(s.getName(),s.getStudentNumber()); } public void checkAttention(字符串名称){/…} } 班级学生{ 私有字符串名称; 私人int员工编号; //更多信息,如地址、年龄等。。 学生(字符串n,整数sn) { name=n; 学生人数=sn; } 公共字符串getName() { 返回nam

在某些情况下,我不确定如何区分是否应该将关系定义为依赖关系或关联关系

比如说,

课堂考勤表{
学生地图;
参加;
公立学校学生(学生)
{
添加(s.getName(),s.getStudentNumber());
}
public void checkAttention(字符串名称){/…}
}
班级学生{
私有字符串名称;
私人int员工编号;
//更多信息,如地址、年龄等。。
学生(字符串n,整数sn)
{
name=n;
学生人数=sn;
}
公共字符串getName()
{
返回name.clone();
}
公共字符串getStudentNumber()
{
返回学号;
}
}
在这种情况下,学生和社团会有联系还是依赖关系? 这是因为我不确定关联是否必须具有对象的实际引用,或者仅仅具有可以到达对象的特定信息就足够了(因为学生id和编号远远足以知道它指向哪个学生对象)。

在您的情况下,
就足够了,因为您在
AttendanceSheet
中没有类型为
Student
的实际属性


作为旁注:不使用对象引用,而只使用
studentNumber
至少可以说是一种奇怪的设计。但是我不知道上下文。

在业务级别上,这些对象是相关的,但是没有一种首选的方法来绘制这种关系图

有关此主题的更多详细信息,请参见的第9.5.4节,特别是图9.12

具体来说,这两个符号在语义上是等价的(我忽略了不相关的细节):

在第一种保持可跟踪性的方法中,您可以使用显式的依赖关系,这与您所使用的方法基本相同

也可以考虑<代码>学生<代码>作为<强>共享聚合< /强>,但是它也可能被认为是过度的。没有必要,只是显示了答案完整性的可能性


您还可以考虑<强>关联的关联< /强>,以指示对<代码>学生<代码>的引用是基于它们的特定属性。这是非常接近你的需要。很抱歉,我不知道如何在我的工具中实现这种表示法,但您可以在上述规范第11.5节的图11.37中找到更多详细信息。

这可能有些奇怪,因为我只是为了说明问题而编写了这个示例。无论如何谢谢你!我明白了:-)作为第二个旁注:原型是不需要的,您可以使用一个简单的依赖项。在讨论简单依赖项和定型依赖项之间的区别时,人们可能会变得富有哲理。