1、面向对象设计(工程硕士)期末考试试卷一、简答题(每题6分,共30分)1 类图在UML中有何重要作用? 1.为开发人员提供这种模仿现实世界的表达方式。2.让分析员使用客户所采用的术语和客户交流,促使客户说出所要解决的问题的重要细节。2阐述用例对于系统开发人员来说的价值。是用来从用户的观察角度收集系统需求的一项技术,便于分析员与客户和用户交流,使系统更符合用户的需求3. 简述如何在实际工作中发现类。在与客户的交谈中,要注意客户用来描述业务实体的名词术语。这些名词可作为领域模型中的类。还要注意你听到的动词,因为这些动词可能会构成这些类中的操作。当得到一组类的核心列表后,应当向客户询问在业务过程中每个
2、类的作用。他们的回答将告诉你这些类的职责。4简述怎样发现类之间的继承关系。为候选的类有可能和它的父类、子类在谈话中同时被发现。系统分析员意识到某个类的属性和操作也许能被运用到其他多个类当中去。另一种可能的情况是系统分析员注意到两个或者多个类可能具有相同的属性和操作数5顺序图和协作图中,消息有哪三种?各自的意义和表示什么?消息可以是简单的(simple)、同步的(synchronous)或异步的(asynchronous)。简单消息是从个对象到另一个对象的控制流的转移。如果一个对象发送了个同步消息,那么它要等待对方对消息的应答,收到应答后才能继续自己的操作。而发送异步消息的对象不需要等待对方的应
3、答便可以继续自己的操作。在顺序图中,简单消息是个简单箭头,同步消息是实心箭头。异步消息是个半边箭头。二、分析设计(共40分)1. 根据下面的叙述,绘制一幅关于顾客从自动售货机中购买物品的顺序图。(10分)(1) 顾客(User)先向自动售货机的前端(Front)投币;(2) 售货机的识别器(Register)识别钱币;(3) 售货机前端(Front)根据Register的识别结果产生商品列表;(4) 顾客选择商品;(5) 识别器控制的出货器(Dispenser)将所选商品送至前端(Front)2. 根据下面的描述,绘制一幅状态图。(10分)电话初始时处于“空闲”状态,当听筒被拿起后处于“激活”
4、状态。听筒被拿起后,电话等待拨号,若在30秒之内拨号电话将进入“拨号”状态,如果拨号正确的则电话进入“正在接通中”状态,如过拨号不正确则会一直听到提示拨号错误。若拿起听筒30秒之内不拨号,则电话处于“超时”状态。在“正在接通中”状态下,若对方占线则电话进入“忙”状态,若对方不占线则进入“接通”状态,对方拿起听筒后,电话处于“通话”状态,若在通话中对方挂断则进入“挂起”状态。3.网络的普及带给了人们更多的学习途径,随之而来的管理远程网络教学的“远程网络教学系统”诞生了。“远程网络教学系统”的功能需求如下:l 学生登录网站后,可以浏览课件、查找课件、下载课件、观看教学视频。l 教师登录网站后,可以
5、上传课件、上传教学视频、发布教学心得、查看教学心得、修改教学心得。l 系统管理员负责对网站页面的维护、审核不合法课件和不合法教学信息、批准用户注册。1)学生需要登录“远程网络教学系统”后才能正常使用该系统的所有功能。如果忘记密码,可与通过“找回密码”功能恢复密码。请画出学生参与者的用例图。(10分)2)教师如果忘记密码,可以通过“找回密码”功能找回密码。请画出教师参与者的用例图。(10分)三、思考分析题计(共30分)1. 图书管理系统功能性需求说明如下:(20分) 图书管理系统能够为一定数量的借阅者提供服务。每个借阅者能够拥有唯一标识其存在的编号。图书馆向每一个借阅者发放图书证,其中包含每一个
6、借阅者的编号和个人信息。提供的服务包括:提供查询图书信息、查询个人信息服务和预定图书服务等。 当借阅者需要借阅图书、归还书籍时需要通过图书管理员进行,即借阅者不直接与系统交互,而是通过图书管理员充当借阅者的代理和系统交互。 系统管理员主要负责系统的管理维护工作,包括对图书、数目、借阅者的添加、删除和修改。并且能够查询借阅者、图书和图书管理员的信息。 可以通过图书的名称或图书的ISBN/ISSN号对图书进行查找。 回答下面问题:1) 该系统中有哪些参与者?(5分)2) 确定该系统中的类,找出类之间的关系并画出类图(5分)3) 画出语境“借阅者预定图书”的时序图(10分)2.举一个实际生产中的例子
7、,利用面向对象技术解决实际的问题,阐明设计过程与收获心得。(10分)面向对象分析与设计模拟题一单项选择题1一个设计得好的面向对象系统具有( B )特征。A.低内聚、低耦合B.高内聚、低耦合C.高内聚、高耦合D.低内聚、高耦合2耦合表示一个模块( D )的程度。A.可以被更加细化 B.能够适时地完成其功能C.仅关注在一件事情上 D.联接其他模块和外部世界3在一个课程注册系统中,定义了类CourseSchedule和类Course,其中类CourseSchedule中定义了方法add(c: Course)和方法remove(c: Course),则这两个类之间的关系是( C )。A.泛化关系B.组
8、合关系C.依赖关系D.包含关系4面向对象程序设计将描述事物的数据与( C )封装在一起,作为一个相互依存、不可分割的整体来处理。A.信息B.数据隐藏C.对数据的操作D.数据抽象5( D )是从用户使用系统的角度描述系统功能的图形表达方法。A.类图B.对象图C.序列图D.用例图6采用面向对象技术开发的应用系统的特点是( A )。A.重用性更强B.运行速度更快C.占用存储量小D.维护更复杂7多态性出现在具有( B )结构的类之间。A.整体-部分B.一般-特殊C.实例链接D.消息连接8需求规格说明描述( A )。A.基于计算机系统的功能、性能和约束 B.每个子系统的实现C.软件体系结构元素 D.系统
9、使用说明9Innovation公司正在为Rose开发插件,使得Rose可以把OOA、OOD模型以各种图形格式导出,如JPEG格式、BMP格式、GIF格式等。在导出时,会根据不同的算法来生成相应的图形文件,这些算法很复杂。为了描述这些算法,在下面这些图中,那个是最适合的?( A )A.活动图B.状态图C.类图D.用例图10关于面向对象方法的优点,下列不正确的叙述是( C )。A.与人类习惯的思维方法比较一致 B.可重用性好C.以数据操作为中心 D.可维护性好11构成对象的两个主要因素是( A )。A.属性和服务B.标识和内容C.继承和多态D.消息和封装12下面模型图中( D )能描述“一个雇员最
10、多有一个经理,经理可能管理多个雇员,也可能不管理任何雇员”的含义。A.B.C.D.13对某企业的工作流程进行建模,( B )是最有效的。A.交互图B.活动图C.状态图D.类图14以下对UML的描述中,正确的是( D )。A. UML是一种软件过程方法 B. UML是一种面向对象分析和设计方法C. UML是一种面向对象设计原则 D. UML是一种标准化建模语言15不属于敏捷过程特征的是( C )。A.迭代性B.自适应C.过程化开发D.轻量级16以下叙述中,错误的是( B )。A.类的命名通常为名词或名词短语 B.用例的命名通常为名词或名词短语C.方法命名通常为动词或动词加名词形式 D.实体对象往
11、往是领域问题中的重要名词17以下不属于统一过程(RUP)的特点是( D )。A.以架构为中心的 B.以用例为驱动C.属于迭代和增量开发模型 D.一种结构化开发方法18( C )对系统的业务数据和业务逻辑进行封装。A.控制对象B.边界对象C.实体对象D.生命周期对象19下面的顺序图表明,greet方法应该由( B )实现。A. clientB. GreetingC. helloD. 不确定20类图中不包括( C )。A.类B.接口C.消息D.关系21顺序图主要可以为设计人员提供( A )信息。A.消息发送的顺序 B.某个方法的执行流程C.类之间关联关系的多重性 D.某个对象在不同状态之间的转移二
12、简答题1根据下面的代码,绘制包含类A和类B的类图。 public class B private int pa; protect int pb; public void doSomething() . ; public class A private B theB; public double pc; public void doSomething() theB.doSomthing(); 答:2根据下面的Java代码,绘制包含Applet、Graphics、HelloWorld及其关系的类图。import java.applet.Applet;import java.awt.Graphics
13、;public class HelloWorld extends Applet public void paint(Graphics g) g.drawString(Hello World!, 50, 25); 答:3简述内聚和耦合的概念。答:内聚性描述同一个组内的各个成员之间的相互关系。强内聚表明组内成员属于一个整体;弱内聚表明分组是随意的,甚至是不合逻辑的。内聚性可适用于类中的一组方法、包中的一组类、一组包上。耦合性描述不同组之间的依赖程度。紧耦合表明组之间依赖很强,对一个组的修改会产生复杂的连锁反应并波动到其它包中;松耦合的组之间相对独立,易于理解、维护和扩展。4以下类图中的类关系是否正
14、确?若不正确,说明理由并改正。公司的员工很多,包括程序员、分析员、项目经理答:不正确,员工和程序员、分析员、项目经理之间不应该是组合关系,应该是泛化关系。5请指出下图中的错误。答:1) 计算机与其部件之间不是继承关系,应是聚合关系2) 人与用户、维修人员之间不是聚合关系,应是继承关系3) 计算机与维修人员之间不是聚合关系,而应该是关联或依赖6简述类图和交互图在面向对象分析模型中的作用。答:1) 类图:描述了构成一类对象特征的状态和行为,以及类之间的结构关系,描述系统的静态结构;2) 交互图:描述对象之间的交互行为,演示用例实现,描述系统的动态行为。7设计一个饮料自动售货机系统,其主要功能是向顾
15、客出售饮料,同时供应商需要向其中放置饮料,收银员需要向其中放置零钱和收回营业收入。画出该系统的用例图。答:8简述包和子系统的主要区别。答:1) 包和子系统是划分系统和表达架构的建模元素;2) 子系统是封装了实现细节的包,提供行为和接口,封装实现细节;3) 包只是对类似建模元素分组管理的机制。三应用题考虑一个应用于手机的“电话簿管理系统”,电话簿包含若干电话记录,每个电话记录包括:姓名、手机电话、家庭电话、邮箱4项内容。对电话簿系统要求的操作包括:查看电话簿、查找电话、添加电话记录、删除电话记录、拨打电话,拨打电话功能需要使用电信网关的服务。要求系统通过图形用户界面操作电话簿,添加电话记录时,创
16、建电话记录对象,通过图形界面输入属性后保存到对象中。请回答下面问题:1)绘制系统的用例图。2)如果要求在电话簿中不允许有姓名相同的电话记录,请写出“添加电话记录”功能的事件流描述(包括可选事件流)。3)经过初步分析,找到如下类,请用类图描述类之间的关系。电话簿(Phones)、电话记录(Phone)、界面(UserUI)4)为2)中的正常事件流绘制顺序图。答:(本题仅为参考答案,学生可自由发挥,灵活设计)1) 系统用例图2) 正常事件流a.用户查看电话簿,选择添加电话号码功能项,启动该用例; b.用户输入姓名、手机电话、家庭电话和邮箱 c.系统保存电话簿数据,更新视图可选事件流第2步(用户输入姓名重复)2.1 用户输入姓名已存在,系统提示是否重新输入姓名2.2 用户选择重新输入姓名,用例从第2步正常执行2.3 用户选择放弃,用例结束3) 类图 4) 顺序图