在找到系统的对象类之后,我们需要分析和认识各类对象之间的关系,从而使对象类构成一个整体的、有机的系统模型。对象与外部的关系有以下几种:
(1) 对象之间的分类关系,即泛化关系;
(2) 对象之间的组成关系,即聚合关系;
(3) 对象之间的静态关系,即关联关系;
(4) 对象之间的动态关系,即依赖关系。
发现泛化关系
我们可以参考应用领域已有的一些分类知识,也可以按照自己的常识,从各种不同角度考虑事物的分类,找出对象类之间的泛化关系。另外,通过考察系统中每个类的属性和服务,找出类之间的泛化关系。
* 查看一个类的属性与服务是否适合这个类的全部对象,如果某些属性或服务只适合该类的一部分对象,说明应该从这个类中划分出一部分特殊类,建立泛化关系;
* 检查是否某些类具有相同的属性和服务,如果把这些相同的属性和服务提取出来,能否在概念上构成这些类的父类,形成泛化关系。
为了加强分析模型的可复用性,应该进一步考虑在更高的层次上运用泛化关系,从而开发一些可复用的构件类。
发现聚合关系
聚合关系可以清晰地表达问题域中事物之间的组成关系,我们可以考虑以下方面建立聚合关系:
* 物理上的整体事物和组成部分,如设备与零部件的关系;
* 组织机构及其下级组织,如学校和系的关系;
* 团体(组织)与成员,如学校和教师的关系;
* 抽象事物的整体与部分,如法律与法律条文;
* 具体事物及其某个抽象方面,如人员与身份。
发现关联关系
关联关系表示对象之间的静态联系,即可以通过对象属性来表示的一个对象对另一个对象的依赖关系。在现实中存在大量的这种关系,如"教师"与"学生"之间的教学关系。我们可以通过以下分析活动,建立对象之间的关联关系:
* 认识对象之间的静态联系,如"学生"与"课程"之间存在选课关系,那么这两个类存在关联关系;
* 认识关联的属性和操作,如在"学生"和"课程"的连接中,需要给出开课学期、讲课教师等属性信息;
* 分析关联的多重性,如"学生"和"课程"是多对多的连接;
* 对于多元关联,需要增加一个对象类,使之转化为二元关联;
* 对于多对多的关联,需要增加一个对象类,使之转化为两个一对多的关联。
发现依赖关系
在面向对象的系统中,消息体现了对象行为之间的依赖关系,实现了对象之间的动态联系,使系统成为一个能活动的整体,并使各个部分能够协调工作。我们通过模拟和跟踪对象服务的执行过程,考虑当该对象执行时是否需要请求其它对象提供服务、是否需要向其他对象提供或索取某些数据等问题,从而建立依赖关系。
|