I have this UML Association class. Note that: horizontal line is a solid line and the vertical line is a dashed line.
--------- ---------
| |*(a) *(b)| |
| CLASS |________________| CLASS |
|STUDENT | | | COURSE |
--------- | ---------
|*(c)
______|______
| |
| |
| CLASS |
| TRANSCRIPT |
|_____________|
I understand this relationship but I have met some problems when implement this UML to code. I can implement relation between class Student and class Course to code. Here is my code:
class Student {
Vector b;
}
class Course {
Vector a;
}
But, at class Transcript, I don't understand so much, how to use this class in code. Is it the property of both class Student and Course. So, if that's true then the code will be:
class Student {
Vector b;
Vector c;
}
class Course {
Vector a;
Vector c;
}
Is it true? If this is wrong, please teach me how to implement this UML.
Thanks :)
解决方案
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 transcripts;
}
class Transcript {
Student student;
Course course;
Date subscriptionDate;
}
class Course {
Set transcripts;
}
That doesn't prevent you from providing a method in Student that returns all his courses:
public Set getCourses() {
Set result = new HashSet();
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.