一、单项选择题 ( 在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。每小题 1 分,共 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. C++ 对 C 语言作了很多改进,即从面向过程变成为面向对象的主要原因是 ( )。
A. 增加了一些新的运算符 B. 允许函数重载,并允许设置缺省参数C. 规定函数说明符必须用原型 D. 引进了类和对象的概念 7. 下列符号不能组成标识符的是 ( )。
A. 数字字符 B. 下划线 C. 大小写字母 D. 连接符 8. 下列不属于类的成员函数的是 ( )。
A. 构造函数 B. 析构函数 C. 友元函数 D. 拷贝构造函数 9. 继承机制的作用是 ( )。
A. 信息隐藏 B. 数据封装 C. 派生新类 D. 数据抽象
10. 类模板经过实例化而生成具体 ( )
A. 对象 B. 模板函数 C. 函数模板 D. 类 11. 类的构造函数是在 ( ) 调用的。
A. 类创建时 B. 创建对象时 C. 删除对象时 D. 不自动调用 12. 在公有继承的情况下,基类成员在派生类中的访问权限 ( )
A. 受限制 B. 保持不变 C. 受保护 D. 不受保护 13. . C++ 语言通过 ( ) 来建立类族。
A. 类的嵌套 B. 类的继承 C. 虚函数 D. 抽象类 14. ( )是从用户使用系统的角度描述系统功能的图形表达方法。 A. 类图 B. 对象图 C. 序列图 D. 用例图 15. ( ) 是表达系统类及其相互联系的图示,它是面向对象设计的核心,建
立状态图、协作图和其他图的基础。
A.对象图 B. 组件图 C. 类图 D. 配置图 16.( )描述了一组交互对象间的动态协作关系,它表示完成某项行为的
对象和这些对象之间传递消息的时间顺序。
A.对象图 B. 协作图 C. 状态图 D. 序列图 17.( )就是用于表示构成分布式系统的节点集和节点之间的联系的图示,
它可以表示系统中软件和硬件的物理架构。
A. 组件图 B. 协作图 C. 状态图 D. 配置图 18. 在用UML进行数据库的分析与设计过程中,( ) 就是进行数据库的
需求分析,使用用例图、类图、顺序图、活动图等建立业务模型。 A. 逻辑数据模型设计 B 业务Use Case模型设计 C. 物理数据模型设计 D. 物理实现设计
19. 使用UML进行关系数据库的( )时,需要设计出表达持久数据的实体类及其联系,并把它们映射成为关系数据库表(Table)、视图(View)等。 A. 业务Use Case模型设计 B. 逻辑数据模型设计 C. 物理数据模型设计 C. 物理实现设计 20. UML的动态建模表示包含( )种图。
A. 9 B. 5 C. 4 D. 2
二、填空题 ( 每空 1 分,共 20 分 )
1. 面向对象开发方法一改过去传统的以_______________为基础的______________的结构化分析与设计方法,它模拟人们理解和处理客观世界的方式来分析问题,把系统视为一系列_______的集合,其______________又将分析的结果映射到某种面向对象实现工具的结构上,使映射过程有着比较直接的对应关系,使分析者、设计者和编程者都可使用相同的______,从而使面向对象的软件开发能比较自然地模拟客观世界的活动,使问题描述空间与____________在结构上尽可能一致。因此,采用面向对象方法可以更有效地开发大型软件系统。面向对象方法的________、________、_________等机制不仅支持软件复用,而且使软件维护工作可靠有效,可实现软件系统的柔性制造,更好地克服____________。因此,它已成为成熟的广为采用的软件开发方法。
2. 对象是客观实体的抽象表示,是由__________________________和
________________________两部分组成。而______是对具有相同属性和行为的一组对象的抽象描述。因此,它可作为一种用户自定义类型和创建对象的样板,而按照这种样板所创建的一个个具体对象就是类的___________。通过________关系又可形成一种类层次结构。 3. UML中用于描述系统的静态建模的视图称为静态视图,包括________、 _________、_________、__________和__________。
三、写出下列程序的输出结果。 ( 满分 10 分 ) #include class Derived:public Base { int *p; Base(int a=0){p=new int(a);} ~Base() {delete p;} virtual void print() {cout<<\"p->\"<<*p< static int y; Derived(int b=0) {*p=b; y++;} void print() {cout<<*p<<','< int Derived::y=0; void main(void) { Derived d(10); Base *pb=&d; pb->print(); Derived(20).print(); } 四. 简答题(每空4分,共 20 分) 1. 简述面向对象软件开发方法的优点。 2. 简述面向对象技术的三大机制。 3. 简述OOA模型的层次结构。 4. 简述OOD模型的总体结构,并画图表示。 5. 应用UML进行系统分析和设计所需建立视图有那几种? 五. 试用UML对教学管理系统及相关的数据库系统进行分析和设计。学生选课系统一般包括(1)选课管理功能;(2) 成绩管理功能。试完成下列工作: (1)建立系统静态结构模型—画出系统用例图和类图;(10分) (2) 建立系统动态结构模型—画出系统序列图和协作图;(10分) (3)建立关系数据库逻辑模型。(10分) 面向对象分析与设计试题参考答案 一、单项选择题 ( 每小题 1 分,共 20 分 ) 1.D 2.C 3.B 4.C 5.C 6.D 7.D 8.C 9.C 10.D 11.B 12.B 13.B 14.D 15.C 16.D 17.D 18.B 19.B 20.C 二、填空题 ( 每空 1 分,共 20 分 ) 1.功能分析, 面向过程, 对象,面向对象的设计, 概念,解空间,封装, 继承, 多态, 软件危机 2.描述对象属性的数据, 三、写出下列程序的输出结果。 10,1 20,2 四. 简答题 1. 简述面向对象技术发展的动因。 答:为了超越程序复杂性障碍,克服软件危机,人们提出了面向对象软件开发方法。面向对象开发方法一改过去传统的以功能分析为基础的面向过程 对这些数据进行的操作行为, 类, 实例,继承 3.用例图、类图、对象图、包图、构件图、配置图 的结构化分析与设计方法,面向对象开发方法模拟人们理解和处理客观世界的方式来分析问题,把系统视为一系列对象的集合,其面向对象的设计又将分析的结果映射到某种面向对象实现工具的结构上,使映射过程有着比较直接的对应关系,使分析者、设计者和编程者都可使用相同的概念,从而使面向对象的软件开发能比较自然地模拟客观世界的活动,使问题描述空间与解空间在结构上尽可能一致。因此,采用面向对象方法可以更有效地开发大型软件系统。面向对象方法的封装、继承、多态等机制不仅支持软件复用,而且使软件维护工作可靠有效,可实现软件系统的柔性制造,更好地克服软件危机。因此,它已成为成熟的广为采用的软件开发方法。 2. 简述面向对象技术的三大机制。 答:(1)封装性(encapsulation) 所谓封装就是把对象的属性和行为结合成一个独立的单位,使外界不能直接访问或修改这些数据和代码,外界只能通过对象提供的接口函数来改变或获取对象的属性数据,这就实现了消息隐蔽。 (2)继承性 如果在一个已定义的类上,增加一些特殊属性或操作,可以形成一个新的类,这个类不仅继承了前一个类的全部特征,而且具有新的特性,因此可看作前一个类的特例,是对前一个类的继承。前一个类称为父类,新产生的类叫做子类。通过继承关系可形成一种类层次结构,叫做继承结构。 (3)多态性 在类层次结构的不同类中,可用相同的函数名实现功能不同的函数。 3. 简述OOA模型的层次结构。 答:OOA模型采用五层次结构,它们分别是: (1)对象-类层 划分待开发系统及其环境信息的基本构造单位,标出反映问题域的对象和类,并用符号进行规范的描述,用信息提供者熟悉的术语为对象和类命名。 (2)属性层 定义对象和某些结构中的数据单元,继承结构中所有类的公共属性可 放于通用类中。标识对象类必需的属性并放在合适的继承层次上,属性的特殊限制和实例连接关系也应标识出来。 (3)服务层 表示对象的服务或行为,即是要定义类上的操作。 (4)结构层 标识现实世界中对象之间的关系。当一个对象是另一个对象的一部分时,用\"整体-部分\"关系表示;当一个类属于另一个类时,用类之间继承关系表示。 (5)主题层 可将相关类或对象划分为一个主题。 4. 简述OOD模型的总体结构,并画图表示。 OOD体系结构的各个部分内容: (1)问题论域部分,在OOA模型的基础上,细化分析结果,设计一组构成底层应用模型的类和对象。 (2)人机交互部分:设计用户界面模型,该用户界面模型中的类和对象提供实现人机交互操作的接口函数。用户界面设计包括 菜单设计、窗口设计、输入/输出界面设计等等。 (3)任务管理部分:建立一些类,用以负责处理操作系统级的并发问题、中断、调度以及其它与特定平台有关的问题。 (4)数据管理部分:提供数据管理系统中存储和检索对象的基本结构,包括对永久性数据的访问和管理。数据管理设计包括: — 数据存放设计:数据存放设计选择数据存放的方式(文件存放、关系数据库表格存放或面向对象的数据库存放)。 — 设计相应的操作。为每个需要存储的对象和类增加用于存储管理的属性和操作,在类和对象的定义中加以描述。 class & object layer(类及对象层)attribute layer(类及对象层)service layer(服务层)问题论域部分人机交互部分任务管理部分数据管理部分类边界实例边界实例连接属性消息服务struct layer(结构层)subject layer(主题层)主题 5.(1) 系统用例图如下 查询课程信息老师老师查询学生成绩选课注册学生学生查询课程成绩管理老师信息学生成绩管理管理学生信息管理员管理课程信息管理开设课程管理员成绩统计(b)成绩管理的用例图(a)选课管理的用例图 对象类图如下: 教师编号姓名地址电话1..*0..*课程课程名描述学时加入课程()1..*0..*学生编号姓名地址电话开设课程课程名授课日期授课时间地点指定老师()学生满否()选修课程学生名课程名学期增加记录()选课统计()(a)选课对象类图开设课程课程名授课日期授课时间地点指定老师()学生满否()学生成绩登记学生名学期课程名成绩加入成绩()打印()(b)成绩管理对象类图成绩统计学期课程名成绩按课程统计()按学生统计()打印() (2)把需要持久存储的数据实体类及其联系,映射成为如下关系数据库表: 学生(学生号、姓名、出生日期、性别、籍贯、地址、电话、入学时间、专业、班级备注) 教师(教师号、姓名、出生日期、性别、籍贯、地址、电话、职称、专长、备注) 课程(课程号、课程名、描述、学分、学时、性质、备注) 开设课程(课程号、学期、授课日期、授课时间、地点、选修人数、备注) 因篇幅问题不能全部显示,请点此查看更多更全内容