java 类的关联,UML:如何在Java中实现关联类

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.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值