您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 2010-2011第一学期面向对象分析与设计试题
2010-2011第一学期面向对象分析与设计试题一、单项选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。每小题1分,共20分)1.(D)是对具有相同属性和行为的一组对象的抽象描述。A.实体B.对象C.类模板D.类2.一类对象向另一类对象所发消息的格式中不包括(D)。A.对象名B.操作函数名C.参数表D.类名3.面向对象技术的三大机制不包括(A)。A.抽象B.封装C.多态D.继承4.从整体功能层面考虑类的设计应遵循下列三条原则,除了(B)。A.单一功能原则B.封装原则C.最小惊讶原则D.开放/封闭原则5.可以在类外访问类的(C)。A.私有成员B.受保护性成员C.公有成员D.纯虚函数6.类的(D)是供创建类的实例对象时调用,完成对象的初始化。A.内联函数B.析构函数C.友员函数D.构造函数7.派生类可以继承(B)。A.私有成员B.部分公有成员C.构造函数D.析构函数8.如果合理地利用(B),就可以在类的复杂层次关系中为共享访问与成员隐蔽之间找到一个平衡点,既实现部分成员隐蔽,又能方便部分成员的继承,实现代码的高效重用和扩充。A.私有继承B.保护继承C.公有继承D.多继承9.如果将某类族中的一个同名成员函数说明为虚函数,则可用(C)来调用不同派生类的虚函数,实现运行时多态。A.基类对象B.派生类对象C.基类对象的指针D.派生类对象的指针10.C++中既可实现文件输入又可实现文件输出的类是(D)A.ifstreamB.ofstreamC.iostreamD.fstream11.基类中的protected成员,通过public派生,其在派生类中的可见性为(C)。A.不可访问B.privateC.protectedD.public12.在C++程序中,对象之间的相互通信可以通过(B)来实现。A.继承B.调用成员函数C.封装D.函数重载13.(B)阶段的主要目标是为了更精确地理解用户需求,并获得一个使用开发人员熟悉的语言描述的、易于维护且能体现系统基本结构的模型。A.系统需求分析B.系统分析C.系统设计D.系统实现14.在面向对象程序设计语言中,(B)是利用可重用成分构造软件系统的最有效的特性,它不仅支持系统的可重用性,而且还有利于提高系统的可扩充性。A.封装B.继承C.抽象D.引用15.(C)是从用户使用系统的角度描述系统功能的图形表达方法。A.类图B.组件图C.用例图D.配置图16.用来描述实现某些服务所涉及的对象及其交互关系(包括消息通信)的动态视图就称为(B),可用于描绘业务流程。A.对象图B.协作图C.状态图D.活动图17.(C)表示构成系统的代码部件及其相互之间联系的图示。A.状态图B.协作图C.组件图D.配置图18.UML提供了一系列的图支持面向对象的分析与设计,其中(D)描述的是系统的静态组织结构和数据结构。A.序列图B协作图C.对象图D.类图19.(B)是描述系统体系结构的静态实现视图。A.类图B.对象图C.组件图D.配置图20.使用UML进行关系数据库的(A)时,需要设计出表达持久数据的实体类及其联系,并把它们映射成为关系数据库表(Table)、视图(View)等。A.物理数据模型设计B.物理实现设计C.业务UseCase模型设计D.逻辑数据模型设计二、填空题(每空1分,共20分)1.用_(多态)_机制可以实现发送一个通用消息而调用不同的方法;(封装_)机制是实现信息隐蔽的一种技术,其目的是使类的_(定义和实现)_相互分离。2.类是一组具有相同属性和服务的对象的抽象描述,类中的每个对象都是这个类的一个_(实例)_。类之间共享属性与服务的机制叫做_(继承)。一个对象通过发送_(消息)_来请求另一个对象为其服务。3.派生类的生成包含三个步骤:_(吸收基类成员)_、_(改造基类成员)_和_(定义派生类的新成员)_。4._(序列图)_描述完成某项行为操作的参与对象和这些对象之间传递消息的时间顺序。_(状态图)_描述系统运行过程中某类对象可能具有的状态,以及在不同状态间的跳转和触发这些跳转的外部事件。_活动图__可用于描述系统业务流程,它由一系列的动作状态构成,动作的状态控制可以从一个状态流向另一个与之相邻的状态。5.基于UML的系统分析的主要目标是为了更精确地理解_(需求_)_,并获得一个使用开发人员的语言描述的、易于维护的且能体现系统基本结构的_(分析)_模型。该模型主要包括_(类图_)和(对象图_)。6.基于UML的关系数据库设计一般可分为4个阶段:(17)业务UseCase模型设计(18)逻辑数据模型设计(19)物理数据模型设计(20)物理实现设计三、写出下列程序的输出结果。(满分10分)classB{public:B(){coutBendl;}virtualvoidf(){coutB::fendl;}virtual~B(){cout~Bendl;}};ClassD:publicB{private:intd;public:D(){coutDendl;}voidf(){coutD::fendl;}virtual~D(){cout~Dendl;}};voidmain(){B*pB;Dd1;pB=&d1;pB-f();deletepB;}四.简答题(每小题4分,共20分)1.为什么面向对象方法能更有效地克服软件危机?2.如何实现运行时多态?3.基于UML的面向对象系统开发方法包括哪几步?4.简述确定分析类的方法。5.简述基于UML的数据库系统分析和设计的步骤。五.分析与设计题试用UML对开放式学籍管理系统及相关的数据库系统进行分析和设计。学籍管理系统的主要用户是系统管理员和学生:系统管理员使用学籍管理系统来实现教师信息管理、学生信息管理,课程管理、成绩管理和打印报表;学生使用学籍管理系统来实现选课管理和成绩查询。试完成下列工作:(1)画出学籍管理系统的用例图;(6分)(2)定义学籍管理系统的三个基本分析类;(6分)(3)画出学籍管理系统的类图;(6分)(4)画出学生查询成绩的活动图;(6分)(5)学生类和课程类之间存在多对多的关联,试将这种关联转化为关系数据库模式。(6分)参考答案一、单项选择题(每小题1分,共20分)1.D2.D3.A4.B5.C6.D7.B8.B9.C10.D11.C12.B13.B14.B15.C16.B17.C18.D19.B20.A二、填空题(每空1分,共20分)1.(1)多态(2)封装(3)定义和实现2.(4)实例(5)继承(6)消息3.(7)吸收基类成员(8)改造基类成员(9)定义派生类的新成员4.(10)序列图(11)状态图(12)活动图5.(13)需求(14)分析(或静态)(15)类图(16)对象图6.(17)业务UseCase模型设计(18)逻辑数据模型设计(19)物理数据模型设计(20)物理实现设计三、写出下列程序的输出结果。BDD::f~D~B四.简答题1.1.为什么面向对象方法能更有效地克服软件危机?答:面向对象开发方法一改过去传统的以功能分析为基础的面向过程的结构化分析与设计方法,面向对象开发方法模拟人们理解和处理客观世界的方式来分析问题,把系统视为一系列对象的集合,其面向对象的设计又将分析的结果映射到某种面向对象实现工具的结构上,使映射过程有着比较直接的对应关系,使分析者、设计者和编程者都可使用相同的概念,从而使面向对象的软件开发能比较自然地模拟客观世界的活动,使问题描述空间与解空间在结构上尽可能一致。因此,采用面向对象方法可以更有效地开发大型软件系统。面向对象方法的封装、继承、多态等机制不仅支持软件复用,而且使软件维护工作可靠有效,可实现软件系统的柔性制造,更好地克服软件危机。因此,它已成为成熟的广为采用的软件开发方法。2.如何实现运行时多态?答:可将类族中的具有共性的成员函数声明为虚函数,然后定义一个基类的对象指针就可以指向不同派生类的对象,来调用不同派生类的虚函数,从而实现运行时多态。4.简述确定分析类的方法。答:常用方法是使用名词/动词分析法来寻找分析类。名词/动词分析法包含如下步骤:(1)收集信息。从用户需求、用例模型、项目词汇表等信息源中收集尽可能多的相关信息;(2)分析信息。在收集信息之后,找出主要的名词、名词短语、动词和动词短语。由名词和名词短语推断类和类的属性;由动词和动词短语推断类的职责和类的操作。5.简述基于UML的数据库系统分析和设计的步骤答:基于UML的关系数据库设计与传统的关系数据库设计的过程类似,一般分为4个阶段:(1)业务UseCase模型设计:就是进行数据库的需求分析,使用用例图等建立业务模型。(2)逻辑数据模型设计:主要是确定应用系统所需要的持久数据。使用类图、顺序图、活动图、状态图等建立数据库逻辑模型。如果是关系数据库设计,则需要设计出表达持久数据的实体类及其联系,并把它们映射成为关系数据库表(Table)、视图(View)等。(3)物理数据模型设计:使用类图、组件图、配置图等,设计数据库的物理模型。(4)物理实现设计:把物理数据模型转换到实际的数据库环境。结合实际的数据库环境,定义构成数据库的基本表、文件的组织方式、索引方式等。5.(1)系统用例图如下学生选课管理成绩查询教师档案管理学生档案管理课程管理成绩管理系统管理员打印报表(2)三个基本分析类+selectCoure()+searchScore()-studentId:int-studentName:string-sex:string-birthday:Date-nativePlace:string-deptID:string-majorId:string学生类+teacherArc()+studentArc()+courseManage()+scoreManage()+printReport()-teacherId:int-teacherName:string-sex:string-registDay:Date-nativePlace:string-deptID:string-teachCoures:string教师类+addCoure()-courseId:int-coureName:string-description:string-time:int课程类(3)画出学籍管理系统的类图:+selectCoure()+searchScore()-studentId:int-studentName:string-sex:string-birthday:Date-nativePlace:string-deptID:string-majorId:string学生类+teacherArc()+studentArc()+courseManage()+scoreManage()+printReport()-teacherId:int-teacherName:string-sex:string-registDay:Date-nativePlace:string-deptID:string-teachCoures:string教师类+addCoure()-courseId:int-coureName:string-description:string-time:int课程类+addSC()+scStat()+markStat()-studentId:string-coureId:string-term:int-score:float学生选课类+bFull():bool-teacherName:string-coureName:string-description:string-GivingDate:string-place开设课程1..*0..*1..*0..*(4)学生查询成绩的活动图学生登录选择查询类型输入查询关键词生成成绩单用户名和密码正确错误继续查询不继续(5)把需要持久存储的数据实体类及其联系,映射成为如下关系数据库表:学生(学生号、姓名、出生日期、性别、籍贯、地址、电话、入学时间、专业
本文标题:2010-2011第一学期面向对象分析与设计试题
链接地址:https://www.777doc.com/doc-5446947 .html