2011年6月面向对象分析与设计试题B卷

  • 格式:doc
  • 大小:483.50 KB
  • 文档页数:10

面向对象分析与设计试题B卷(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. 如果某基类的一个成员函数被说明为______,则该成员函数在派生类中可以有不同的函数实现。

A. 内联函数B. 静态函数C. 友元函数D. 虚函数11. 在二进制模式下,可利用文件输入/输出流类中定义的______函数将所有数据以字符形式存储到文件里。

A. loadB. saveC. writeD. read12. 基类中的public 成员,通过protected派生,其在派生类中的可见性为______。

A. privateB. 不可访问C. publicD. protected13. ______是数据类型抽象化或参数化的类。

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 分)四. 简答题(每小题4分,共 20 分)1. 为什么面向对象软件开发方法能成为软件开发的主流技术?2. 面向对象技术包含哪些基本机制?3. 由基类生成派生类的过程可分为几个步骤?4. 基于UML 的面向对象系统开发方法包括哪几步?各步应画出哪些模型图?5. 在于UML 的数据库系统分析和设计过程中,逻辑数据模型设计阶段的主要任务是什么?五. 分析与设计题 (共20分)试用UML 对库存管理系统及相关的数据库系统进行分析和设计。

调查获知库存管理系统的主要用户是入库管理员、出库管理员、库存管理员和系统管理员:入库管理员负责登记、修改和查询入库流水账;出库管理员负责记录、、修改和查询出库流水账;库存管理员负责登记库存台帐、库存信息查询和打印库存报表;系统管理员负责用户信息管理、数据备份和产品基本信息管理。

各种账目数据如下所示。

表 1 入库流水账产品代码 单位入库数量单价总价入库日期入库单编号表 2 出库流水账产品代码 单位出库数量单价总价出库日期表 3 库存台账入库数量日期产品代码 单位出库数量库存数量出库单编号试完成下列工作:(1)画出库存管理系统各用户的用例图;(5分) (2)定义库存管理系统的三个基本分析类;(5分) (3)画出库存管理系统的类图;(5分) (4)将类图转换为关系数据库模式;(5分)面向对象分析与设计试题参考答案一、单项选择题( 每小题 1 分,共20 分)1.C2.D3.B4.B5.D6.B7.B8.D9.C 10.D11.C 12.D 13.D 14.D 15.B16.D 17.C 18.D 19.D 20.C二、填空题( 每空 1 分,共20 分)1.(1)对象(2)类(3)类模板(4)需求(5)开发人员(6)结构(7)类(8)类的实例(或对象)(9)边界类(10)实体类(11)控制类(12)关联(13)泛化/特化联系(14)聚合/组合联系(15)依赖联系(16)逻辑模型(17) 物理模型(18) 扩充(19)细化(20)物理模型三、编程序#include <iostream.h>using namespace std;class Customer{public:char Cust_ID[10];char Cust_Name[10];char Desc [100];virtual void Show();vitual void Read();};class Corp_Cust: public Customer{public:char Off_price[10];char Trust_Level[10];void Show();void Read();};class Vip_Cust: public Customer{public:char Phone[10];char Vip_Level[10];void Show();void Read();};void Customer::Show() //打印出用户输入的信息{cout<<"编号:"<< Cust_ID <<endl;cout<<"名字:"<< Cust_Name <<endl;cout<<"描述:"<<Desc<<endl;}void Customer::Read() //提示用户需要输入的信息{cout<<"编号:"<<endl;cin>> Cust_ID;cout<<"名字:"<<endl;cin>> Cust_Name;cout<<"描述:"<<endl;cin>> Desc;}void Corp_Cust::Show(){ Customer::Show();cout<<"打折价格:"<< Off_Price <<endl;cout<<"信任等级:"<< Cust_Name <<endl;}void Corp_Cust::Read(){ Customer::read();cout<<"打折价格:"<<endl;cin>> Off_Pricel;cout<<"信任等级:"<< endl;cin>>Cust_Name;}void Vip_Cust::Show(){ Customer::Show();cout<<"贵宾电话:"<< Phone <<endl;cout<<"贵宾等级:"<< Vip_Level <<endl;}void Vip_Cust::Read(){ Customer::read();cout<<"贵宾电话:"<<endl;cin>> Off_Pricel;cout<<"贵宾等级:"<< endl;cin>> V ip_Level;}void main(){ Corp_Cust C1;V ip_Cust: C2;C1.Read();C1.Show();C2.Read();C2.Show();}四. 简答题1.为什么面向对象方法能成为软件开发的主流技术?答:面向对象开发方法一改过去传统的以功能分析为基础的面向过程的结构化分析与设计方法,面向对象开发方法模拟人们理解和处理客观世界的方式来分析问题,把系统视为一系列对象的集合,其面向对象的设计又将分析的结果映射到某种面向对象实现工具的结构上,使映射过程有着比较直接的对应关系,使分析者、设计者和编程者都可使用相同的概念,从而使面向对象的软件开发能比较自然地模拟客观世界的活动,使问题描述空间与解空间在结构上尽可能一致。