(软件工程复习核心重点)第十章面向对象设计-第六节:设计关联和设计优化
作者:互联网
文章目录
一:设计关联
(1)关联
A:定义
在对象模型中,关联是联结不同对象的纽带,它指定了对象相互间的访问路径
B:确定实现关联的策略
- 选定一个全局性的策略统一实现所有关联
- 分别为每个关联选择具体的实现策略,以与它在应用系统中的使用方式相适应
(2)使用关联的方式
A:关联的遍历
- 单向遍历
- 双向遍历
B:实现单向遍历
- 若关联的重数是一元的,则实现关联的指针是一个简单指针
- 若关联的重数是多元的,则需要用一个指针集合实现关联
C:实现双向关联
- 只用属性实现一个方向的关联:如果两个方向遍历的频度相差很大,而且需要尽量减少存储开销和修改时的开销,则这是一种很有效的实现双向关联的方法
- 两个方向的关联都用属性实现:这种方法能实现快速访问。当访问次数远远多于修改次数时,这种实现方法很有效
- 用独立的关联对象实现双向关联:关联对象不属于相互关联的任何一个类,它是独立的关联类的实例
D:关联对象的实现
①:定义
用一个关联类来保存描述关联性质的信息,关联中的每个连接对应关联类的一个对象
②:方法
- 对于一对一的关联,关联对象可以与参与关联的任一个对象合并
- 对于一对多的关联,关联对象可以与多端对象合并
- 对于多对多的关联,关联链的性质不可能只与一个参与关联的对象有关
二:设计优化
(1)确定优先级
A:必要性
系统的各项质量指标并不是同等重要的,必须确定各项质量指标的优先级,以便在优化设计时制定折中方案。系统的整体质量与制定的折中方案密切相关。最终产品成功与否,在很大程度上取决于是否选择好了系统目标
B:方法
在效率和清晰度之间寻求适当的折中方案。在折中方案中设置的优先级应当是模糊的
(2)提高效率的几项技术
- 增加冗余关联以提高访问效率
- 调整查询次序
- 保留派生属性
(3)调整继承关系
A:继承关系
继承关系能够为一个类族定义一个协议,并能在类之间实现代码共享以减少冗余。一个基类和它的子孙类在一起称为一个类继承。在面向对象设计中,建立良好的类继承是非常重要的。利用类继承能够把若千个类组织成一个逻辑结构
B:建立类继承
①:抽象与具体
在设计类继承时,很少使用纯粹自顶向下的方法,通常的做法如下:
- 创建满足具体用途的类,然后对它们进行归纳
- 归纳出一些通用的类以后,根据需要再派生出具体类
- 进行一些具体化的工作后,再次归纳
②:为提高继承程度而修改类定义
在一组相似的类中存在公共的属性和公共的行为时,可以把这些公共的属性和行为抽取出来放在一个共同的祖先类中,供其子类继承,在对现有类进行归纳的时候,要注意下述两点:
- 不能违背领域知识和常识
- 应该确保现有类的协议不变
③:利用委托实现行为共享
仅当存在真实的一般一特殊关系(子类确实是父类的一种特殊形式) 时,利用继承机制实现行为共享才是合理的
标签:遍历,实现,关联,继承,软件工程,对象,设计,第六节 来源: https://blog.csdn.net/qq_39183034/article/details/122774251