南邮 2011/2012 学年第一学期
期末 面向对象分析与设计 试题
学号 姓名 成绩
题 号 一 二 三 四 五 成 绩
分 数
一、思考题
1. 试简述封装的优点和作用,以及缺点和解决这些缺点的方法。C++语言是如何克服这些
缺点的。
答:封装把对象的属性和方法看成一个密不可分的整体,从而使对象能够完整的描述并对应
于一个具体的事物。
封装的优点:数据独立( 如每件事物都对应于一对象);具有隐藏性和安全性( 如银行的账
户) ;易于维护(由于数据独立,易于发现问题)。
封装的缺点:编程麻烦,需要更多的输入输出函数。执行效率的损失。
C++语言通过不强调严格封装,实行可见性控制来克服缺点。
2.面向对象分析和面向对象设计的区别是什么?各自的侧重点是什么?
答:面向对象的分析(OOA),就是运用面向对象方法进行系统分析。面向对象设计是是对
问题域中事物的完整映射,包括事物的数据特征和行为特征。
面向对象的分析,是软件生命周期的一个阶段,具有一般分析方法共同具有的内容、目
标及策略;但强调运用面向对象方法进行分析,用面向对象的概念和表示法表达分析结果。
侧重点是:运用面向对象方法,对问题域和系统责任进行分析和理解,找出描述问题域及系
统责任所需的对象,定义对象的属性、操作以及它们之间的关系。目标是建立一个符合问题
域、满足用户需求的 OOA 模型。
面向对象设计的侧重点:如实地反映了问题域中事物之间的各种关系,包括分类结构、
组装结构、静态联系和动态联系。采用封装、继承、消息通讯等原则,使问题域的复杂性得
到控制。
3.构造函数可否声明为虚函数?为什么?
答:构造函数不能声明为虚函数。
虚函数主要是用于信息不全的情况下,能使重载的函数得到对应的调用。构造函数本身
就是要初始化实例,使用虚函数就没有意义。所以构造函数没有必要是虚函数。
虚函数的作用在于通过父类的指针或者引用来调用它的时候能够变成调用子类的那个
成员函数。而构造函数是在创建对象时自动调用的,不可能通过父类的指针或者引用去调用,