不能被忽略的关联类 The Importance of Association Class


The Importance of Association Class 

 

第一次接触到关联类(association class)的时候是在一个困境之中,当时还没有很多的编程经验,也忘了当时是怎么乱七八糟解决的那个问题. 这几天在Jacquiet Barker Grant Palmer所著的 Beginning C# Object中花了较大篇章来介绍关联类的,讲得非常不错,一个student,一个course,基本所有的attribute已经确定好了,还有一个grade(成绩)实在不知道是放在哪个类里?

l         它不是student类的attribute,因为它要的是单门课程的成绩,而不是所有成绩,如果真要硬绐student的话还得用上collection

l         它也不是course类的attribute,因为样所有的学生都只会得到一个相同的成绩

l          

此时就可以用上关联类,其实两种对象多对多关联这是一个用关联类非常典型的例子,

我们构建一个GradeReceived类来实现上述功能,在类图中用虚线连接到两个相互关联的类。

 

在很多情况下,如果在一个类图中看到一个关联类,往往可以用其它方式为表达:

 

l         对于一个包含关联类的“多对多关联”,可以将多对多关联分割为两个一对多关联,完全将关联类作为“中间类”插入到两个类之间。

值得注意的是,关联类作为中间类插入其中后,和两个类的联系的多端应在关联类这边,如下例一个student对象和course对象分别对应多个GradeRecived对象,

 

l         如果是一个“一多对关联”,如person对象和company对象之间可以有一个SalaryReceived关联类,这个关联类我们可以直接将salary作为person的一个attribute折叠到里,“一对一关联”也可以采用类似的方法。

然面这种取代方法是被建议不要使用的,因为person之所以有salary是因为和某个company之间建立了关联,所以我们并不是所有时候都希望person里面有个salaryattribute,所以更多时候我们还是创建一个关联类来实现。

你可能感兴趣的:(编程,object,C#,Class)