面向对象分析与设计试题及其答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
面向对象分析与设计试题B卷
一、单项选择题( 在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。每小题2 分,共20 分)
1.到20世纪末,面向对象软件工程已经逐渐发展成熟,特别是()的
形成和广泛使用,采用面向对象分析与编程的软件开发方法已成为软件开发的主流方法。
A. Simula67语言
B. Smalltalk语言
C. Java语言
D. 统一建模语言(UML)的标准
2. 面向对象的运动产生了多种面向对象的语言, 其中()是一种混合性面向对象语言, 既支持面向过程的程序设计方法,又支持面向对象的程序设计方法,有广泛应用的基础和丰富开发环境的支持,因而使面向对象的程序设计能得到很快普及。
A. Smalltalk
B. Eiffel
C. C++
D. Java
3.下列不属于面向对象技术的基本特征的是()。
A. 封装性
B. 模块性
C. 多态性
D. 继承性
4. 面向对象程序设计将描述事物的数据与( ) 封装在一起,作为一个相互依存、不可分割的整体来处理。
A. 信息
B. 数据隐藏
C. 对数据的操作
D. 数据抽象
5. 关于面向对象方法的优点,下列不正确的叙述是()。
A. 与人类习惯的思维方法比较一致
B. 可重用性好
C. 以数据操作为中心
D.可维护性好
6. ()是从用户使用系统的角度描述系统功能的图形表达方法。
A. 类图
B. 对象图
C. 序列图
D. 用例图
7. ( ) 是表达系统类及其相互联系的图示,它是面向对象设计的核心,建立状态图、协作图
和其他图的基础。
A.对象图 B. 组件图 C. 类图 D. 配置图
8.()描述了一组交互对象间的动态协作关系,它表示完成某项行为的对象和这些对象之
间传递消息的时间顺序。
A.对象图 B. 协作图 C. 状态图 D. 序列图
9.()就是用于表示构成分布式系统的节点集和节点之间的联系的图示,它可以表示系统
中软件和硬件的物理架构。
A. 组件图
B. 协作图
C. 状态图
D. 配置图
10. 使用UML进行关系数据库的()时,需要设计出表达持久数据的实体类及其联系,并把它们映射成为关系数据库表(Table)、视图(View)等。
A. 业务Use Case模型设计
B. 逻辑数据模型设计
C. 物理数据模型设计 C. 物理实现设计
二、填空题( 每空1 分,共20 分)
1. 面向对象开发方法一改过去传统的以___功能分析___为基础的__面向过程__的结
构化分析与设计方法,它模拟人们理解和处理客观世界的方式来分析问题,把系统视为
一系列__对象_的集合,其__面向对象的设计__又将分析的结果映射到某种面向对象实现工具的结构上,使映射过程有着比较直接的对应关系,使分析者、设计者和编程者都可使用相同的_概念_,从而使面向对象的软件开发能比较自然地模拟客观世界的活动,使问题描述空间与_解空间__在结构上尽可能一致。因此,采用面向对象方法可以更有效地开发大型软件系统。面向对象方法的_封装_、_继承_、__多态_等机制不仅支持软件复用,而且使软件维护工作可靠有效,可实现软件系统的柔性制造,更好地克服_软件危机__。因此,它已成为成熟的广为采用的软件开发方法。
2. 对象是客观实体的抽象表示,是由__描述对象属性的数据__和_对这些数据进行的操作
行为__两部分组成。而_类_是对具有相同属性和行为的一组对象的抽象描述。因此,它可作为一种用户自定义类型和创建对象的样板,而按照这种样板所创建的一个个具体对象就是类的__实例__。通过_继承__关系又可形成一种类层次结构。
3. UML中用于描述系统的静态建模的视图称为静态视图,包括_用例图__、
_类图__、_对象图__、__包图__和__构件图_。
三、写出下列程序的输出结果。( 满分10 分)
#include
#include
class Person
{
public:
Person(char *s)
{
name=new char[strlen(s)+1];
strcpy(name, s);
}
virtual void print()
{ cout<<”My name is”< protected: char *name; }; class Student:public Person { public: Student(char *s, float g):Person(s) { avg=g; } void print(char *s) { cout< private: float avg; }; class professor:public Person { public: Professor(char *s, int n):Person(s) { publs=n; } void print() { cout<<”My name is”< <<” publication.”< private: int publs; }; void main(void) { Person *p; Person x(“Zhang”); Student y(“Wang”, 4, 2); Professor z(“Liu”, 5); p=&x; p->print(); p=&y; p->print(); p=&z; p->print(); } 【运行结果: My name is Zhang My name is Wang My name is Liu and I have 5 publications. 四. 简答题(每小题5分,共20 分) 1. 简述面向对象软件开发方法的优点。 2. 简述面向对象技术的三大机制。 答:(1)封装性(encapsulation) 所谓封装就是把对象的属性和行为结合成一个独立的单位,使外界不能直接访问或修改这些数据和代码,外界只能通过对象提供的接口函数来改变或获取对象的属性数据,这就实现了消息隐蔽。 (2)继承性 如果在一个已定义的类上,增加一些特殊属性或操作,可以形成一个新的类,这个类不仅继承了前一个类的全部特征,而且具有新的特性,因此可看作前一个类的特例,是对前一个类的继承。前一个类称为父类,新产生的类叫做子类。通过继承关系可形成一种类层次结构,叫做继承结构。 (3)多态性 在类层次结构的不同类中,可用相同的函数名实现功能不同的函数。 3. 简述OOA模型的层次结构。 答:OOA模型采用五层次结构,它们分别是: (1)对象-类层 划分待开发系统及其环境信息的基本构造单位,标出反映问题域的对象和类,并用符号进行规范的描述,用信息提供者熟悉的术语为对象和类命名。