Chinaunix首页 | 论坛 | 博客
  • 博客访问: 180758
  • 博文数量: 12
  • 博客积分: 3000
  • 博客等级: 中校
  • 技术积分: 240
  • 用 户 组: 普通用户
  • 注册时间: 2007-08-04 15:43
文章分类

全部博文(12)

文章存档

2011年(1)

2009年(1)

2008年(10)

我的朋友

分类: 项目管理

2008-08-14 18:41:49

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,所以更多时候我们还是创建一个关联类来实现。

阅读(1776) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~