面向对象分析与设计试题及其答案
面向对象分析与设计试题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 Person(char *s) { name=new char[strlen(s)+1]; strcpy(name, s); } virtual void print() { cout<<”My name is”< Student(char *s, float g):Person(s) { avg=g; } void print(char *s) { cout< . . Professor(char *s, int n):Person(s) { publs=n; } void print() { cout<<”My name is”< 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)对象-类层 划分待开发系统及其环境信息的基本构造单位,标出反映问题域的对象和类,并用符号进行规范的描述,用信息提供者熟悉的术语为对象和类命名。 . . (2)属性层 定义对象和某些结构中的数据单元,继承结构中所有类的公共属性可放于通用类中。标识对象类必需的属性并放在合适的继承层次上,属性的特殊限制和实例连接关系也应标识出来。 (3)服务层 表示对象的服务或行为,即是要定义类上的操作。 (4)结构层 标识现实世界中对象之间的关系。当一个对象是另一个对象的一部分时,用\"整体-部分\"关系表示;当一个类属于另一个类时,用类之间继承关系表示。 (5)主题层 可将相关类或对象划分为一个主题。 4. 简述OOD模型的总体结构,并画图表示。 【4】 答案: OOD体系结构的各个部分内容: (1)问题论域部分,在OOA模型的基础上,细化分析结果,设计一组构成底层应用模型的类和对象。 (2)人机交互部分:设计用户界面模型,该用户界面模型中的类和对象提供实现人机交互操作的接口函数。用户界面设计包括 菜单设计、窗口设计、输入/输出界面设计等等。 (3)任务管理部分:建立一些类,用以负责处理操作系统级的并发问题、中断、调度以及其它与特定平台有关的问题。 (4)数据管理部分:提供数据管理系统中存储和检索对象的基本结构,包括对永久性数据的访问和管理。数据管理设计包括: — 数据存放设计:数据存放设计选择数据存放的方式(文件存放、关系数据库表格存放或面向对象的数据库存放)。 — 设计相应的操作。为每个需要存储的对象和类增加用于存储管理的属性和操作,在类和对象的定义中加以描述。 . class & object layer(类及对象层)attribute layer(类及对象层)service layer(服务层)问题论域部分人机交互部分任务管理部分数据管理部分类边界实例边界实例连接属性消息服务struct layer(结构层)subject layer(主题层)主题图1.5 OOD模型的总体结构. } 五. 试用UML对教学管理系统及相关的数据库系统进行分析和设计。学生选课系统一般包括(1)选课管理功能;(2) 成绩管理功能。试完成下列工作: (1)建立系统静态结构模型—画出系统用例图和类图;(10分) (2) 建立系统动态结构模型—画出系统序列图和协作图;(10分) (3)建立关系数据库逻辑模型。(10分) 【答案: (1) 系统用例图如下 查询课程信息老师老师查询学生成绩选课注册学生学生查询课程成绩管理老师信息学生成绩管理管理学生信息管理员管理课程信息管理开设课程管理员成绩统计(b)成绩管理的用例图(a)选课管理的用例图 对象类图如下: . . 教师编号姓名地址电话1..*0..*课程课程名描述学时加入课程()1..*0..*学生编号姓名地址电话开设课程课程名授课日期授课时间地点指定老师()学生满否()选修课程学生名课程名学期增加记录()选课统计()(a)选课对象类图开设课程课程名授课日期授课时间地点指定老师()学生满否()学生成绩登记学生名学期课程名成绩加入成绩()打印()(b)成绩管理对象类图成绩统计学期课程名成绩按课程统计()按学生统计()打印() (2)把需要持久存储的数据实体类及其联系,映射成为如下关系数据库表: 学生(学生号、姓名、出生日期、性别、籍贯、地址、电话、入学时间、专业、班级备注) 教师(教师号、姓名、出生日期、性别、籍贯、地址、电话、职称、专长、备注) 课程(课程号、课程名、描述、学分、学时、性质、备注) 开设课程(课程号、学期、授课日期、授课时间、地点、选修人数、备注) 】 ---------------------------------------------------------------------------------------------------------------------- 面向对象分析与设计试题C卷 一、单项选择题 ( 在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。每小题 1 分,共 20 分 ) 1.面向对象技术的最重要的基本特征是 ( )。 A. 抽象性 B. 封装性 C. 多态性 D. 继承性 2. 面向对象程序设计将描述事物的数据与 ( ) 封装在一起,作为一个相互依存、不可分割的整体来处理。 A. 信息 B. 数据隐藏 C. 对数据的操作 D. 数据抽象 3. 关于面向对象方法的优点,下列不正确的叙述是 ( )。 A. 与人类习惯的思维方法比较一致 B. 可重用性好 C. 以数据操作为中心 D.可维护性好 . . 4. C++ 对 C 语言作了很多改进,即从面向过程变成为面向对象的主要原因是 ( )。 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. C++ 语言通过 ( ) 来建立类族。 A. 类的嵌套 B. 类的继承 C. 虚函数 D. 抽象类 11.在UML中,有3种基本构造块,分别是(A) A. 事物、关系和图 B. 注释、关系和图 C. 事物、关系和结构 D. 注释、关系和结构 12.在UML中,有四种关系,下面哪个不是(B) A.依赖关系 B.继承关系 C.泛化关系 D.实现关系 13.下面哪个不是UML中的静态视图() A.状态图 B.用例图 C.对象图 D.类图 14.在用例之间,会有三种不同的关系,下列哪个不是它们之间可能的关系( D ) A.包含(include) B.扩展(extend) C.泛化(generalization) D.关联(connect) 15.下列关于活动图的说法错误的是( ) A. 一张活动图从本质上说是一个流程图,显示从活动到活动的控制流 B. 活动图用于对业务过程中顺序和并发的工作流程进行建模。 C. 活动图的基本要素包括状态、转移、分支、分叉和汇合、泳道、对象流。 D. 活动图是UML中用于对系统的静态方面建模的五种图中的一种 16.用例(Use-case)用来描述系统在事件做出响应时所采取的行动。用例之间是具有相关性的。在一个“订单输入子系统”中,创建新订单和更新订单都需要检查用户帐号是否正确。那么,用例“创建新订单”、“更新订单”与用例“检查用户帐号”之间是( )关系 A.扩展(extend) B.包含(include) C.分类(classification) D.聚集(aggregation) . . 17.UML中类的有三种,下面哪个不是其中之一( ) A.实体类 B.抽象类 C.控制类 D.边界类 18.阅读图例,判断下列哪个说法是错误的。( ) A.读者可以使用系统的还书用例 B.每次执行还书用例都要执行图书查询用例 C.每次执行还书用例都要执行交纳罚金用例 D.执行还书用例有可能既执行图书查询用例,又执行交纳罚金用例 19.关于协作图的描述,下列哪个不正确(B) A.协作图作为一种交互图,强调的是参加交互的对象的组织; B.协作图是顺序图的一种特例 C.协作图中有消息流的顺序号; D.在ROSE工具中,协作图可在顺序图的基础上按“F5”键自动生成; 20.在UML中,()把活动图中的活动划分为若干组,并将划分的组指定给对象,这些对象必须履行该组所包括的活动,它能够明确地表示哪些活动是由哪些对象完成的。 A.组合活动 B.同步条 C.活动 D.泳道 二、填空题 ( 每空 1 分,共 20 分 ) 1. 对象是客观实体的抽象表示,是由___________和___________两部分组成。而 ___________是对具有相同属性和行为的一组对象的抽象描述。因此,它可作为一种用户自定义类型和创建对象的样板,而按照这种样板所创建的一个个具体对象就是类的___________。通过___________关系又可形成一种类层次结构。在类层次结构的不同类中,可用相同的函数名实现功能不同的函数,面向对象技术的这种特性叫做___________。 2. UML 从不同的视角为系统架构建模,可产生九种视图: ________________、_________________、_________________、 ________________、________________、 _________________、 ________________、_________________、_________________。 3. ________________是用来反映若干个对象之间动态协作关系的一种交互图。它主要反映 对象之间已发送消息的先后次序和对象之间的交互过程。________________是用来描述实现某些服务所涉及的对象及其相互之间的关系(包括消息通信)的动态视图。建模者 . . 可以选择______________________________来反映对象之间的协作关系;如果需要强调时间和序列,最好选择________________;如果需要强调上下文相关,最好选择________________。 三、写出下列程序的输出结果。 ( 满分 10 分 ) #include Person(char *s) { name=new char[strlen(s)+1]; strcpy(name, s); } virtual void print() { cout<<”My name is”< Student(char *s, float g):Person(s) { avg=g; } void print(char *s) { cout< Professor(char *s, int n):Person(s) { publs=n; } void print() { cout<<”My name is”< 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(); } 四. 简答题(每小题4分,共 20 分) 1. 简述统一建模语言UML的优点。 2. 简述面向对象技术的三大机制。 3. 简述面向对象分析的基本步骤。 4. 简述OOD模型的总体结构,并画图表示。 5. 应用UML进行系统分析和设计所需建立视图有那几种? 五. 试用UML对图书管理系统及相关的数据库系统进行分析和设计。图书管理系统应实现(1)借书;(2) 还书;(3)图书资料和借阅信息查询;(4)系统维护。试完成下列工作: (1)建立系统静态结构模型—画出系统用例图和类图;(10分) (2)建立系统动态结构模型—画出序列例图和协作图;(10分) (2)建立关系数据库逻辑模型。(10分) --------------------------------------------------------------------------------------------------------------------- 面向对象分析与设计试题D卷 一、单项选择题 ( 在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。每小题 1 分,共 20 分 ) 1. 到20世纪末,面向对象软件工程已经逐渐发展成熟,特别是( ) 的形成和广泛使用,采用面向对象分析与编程的软件开发方法已成为软件开发的主流方法。 A. Simula67语言 B. Smalltalk语言 C. Java语言 D. 统一建模语言(UML)的标准 2.下列不属于面向对象技术的基本特征的是( )。 A. 封装性 B. 模块性 C. 多态性 D. 继承性 3. 面向对象程序设计将描述事物的数据与 ( ) 封装在一起,作为一个相互依存、不可分割的整体来处理。 A. 信息 B. 数据隐藏 C. 对数据的操作 D. 数据抽象 4. C++ 对 C 语言作了很多改进,即从面向过程变成为面向对象的主要原因是 ( )。 A. 增加了一些新的运算符 B. 允许函数重载,并允许设置缺省参数C. 规定函数说明符必须用原型 D. 引进了类和对象的概念 5. 下列不属于类的成员函数的是 ( )。 A. 构造函数 B. 析构函数 C. 友元函数 D. 拷贝构造函数 . . 6. 继承机制的作用是 ( )。 A. 信息隐藏 B. 数据封装 C. 派生新类 D. 数据抽象 7. 通常对象有很多属性,但对于外部对象来说某些属性应该不能被直接访问,下面哪个不是UML中的类成员访问限定符( ) A.公有的 B.受保护的 C.友员的 D.私有的 8. 类模板经过实例化而生成具体 ( ) A. 对象 B. 模板函数 C. 函数模板 D. 类 9. 类的构造函数是在 ( ) 调用的。 A. 类创建时 B. 创建对象时 C. 删除对象时 D. 不自动调用 10 在公有继承的情况下,基类成员在派生类中的访问权限 ( ) A. 受限制 B. 保持不变 C. 受保护 D. 不受保护 11 . C++ 语言通过 ( ) 来建立类族。 A. 类的嵌套 B. 类的继承 C. 虚函数 D. 抽象类 12. UML提供了4种结构图用于对系统的静态方面进行可视化、详述、构造和文档化。其中 ( )是面向对象系统建模中最常用的图,用于说明系统的静态设计视图 A. 用例图 B. 类图 C. 对象图 D. 序列图 13. 当需要描述体系结构的静态实施视图时,应该选择( )。 A.对象图 B. 组件图 C. 类图 D. 配置图 14. 用例(Use-case)用来描述系统在事件做出响应时所采取的行动。用例之间是具有相关 性的。在一个“订单输入子系统”中,创建新订单和更新订单都需要检查用户帐号是否正确。那么,用例“创建新订单”、“更新订单”与用例“检查用户帐号”之间是( )关系。 A.扩展(extend) B.包含(include) C.分类(classification) D.聚集(aggregation) 15.( )是描述系统中在某一时刻,一组对象以及它们之间关系的图形,其可以看作是类图在系统某一时刻的实例。 A.组件图 B.类图 C.对象图 D.部署图 16. 顺序图是强调消息随时间顺序变化的交互图,下面哪个不是用来描述顺序图的组成部分( ) A.状态 B.生命线 C.激活期 D.类角色 17.下面哪个选项中有不是活动图中的基本元素( ) A.状态、分支 B. 状态、汇合 C. 泳道、转移 D. 信号、转移 18. 以下是图书管理系统中的相关类,属于边界类的是( ) A.书类 B.借书操作界面类 C.书籍管理类 D.读者类 . . 19. 在用UML进行数据库的分析与设计过程中,( ) 就是进行数据库的需求分析,使用用 例图、类图、顺序图、活动图等建立业务模型。 A. 逻辑数据模型设计 B 业务Use Case模型设计 C. 物理数据模型设计 D. 物理实现设计 20. 使用UML进行关系数据库的( )时,需要设计出表达持久数据的实体类及其联系,并把它们映射成为关系数据库表(Table)、视图(View)等。 A. 业务Use Case模型设计 B. 逻辑数据模型设计 C. 物理数据模型设计 C. 物理实现设计 二、填空题 ( 每空 1 分,共 20 分 ) 1. UML中用于描述系统的静态建模的视图称为静态视图,包括________、 _________、_________、__________和__________。用于描述系统的 动态建模的视图称为动态视图,包括________、_________、__________ 和__________。 2. 对象是客观实体的抽象表示,是由_________________________和 ________________________两部分组成。而______是对具有相同属性 和行为的一组对象的抽象描述。因此,它可作为一种用户自定义类型和创 建对象的样板,而按照这种样板所创建的一个个具体对象就是类的______ 通过________关系又可形成一种类层次结构。 3. ________是美国Rational公司的面向对象建模工具,利用这个工具可以建立用_______描述的________ 的模型,而且可以自动生成和维护C++、Java、VB、Oracle等语言和系统的代码。____________的界面分为三个部分——___________窗口、_________窗口和__________窗口。 三、写出下列程序的输出结果。 ( 满分 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. 简述UML的优点。 2. 简述面向对象技术的三大机制。 3. 简述OOA模型的层次结构。 4. 简述OOD模型的总体结构,并画图表示。 5. 应用UML进行数据库系统分析和设计步骤。 五. 试用UML对网上超市系统及相关的数据库系统进行分析和设计。请完成下列工作: (1)建立系统静态结构模型—画出系统用例图和类图;(10分) (2)建立系统动态结构模型—画出序例图和活动图;(10分) (2)建立关系数据库逻辑模型。(10分) . . ----------------------------------------------------------------------------- 2009-2010第一学期面向对象分析与设计试题 一、单项选择题 ( 在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。每小题 1 分,共 20 分 ) 1. ( ) 常常被定义成虚函数。 A. 构造函数 B. 析构函数 C. 友元函数 D. 静态函数 2. ( )是对具有相同属性和行为的对象集合的抽象描述 A. 系统 B. 实体 C. 对象 D. 类 3. 封装的目的是实现信息的有效( ) A. 共享 B. 隐蔽 C. 操作 D. 继承 4. ( )是实现“一种接口,多种方法”的技术。 A. 抽象性 B. 封装性 C. 多态性 D. 继承性 5. C++ 对 C 语言作了很多改进,即从面向过程变成为面向对象的主要原因是 ( )。 A. 增加了一些新的运算符 B. 引进了类和对象的概念 C. 允许类的继承和派生 D. 允许函数重载 6. 继承机制的作用是 ( )。 A. 信息隐藏 B. 数据封装 C. 数据抽象 D.软件重用 7. ( ) 经过实例化而生成具体的类。 A. 对象 B. 函数模板 C. 类模板 D. STL 8. 类的构造函数是在 ( ) 调用的。 A. 类创建时 B. 创建对象时 C. 删除对象时 D. 不自动调用 9. 在保护性继承的情况下,基类的public和protected成员在派生类中变为 ( )成员。 A. 公有 B. 私有 C. 受保护 D. 任意 10.下列哪种做法不符合面向对象设计的原则( )。 A. 类与类之间的耦合应该很松散 B. 继承耦合应尽可能松散 . . C. 继承耦合应尽可能紧密 D. 设计应该具有最优的可重用性 11.( )是从用户使用系统的角度描述系统功能的图形表达方法。 A. 对象图 B. 类图 C. 序列图 D.用例图 12.在对象模型中,( )体现了继承性概念。 A.关联 B. 依赖关系 C.泛化关系 D.聚合/组合关系 13. ( )是面向对象设计的核心,建立状态图、协作图和其他图的基础。 A. 对象图 B. 组件图 C. 类图 D. 序列图 14.下面哪个是UML中的动态视图( ) A. 用例图 B. 类图 C.对象图 D. 序列图 15.下列说法错误的是( ) A. 活动图不能用于描述系统业务流程。 B. 活动图由一系列的动作状态构成,动作的状态控制可以从一个状态流 向另一个与之相邻的状态。 C. 活动图还可以表示决策、条件、动作状态的并行执行、消息的规范说明等内容。 D. 协作图可以用来描绘系统业务流程。 16.在一个“图书管理系统”中,借书处理和还书处理都需要先通过身份验证。那么,用例“借书处理”、“还书处理”与用例“身份验证”之间是( )关系 A. 特化 B. 泛化 C. 使用 D.扩展 17.( )就是用于表示构成分布式系统的节点集和节点之间的联系的图示,它可以表示系统中软件和硬件的物理架构。 A.对象图 B.类图 C.组件图 D.配置图 18.阅读图例,判断下列哪个说法是错误的。( ) A.读者可以使用系统的还书用例 B.每次执行还书用例都要执行图书查询用例 C.执行还书用例有可能既执行图书查询用例,又执行交纳罚金用例 . . D. 每次执行还书用例都要执行交纳罚金用例 19.( )描述了一组交互对象间的动态协作关系,它表示完成某项行为操作的参与对象和这些对象之间传递消息的时间顺序。 A. 协作图 B.序列图 C.对象图 D.组件图 20.( )能够更好地用于对数据库建模。 A.传统的ER图 B.UML的用例图 C.UML的类图 D.数据流图 二、填空题 ( 每空 1 分,共 20 分 ) 1. 面向对象开发方法模拟人们理解和处理客观世界的方式来__(1)__问题,把系统视为一 系列__(2)__的集合,其面向对象的__(3)__又将分析的结果映射到某种面向对象__(4)__工具的结构上,使映射过程有着比较直接的对应关系,使分析者、设计者和编程者都可使用相同的概念,从而使面向对象的软件开发能比较自然地模拟客观世界的活动,使__(5)__空间与__(6)__空间在结构上尽可能一致。因此,采用面向对象方法可以更有效地开发大型软件系统。面向对象方法的__(7)__、__(8)__、__(9)__态等机制不仅支持软件复用,而且使软件维护工作可靠有效,可实现软件系统的柔性制造,更好地克服__(10)_。因此,它已成为成熟的广为采用的软件开发方法。到20世纪末,面向对象软件工程逐渐发展成熟,特别是__(11)__的形成和广泛使用,使面向对象软件开发方法已成为软件开发的主流技术。 2. UML 通过9种视图来为系统建模,这9种视图是: _____(12)_______、_____(13)_______、_____(14)________、 _____(15)_______、_____(16)_______、_____(17)________、 _____(18)______、_____(19)______、______(20)_______。 三、写出下列程序的输出结果 ( 满分 10 分 ) #include virtual void show() { cout<<“ It is a person”< class student:public person { public: . . virtual void show() { cout<<“It is a student”< 四、 简答题(每小题5分,共 20 分) 1. 简述面向对象分析的基本步骤。 2. 简述建立面向对象设计模型的方法步骤。 3. 简述基于UML的面向对象系统开发方法的基本步骤。 4. 简述基于UML的关系数据库设计的方法步骤。 五、请用UML对图书借阅管理系统及相关的数据库系统进行分析和设计。图书管理系统应实现图书资料和借阅信息查询、借书、 还书以及系统维护功能操作。试完成下列工作: (1)画出读者用例图(5分) (2)画出“读者查询图书信息”用例的序列图和协作图(10分) (3)画出设计类图(10分); (4)“读者”与“图书”类之间存在多对多的关联,试将这种关联转化为一个关联表。(5 分) . . ---------------------------------------------------------------------------------------------------------------------- 2010-2011第一学期面向对象分析与设计试题 一、单项选择题 ( 在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。每小题 1 分,共 20 分 ) 1. ( )是对具有相同属性和行为的一组对象的抽象描述。 A. 实体 B. 对象 C. 类模板 D. 类 2. 一类对象向另一类对象所发消息的格式中不包括( )。 A. 对象名 B. 操作函数名 C. 参数表 D. 类名 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. C++中既可实现文件输入又可实现文件输出的类是 ( ) A. ifstream B. ofstream C. iostream D. fstream 11. 基类中的protected 成员,通过public派生,其在派生类中的可见性为 ( )。 A. 不可访问 B. private C. protected D. public 12. 在C++程序中,对象之间的相互通信可以通过( )来实现。 A.继承 B.调用成员函数 . . C.封装 D.函数重载 13.( )阶段的主要目标是为了更精确地理解用户需求,并获得一个使用开发人员熟悉的 语言描述的、易于维护且能体现系统基本结构的模型。 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 协作图 C. 对象图 D. 类图 19. ( )是描述系统体系结构的静态实现视图。 A.类图 B. 对象图 C. 组件图 D. 配置图 20. 使用UML进行关系数据库的( )时,需要设计出表达持久数据的实体类及其联系,并把它们映射成为关系数据库表(Table)、视图(View)等。 A. 物理数据模型设计 B. 物理实现设计 C. 业务Use Case模型设计 C. 逻辑数据模型设计 二、填空题 ( 每空 1 分,共 20 分 ) 1. 用_( 1 )_机制可以实现发送一个通用消息而调用不同的方法;( 2_)机制是实现信息隐蔽的一种技术,其目的是使类的_(3)_相互分离。 2. 类是一组具有相同属性和服务的对象的抽象描述,类中的每个对象都是 这个类的一个_( 4 )_。类之间共享属性与服务的机制叫做_( 5 )。 一个对象通过发送_( 6 )_来请求另一个对象为其服务。 3. 派生类的生成包含三个步骤:_( 7 )_、_( 8 )_和_( 9 )_。 4. _(10)_描述完成某项行为操作的参与对象和这些对象之间传递消息的 时间顺序。_(11)_描述系统运行过程中某类对象可能具有的状态,以及在 不同状态间的跳转和触发这些跳转的外部事件。_12__可用于描述系统业 务流程,它由一系列的动作状态构成, 动作的状态控制可以从一个状态流 向另一个与之相邻的状态。 5. 基于UML的系统分析的主要目标是为了更精确地理解_(13_)_,并 获得一个使用开发人员的语言描述的、易于维护的且能体现系统基本结构 的_(14 )_模型。该模型主要包括_(15_) 和 (16_)。 . . 6. 基于UML的关系数据库设计一般可分为4个阶段: _(_17_)_、 _(_18_)_、_(_19__)_和_(_20_)_。 三、写出下列程序的输出结果。 ( 满分 10 分 ) class B { public: B( ) { cout << \"B\" << endl;} virtual void f( ) { cout << \"B::f\" << endl; } virtual ~B( ) { cout << \"~B\" << endl; } }; Class D: public B { private: int d; public: D( ) { cout << \"D\" << endl; } void f( ) { cout << \"D::f\" << endl; } virtual ~D( ) { cout << \"~D\" << endl; } }; void main( ) { B* pB; D d1; pB=&d1; pB->f( ); delete pB; } 四. 简答题(每小题4分,共 20 分) 1. 为什么面向对象方法能更有效地克服软件危机? 2. 如何实现运行时多态? 3. 基于UML的面向对象系统开发方法包括哪几步? 4. 简述确定分析类的方法。 5. 简述基于UML的数据库系统分析和设计的步骤。 五. 分析与设计题 试用UML对开放式学籍管理系统及相关的数据库系统进行分析和设计。学籍管理系统的主要用户是系统管理员和学生:系统管理员使用学籍管理系统来实现教师信息管理、学生信息管理,课程管理、成绩管理和打印报表;学生使用学籍管理系统来实现选课管理和成绩查询。试完成下列工作: (1)画出学籍管理系统的用例图;(6分) (2)定义学籍管理系统的三个基本分析类;(6分) . . (3)画出学籍管理系统的类图;(6分) (4)画出学生查询成绩的活动图;(6分) (5)学生类和课程类之间存在多对多的关联,试将这种关联转化为关系数据库模式。(6 分) ---------------------------------------------------------------------------------------------------------------------- 2010-2011第二学期面向对象分析与设计试题A卷 一、单项选择题 ( 在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。每小题 1 分,共 20 分 ) 1. 面向对象分析与设计是面向对象软件开发过程中的两个重要阶段,下列活动中,_____ 不属于面向对象分析阶段。 A.构建分析模型 B.识别分析类 C.用例动态建模 D.评估分析模型 2. 在面向对象方法中,_____可看成是属性数据以及这些属性数据上的专用操作的封装体。 A. 实体 B. 类 C. 类模板 D. 对象 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. 如果某基类的一个成员函数被说明为______,则该成员函数在派生类中可以有不同的函数实现。 A. 内联函数 B. 静态函数 C. 友元函数 D. 虚函数 11. 在二进制模式下,可利用文件输入/输出流类中定义的______函数将所有数据以字符形式存储到文件里。 . . A. load B. save C. write D. read 12. 基类中的public 成员,通过protected派生,其在派生类中的可见性为 ______。 A. private B. 不可访问 C. public D. protected 13. ______是数据类型抽象化或参数化的类。 A.抽象类 B.基类 C.组件 D.类模板 14. ______是UML中用来描述用户对系统的功能需求的有效模型图。 A.类图 B. 对象图 C. 组件图 D. 用例图 15. 基于UML的______不但能对数据建模,而且能对行为建模。 A.组件图 B. 类图 C. 配置图 D. 序列图 16. 用来描述为完成某项行为操作所涉及的对象和这些对象之间传递消息的时间顺序的 UML模型图叫做______。 A.活动图 B. 协作图 C. 状态图 D. 序列图 17. UML的______用于描述系统业务流程,它由一系列的动作状态构成, 动作的状态控制可 以从一个状态流向另一个与之相邻的状态。 A.状态图 B. 序列图 C. 活动图 D. 协作图 18. UML的______是用于表示构成分布式系统的节点集和节点之间的联系的图示,它可以表 示系统中软件和硬件的物理架构。 A. 组件图 B.类图 C. 协作图 D. 配置图 19. UML的______用于表示系统的软件体系结构。 A.类图 B. 对象图 C. 组件图 D. 组件图 20. 使用UML进行关系数据库的( )时,需要设计出表达持久数据的实体类及其联系,并把它们映射成为关系数据库表(Table)、视图(View)等。 A. 业务Use Case模型设计 B. 逻辑数据模型设计 C. 物理数据模型设计 D. 物理实现设计 二、填空题 ( 每空 1 分,共 20 分 ) 1. 在面向对象技术中,用_( 1 )_来抽象地表示客观实体,用( 2_)来抽象描述具有相同属性和行为的对象集合,用_(3)_来抽象地描述一组数据属性相似但某些数据类型不同的类。 2. 基于UML的系统分析的主要目标是为了更精确地理解_( 4 ) _,并获得一个使用_ ( 5 ) _的语言描述的、易于维护的且能体现系统基本_( 6 )_的分析模型。分析模型是由一系列_( 7 )_和_( 8 )_及其相互关系构成。分析模型中的类也叫分析类,分析类可分为三类:_( 9 )_、 _( 10 )_、_( 11 )_。 类与类之间的联系可以分为四种:_( 12 )_、_( 13)_、_( 14)_、_( 15 )_。 3. 在基于UML的系统设计阶段,应该根据靠近问题域的( 16 )_,转化得到靠近解域的( 17 )_;在转化的过程中,对分析阶段的模型进行( 18 )_和( 19 )_,并用类似于编程实现的语言来描述( 20 )。这个设计模型能够比较容易地被转化成程序代码。这就是系统设计的目的。 . . 三、试编程实现下列类层次结构以实现对客户数据的管理。 ( 共 20 分 ) Customer-Cust_ID : string-Cust_Name : string-Desc : string+read()+show()Corp_Cust-Off_Price : string-Trust_Leve : string+read()+show() 四. 简答题(每小题4分,共 20 分) Vip_cust-Phone : string-Vip_Leve : string+read()+show() 1. 为什么面向对象软件开发方法能成为软件开发的主流技术? 2. 面向对象技术包含哪些基本机制? 3. 由基类生成派生类的过程可分为几个步骤? 4. 基于UML的面向对象系统开发方法包括哪几步?各步应画出哪些模型图? 5. 在于UML的数据库系统分析和设计过程中,逻辑数据模型设计阶段的主要任务是什么? 五. 分析与设计题 (共20分) 试用UML对库存管理系统及相关的数据库系统进行分析和设计。调查获知库存管理系统的主要用户是入库管理员、出库管理员、库存管理员和系统管理员:入库管理员负责登记、修改和查询入库流水账;出库管理员负责记录、、修改和查询出库流水账;库存管理员负责登记库存台帐、库存信息查询和打印库存报表;系统管理员负责用户信息管理、数据备份和产品基本信息管理。各种账目数据如下所示。 . . 表 1 入库流水账产品代码 单位入库数量单价总价入库日期入库单编号 表 2 出库流水账产品代码 单位出库数量单价总价出库日期出库单编号 表 3 库存台账产品代码 单位日期入库数量出库数量库存数量 试完成下列工作: (1)画出库存管理系统各用户的用例图;(5分) (2)定义库存管理系统的三个基本分析类;(5分) (3)画出库存管理系统的类图;(5分) (4)将类图转换为关系数据库模式;(5分) . 因篇幅问题不能全部显示,请点此查看更多更全内容class professor:public Person { public:class professor:public Person { public: