面向对象分析与设计模拟题.docx
《面向对象分析与设计模拟题.docx》由会员分享,可在线阅读,更多相关《面向对象分析与设计模拟题.docx(18页珍藏版)》请在冰豆网上搜索。
面向对象分析与设计模拟题
《面向对象分析与设计》模拟题
一.单项选择题
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.组合关系
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.Innovation公司正在为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)能描述“一个雇员最多有一个经理,经理可能管理多个雇员,也可能不管理任何雇员”的含义。
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.实体对象往往是领域问题中的重要名词
17.以下不属于统一过程(RUP)的特点是(D)。
A.以架构为中心的B.以用例为驱动
C.属于迭代和增量开发模型D.一种结构化开发方法
18.(C)对系统的业务数据和业务逻辑进行封装。
A.控制对象
B.边界对象
C.实体对象
D.生命周期对象
19.下面的顺序图表明,greet方法应该由(B)实现。
A.client
B.Greeting
C.hello
D.不确定
20.类图中不包括(C)。
A.类
B.接口
C.消息
D.关系
21.顺序图主要可以为设计人员提供(A)信息。
A.消息发送的顺序B.某个方法的执行流程
C.类之间关联关系的多重性D.某个对象在不同状态之间的转移
二.简答题
1.根据下面的代码,绘制包含类A和类B的类图。
publicclassB{
privateintpa;
protectintpb;
publicvoiddoSomething(){...}
};
publicclassA{
privateBtheB;
publicdoublepc;
publicvoiddoSomething(){theB.doSomthing();}
}
答:
2.根据下面的Java代码,绘制包含Applet、Graphics、HelloWorld及其关系的类图。
importjava.applet.Applet;
importjava.awt.Graphics;
publicclassHelloWorldextendsApplet{
publicvoidpaint(Graphicsg){
g.drawString("HelloWorld!
",50,25);
}
}
答:
3.简述内聚和耦合的概念。
答:
①内聚性描述同一个组内的各个成员之间的相互关系。
强内聚表明组内成员属于一个整体;弱内聚表明分组是随意的,甚至是不合逻辑的。
内聚性可适用于类中的一组方法、包中的一组类、一组包上。
②耦合性描述不同组之间的依赖程度。
紧耦合表明组之间依赖很强,对一个组的修改会产生复杂的连锁反应并波动到其它包中;松耦合的组之间相对独立,易于理解、维护和扩展。
4.以下类图中的类关系是否正确?
若不正确,说明理由并改正。
公司的员工很多,包括程序员、分析员、项目经理……
答:
不正确,员工和程序员、分析员、项目经理之间不应该是组合关系,应该是泛化关系。
5.请指出下图中的错误。
答:
1)计算机与其部件之间不是继承关系,应是聚合关系
2)人与用户、维修人员之间不是聚合关系,应是继承关系
3)计算机与维修人员之间不是聚合关系,而应该是关联或依赖
6.简述类图和交互图在面向对象分析模型中的作用。
答:
1)类图:
描述了构成一类对象特征的状态和行为,以及类之间的结构关系,描述系统的静态结构;
2)交互图:
描述对象之间的交互行为,演示用例实现,描述系统的动态行为。
7.设计一个饮料自动售货机系统,其主要功能是向顾客出售饮料,同时供应商需要向其中放置饮料,收银员需要向其中放置零钱和收回营业收入。
画出该系统的用例图。
答:
8.简述包和子系统的主要区别。
答:
1)包和子系统是划分系统和表达架构的建模元素;
2)子系统是封装了实现细节的包,提供行为和接口,封装实现细节;
3)包只是对类似建模元素分组管理的机制。
三.应用题
考虑一个应用于手机的“电话簿管理系统”,电话簿包含若干电话记录,每个电话记录包括:
姓名、手机电话、家庭电话、邮箱4项内容。
对电话簿系统要求的操作包括:
查看电话簿、查找电话、添加电话记录、删除电话记录、拨打电话,拨打电话功能需要使用电信网关的服务。
要求系统通过图形用户界面操作电话簿,添加电话记录时,创建电话记录对象,通过图形界面输入属性后保存到对象中。
请回答下面问题:
1)绘制系统的用例图。
2)如果要求在电话簿中不允许有姓名相同的电话记录,请写出“添加电话记录”功能的事件流描述(包括可选事件流)。
3)经过初步分析,找到如下类,请用类图描述类之间的关系。
电话簿(Phones)、电话记录(Phone)、界面(UserUI)
4)为2)中的正常事件流绘制顺序图。
答:
(本题仅为参考答案,学生可自由发挥,灵活设计)
1)系统用例图
2)正常事件流a.用户查看电话簿,选择添加电话号码功能项,启动该用例;
b.用户输入姓名、手机电话、家庭电话和邮箱
c.系统保存电话簿数据,更新视图
可选事件流第2步(用户输入姓名重复)
2.1用户输入姓名已存在,系统提示是否重新输入姓名
2.2用户选择重新输入姓名,用例从第2步正常执行
2.3用户选择放弃,用例结束
3)类图
4)顺序图
1.一个设计得好的OO系统具有?
(A)低内聚、低耦合的特征(B)高内聚、低耦合的特征
(C)高内聚、高耦合的特征(D)低内聚、高耦合的特征
2.CocoCola是一家大型公司,由于公司业务的发展,准备对公司已有的ERP软件系统进行升级,因此委托CoolSoft公司负责该项工作。
Cococola公司所使用的系统是很久以前采用结构化开发方法开发的,该系统非常复杂,而且系统使用多线程来处理公司中并发的帐务处理请求。
由于系统开发出来后经过多次修改,因此最初的系统开发文档已经过时。
CoolSoft公司的专家建议在对系统升级前和Cococola公司的高层管理人员开一次讨论会,以便能更好地了解目前所使用的软件系统。
那么在这次讨论会中,下面几个图中哪个图是最有用的?
(A)活动图(B)部署图(C)状态图(D)顺序图
3.Coolsoft准备为Mergon银行开发一个自助ATM服务系统AutoCard,AutoCard的具体需求如下:
AutoCard将使用三个插槽,第一个插槽用于系统送出新的信用卡,第二个插槽用于在向信用卡中加钱时插入信用卡,第三个插槽用于在向信用卡中存钱时插入纸币。
系统运行时会显示一个界面,界面中有三个选项:
(1)获取新的信用卡;
(2)为信用卡加钱;(3)打印存款凭条。
选项1允许用户获得一张新的信用卡。
新的信用卡在使用前必须先存钱。
选项2允许用户为新卡或旧卡加钱,这时要求把信用卡插入第二个插槽中,把纸币插入第三个插槽中。
选项3允许用户打印与存钱活动有关的收据,或打印信用卡最近一次使用情况的收据。
在开发AutoCard系统完成上述功能时,下面几个图中哪个图是最有用的?
(A)组件图(B)部署图(C)活动图(D)状态图
4.CoolSoft公司打算为Pepsi饮料公司设计一个库存管理系统,在设计系统的用户界面时,如果对Pepsi饮料公司员工的计算机技能水平不是很清楚,那么CoolSoft公司应该采用下面哪种方法是最好的?
(A)确定使用该系统的用户所要具备的计算机技能水平,并提供详细的系统联机帮助,当用户需要帮助时,能迅速获得这些帮助。
(B)确定使用该系统的用户所要具备的计算机技能水平,并安排对用户进行必要的培训。
(C)开发一个用户界面的部分原型,并做一些可用性测试以确定用户的计算机技能水平以及用户使用什么样的界面操作会比较满意。
根据测试结果对系统界面做一些修改,并重复这个过程。
(D)开发一个用户界面的部分原型,并做一些可用性测试以发现用户使用过程中会存在的问题,将这些问题用文档详细说明,并与最终系统一起交付给用户。
5.“一个研究生在软件学院做助教(teachingassistant),同时还在校园餐厅打工做收银员(cashier)。
也就是说,这个研究生有3种角色:
学生、助教、收银员,但在同一时刻只能有一种角色。
”
根据上面的陈述,下面哪个设计是最合理的?
(A)
(B)
(C)
(D)
6.在互联网时代,共享软件无处不在,美国共享软件职业联盟对共享软件的定义是:
“Shareware”issoftwarethatoffersa“trybeforeyoubuy”(TBYB)capability,共享软件实质是采用“先用后买”的营销手段的商业软件。
周弈靠一个非主流的MP3-CDMaker小软件,一个月就从美国人那里得到了5万美元的注册收入。
周弈的例子让我们意识到个人英雄主义的时代并没有过去,只是有了新的环境。
周弈的软件很小,甚至可以不用软件工程的方法就可以开发出来,只是内部的一个转换算法复杂,为了描述这个算法,下面哪个图是最合适的?
(A)类图(B)状态图(C)活动图(D)用例图
7.如果要对一个学院课程注册系统中三个主要角色学生、教授、教务长的工作流程建模,那么下面4个图中哪个图是最有用的?
(A)活动图(B)类图(C)交互图(D)部署图
8.在课程注册系统中,有3个用例,分别是“注册课程”、“查询成绩”、“修改学生个人情况”,其中“注册课程”是高风险、高业务价值的用例;“查询成绩”是低风险、高业务价值的用例;“修改学生个人情况”是低风险、低业务价值的用例。
在开发时准备采用迭代式开发,先实现其中的一个用例,那么首先应实现哪个用例?
(A)“修改学生个人情况”用例(B)“查询成绩”用例
(C)“注册课程”用例(D)3个用例中的任意一个都可以
9.汽车(Car)由轮子、发动机、油箱、座椅、方向盘等组成。
那么car类和其他类(Wheel、Engin、Tank、Chair、SteeringWheel)之间的关系是:
(A)泛化关系(Generalization)(B)实现关系(Realization)
(C)包含关系(Inclusion)(D)组合关系(Composition)
10.Innovation公司正在为美国国防部的新型导弹UMS—993开发嵌入式控制软件,为了描述和理解该嵌入式系统中的控制机制,如在不同的飞行情况下导弹的响应动作,下面哪几个图是最有用的?
(A)交互图(B)活动图(C)状态图(D)类图
11.在一个网络游戏系统中,定义了类Cowboy和类Castle,并在类Cowboy中定义了方法open(c:
Castle)和方法Close(c:
Castle),则类Cowboy和类Castle之间的关系是:
(A)依赖(dependency)关系(B)组合(composition)关系
(C)泛化(generalization)关系(D)包含(include)关系
12.一个银行ATM系统采用下图所示的配置图,则下列叙述不正确的是:
(A)与GUI有关的类应该部署在ATM客户机上
(B)这个图表示一个三层的体系结构,不管ATM客户机、ATM应用服务器上、ATM数据服务器上是运行在同一台机器上还是不同的机器上
(C)为了系统的可伸缩性(scalability),与业务逻辑有关的对象应该部署在ATM应用服务器上
(D)为了系统的可伸缩型,与业务逻辑有关的对象应该部署在ATM客户机上
13.系统架构师Bob在分析面向对象的课程注册系统的“注册课程”用例时,得到了一组协作关系复杂的类,下面哪种图可以描述该用例中多个对象之间的相互协作关系以及协作过程中的行为次序?
(A)交互图(B)状态图(C)对象图(D)用例图
14.Wylie学院准备开发一个新的OO课程注册系统,由于开发费用和时间的限制,这个新的课程注册系统将使用已有的一个非OO的课程目录遗留系统(legacysystem)所提供的一些功能,因此需要和这个课程目录系统集成。
Wylie学院也预见到,以后这个课程目录系统遗留系统将会被放弃,新的OO系统将逐步实现目前非OO系统所提供的功能。
那么在考虑系统体系结构方面的问题时,下面哪些做法是不可以接受的?
(A)定义一个接口,对遗留系统中提供的功能进行封装;
(B)采用层次体系结构,组成新系统的类单独放在某一层中;
(C)采用层次体系结构,定义一些类来解决OO系统和遗留系统之间可能存在的不匹配问题,并把这些类放在某一层中。
(D)新系统中的类直接调用遗留系统中的功能,以增加整个系统的性能。
15~16题参考下面库存管理系统的类图(部分)和顺序图(部分):
15.顺序图中缺了两个类名,用XXX和YYY代替,则XXX和YYY分别可以是什么类?
(A)XXX=DeliverSchedule,YYY=Supppier
(B)XXX=Supppier,YYY=PreferredSupplier
(C)XXX=PreferredSupplier,YYY=DeliverSchedule
(D)XXX=DeliverSchedule,YYY=PreferredSupplier
16.如果有新的需求:
(1)对已有损坏(damaged)的货物的价格进行打折;
(2)可以按货物的大小和颜色对货物进行查找。
那么应该如何修改类图中的类比较好?
(注:
下面图中的isDamaged()方法可以判断一个货物是否已损坏;loacation()方法返回货物所存放的具体位置。
)
(A)增加类InventoryProduct的属性和方法,如图A所示,其余部分不变;
(B)增加一个新的类PhysicalProduct用来表示仓库中具体的货物,并在类PhysicalProduct和InventoryProduct类之间建立关联关系,如图B所示,其余部分不变;
(C)增加类Inventory的属性和方法,如图C所示,其余部分不变;
(D)同时增加类InventoryProduct和类Inventory的属性和方法,如图D所示,其余部分不变。
17.根据下面的代码,判断下面那些叙述是正确的?
publicclassHouseKeeper{
privateTimeCardtimecard;
publicvoidclockIn(){
timecard.punch();
}
}
(A)类HouseKeeper和类TimeCard之间存在关联(Association)关系;
(B)类HouseKeeper和类TimeCard之间存在泛化(Generalization)关系;
(C)类HouseKeeper和类TimeCard之间存在实现(Realization)关系;
(D)类HouseKeeper和类TimeCard之间存在包含(Inclusion)关系
18.Hunter新任命为Bland公司的项目经理,在其负责的第一个软件开发项目中,他采用了RUP过程模型,在他的项目管理活动中,哪项活动有悖RUP的基本原理(SpiritofRUP)?
(A)采用用例模型描述系统的功能需求
(B)尽可能的以可执行软件作为衡量项目进度的标准
(C)在项目的早期就确定一个经过验证的可执行架构
(D)按照人员的功能分组,以形成资源中心
简答: