UML: how to implement Association class in Java

我的梦境 提交于 2019-11-28 05:58:22
JB Nizet

First of all, don't use Vector, as it's an old class that shouldn't be used anymore for more than 10 years. Use either a Set or a List.

If the Transcript class contains information about the way a student attends a course (for example, the date of its subscription to the course), you could implement it like this:

class Student {
    Set<Transcript> transcripts;
}

class Transcript {
    Student student;
    Course course;
    Date subscriptionDate;
}

class Course {
    Set<Transcript> transcripts;
}

That doesn't prevent you from providing a method in Student that returns all his courses: 

public Set<Course> getCourses() {
    Set<Course> result = new HashSet<Course>();
    for (Transcript transcript : transcripts) {
        result.add(transcript.getCourse());
    }
    return result;
}

If Transcript doesn't contain any information, then it's probably there to model how these classes would be mapped in database tables, where the only way to have a many-to-many association between two tables is to use a join table holding the IDs of the two associated tables.

I know this question is very old but I have a way more convenient than embedding n..1 relations in the association class :

public class Transcript {
    //Transcript's properties
} 

public class Course {

    private Map<Student, Transcript> transcriptsByStudent;
}

public class Student {

    private Map<Course, Transcript> transcriptsByCourse;
}

Just to add on, on your model you denote multiplicity on the association class. This is unnecessary because the association class IS the association itself, and the multiplicity relationship of the original two classes will satisfy.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!