试题详情
- 简答题在类的通过复用的设计中,主要的继承关系有哪几种?试举例说明。
-
在类的通过复用的设计中,主要的继承关系有两大类:
①配置:利用既存类来设计类,可能会要求由既存类的实例提供类的某些特性。通过把相应类的实例声明为新类的属性来配置新类。例如,一种仿真服务器可能要求使用一个计时器来跟踪服务时间。设计者不必开发在这个行为中所需的数据和操作,而是应当找到计时器类,并在服务器类的定义中声明它。
但如果使用既存类的内部表示来做为新类的内部表示的一部分,这是一种“针对实现”的继承方式,这种继承方式不好。例如,考虑使用继承来实现一个Circle类。Point类可支持Circle类的一部分实现。为了定义一个圆,我们只需要定义一个点和一个值,做为圆的圆心和半径。把Point当做子类,Circle类不但能得到由x和y提供的圆心,而且还能得到一个操作,让圆能够自由移动。但这样做,我们失去了抽象。
②演变:要开发的新类可能与一个既存类非常类似,但不完全相同。此时可以从一个既存类演变成一个新类,可以利用继承机制来表示一般化―特殊化的关系。特殊化处理有三种可能的方式。
如果新的概念是一个既存类所表示概念的一个特殊情况,特殊化运算可以从该既存类的定义产生新类的初始构造,这是典型的类继承的使用。既存类A的数据结构和操作可以成为新类B的一部分,如图(a)所示。既存类A的公共操作成为新类B的共有界面部分。
如果新类比软件库中那些既存类更一般,则新类B不具有既存类A的全部特性,一般化运算把两个类中共同的特性移到新的更高层的类中,高一层的类是B,我们将要设计它。原来的类A成为新类B的子类。如图(b)所示。
一个既存类A与我们设计的新类B共享概念的某一个部分,则两个概念的共同部分形成新类的基础,且既存类与新类两者成为子类,如图(c)所示。 关注下方微信公众号,在线模考后查看
热门试题
- 软件界面设计包含了哪几个方面的基本内容?
- 如果将软件开发比作高楼大厦的建造,可以将
- 需求分析阶段产生的最主要的文档是()。
- 为什么结构化分析要叫“结构化”?有其他可
- 请简单说明结构化分析的主要步骤。
- 自底向上估算软件成本的方法主要是把待开发
- 面向对象程序设计有哪些优点?
- 按照类生存期,类的开发有哪几种方式?每一
- 动态模型描述与时间和变化有关的系统的性质
- 什么叫面向对象?面向对象方法的特点是什么
- 分类关系是“一般化-特殊化”关系。一般化
- 渐增模型有几种?各有何特点?
- 软件工程过程包括哪些过程?
- 简述微软过程的适用范围。
- 软件工程面临的问题是什么?
- 统计表明,软件测试工作往往占软件开发总工
- 瀑布模型的特点及优点?
- 快速原型开发的步骤?
- 简述主程序员组的优缺点。
- 在可行性研究过程中,对每一个合理的候选方