UML class 图依赖或关联

UML class diagram dependency or association

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

例如,

class AttendanceSheet {
    Map<String> students;
    boolean[] attend;

    public void addStudent(Student s)
    {
        students.add(s.getName(),s.getStudentNumber());
    }

    public void checkAttendance(String name) { //... }
}

class Student {
    private String name;
    private int staffNumber;
    //more information such as address, age, etc..

    Student(String n, int sn)
    {
        name = n;
        studentNumber = sn;
    }

    public String getName()
    {
        return name.clone();
    }

    public String getStudentNumber()
    {
        return studentNumber;
    }
}

对于这种情况,Student 和 Association 是否存在关联或依赖关系? 这是因为我不确定关联是否必须具有对象的实际引用,或者仅具有可以到达对象的某些信息就足够了(因为学生 ID 和编号足以知道它是哪个学生对象)正指向)。

在您的情况下,<<uses>> 就足够了,因为您在 AttendanceSheet.

中没有 Student 类型的实际属性

附带说明:不使用对象引用而仅使用 studentNumber 至少可以说是一种奇怪的设计。但是不知道上下文

在业务层面上,这些对象是相关的,但没有单一的首选方法来绘制这种关系。

有关该主题的更多详细信息,请参阅 UML specification 的第 9.5.4 节,尤其是图 9.12

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

在第一个保持可追溯性的方法中,您可以像以前一样使用显式 Dependency

人们也可以将 students 视为 共享聚合 ,但它也可能被认为是矫枉过正。没有必要,只是显示答案完整性的可能性。

您还可以考虑 限定关联 以指示对 Student 的引用基于其特定属性。这非常接近您的需要。抱歉,我不知道如何在我的工具中实现这样的符号,但您可以在上述规范的第 11.5 节的图 11.37 中找到更多详细信息。