2007学年第2学期 考试科目: 面向对象分析与设计
考试类型:(闭卷) 考试时间: 120 分钟
学号 姓名 年级专业
题号 | 一 | 二 | 三 | 四 | 五 | 总分 |
得分 | ||||||
评阅人 |
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
A.键盘、鼠标、通信端口、网络等设备一有变化,就会产生消息。
B.操作系统不断向应用程序发送消息,但应用程序不能向操作系统发送消息。
C.应用程序之间可以相互发送消息。
D.发送与接收消息的通信机制与传统的子程序调用机制不同。
2.面向对象技术中,对象是类的实例。对象有三种成分:()、属性和方法(或操作)。
A.标识 B.规则 C.封装 D.消息
3~5:在UML提供的图中,可以采用( 3 )对逻辑数据库模型建模;( 4 )用于接口、类和协作的行为建模,并强调对象行为的事件顺序;( 5 )用于系统的功能建模,并强调对象间的控制流。
A.用例图 B.构件图 C.活动图 D.类图
A.协作图 B.状态图 C.序列图 D.对象图
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.UML作为一种可视化建模语言需要与RUP开发过程同时使用
D.目前在软件生命周期的分析、设计、实现和测试中均可以应用面向对象方法
11.在类图中,那个类图中的类Order所生成的代码具有
public class Order {
public Customer recipient;
}
的形式?( )
A. | B. |
C | D. |
A.都属于模型结构元素
B.都存在继承关系
C.类描述系统的部分静态视图,用例描述系统动态的行为视图
D.类描述的是系统的内部构成,用例也可以描述系统的内部构成
13.Innovation公司正在为Rose开发插件,使得Rose可以把OOA、OOD模型以各种图形格式导出,如JPEG格式、BMP格式、GIF格式等。在导出时,会根据不同的算法来生成相应的图形文件,这些算法很复杂。为了描述这些算法,在下面这些图中,那个是最适合的?( )
A.活动图 B.状态图 C.类图 D.用例图
14.对类模型、状态模型、交互模型描述不正确的是()。
A.每种模型都可以描述系统的全部方面。
B.类模型描述的是系统内部对象的静态结构。
C.状态模型描述的是对象当中与时间相关的那些方面,以及那些界定了事件上下文的状态。
D.交互模型描述的是对象如何协作以达到某种结果。
15.下面说法不正确的是()。
A.软件开发过程(software development process)通过使用一系列预定义的技术和表示法,为有组织的软件生产提供了基础。
B.系统构思(system conception)要处理的是某项应用的起源。
C.在设计阶段的过程中,作为开发者,必须广泛利用各种结果作出策略决策。
D.类设计阶段是编写实际代码的阶段。
二、判断题(每题1分,共10分。对的标“T”,错的标“F”,将答案写入下表)
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
2.轮转建模适合专家建模人员,安排一次由10~20人参加会议,互相激励,进行头脑风暴。
3.面对对象开发的一项主要目标就是最大限度地复用类和方法。
4.一个状态图最多只能由一个初态和一个终态。
5.因为公用接口描述了类的服务,在定义类的时候,最好是遵循“由外而内“的顺序。
6.实现是软件工程的最后阶段,它描述了程序设计语言中的细节。
7.一个软件系统,如果只有源代码,缺乏其它相应的辅助文档,如缺乏顺序图和类图,则可以利用Rose进行逆向工程得到顺序图和类图,但得到的顺序图和类图会比较简单。
8.类设计并不是从头开始的,而是详尽描述了前面的分析和设计阶段。
9.在系统设计的过程中,要设计高层策略,即系统架构(system architecture),用于构造问题的解决方案。
10.面向对象分析有两个阶段,领域分析和应用分析,应用分析捕获一项应用的通用知识。
三、简答题(共30分,每题6分)
1.简述和说明“迭代开发”?(6分)
2.修改图1,使其可以确定某一行位于哪一页上,不需要首先确定列。(6分)
图1 报纸的部分类图
3.简单的数字手表上面有一个显示屏和两个设置按钮,按钮A和按钮B。此表有两种操作模式:显示时间和设定时间。在显示时间模式下,手表会显示小时和分钟,小时和分钟由闪烁的冒号分隔。设定时间模式有两种模式:设定小时和设定分钟。按钮A选择模式。每次按下此按钮时,模式会连续前进:显示、设定小时、设定分钟和显示分钟,等等。在子模式内,每次只要按下按钮B,就会拨快小时或分钟。在按钮生成另一个事件之前,必须释放它们。绘制一个数字手表的状态图。(6分)
4.假设不小心从你的书本上111面撕下一角(如图2所示)。(6分)
根据现有信息尽可能判断:
(1)“StockBrokerSystem”类有哪几个操作?
(2)“买入股票”操作要做哪些工作?(采用伪代码描述)
图2 买入股票的顺序图
5.绘制一个类模型来描述无向图,如图3所示。无向图由一组顶点和边组成。边连接顶点对。提示:模型应该只捕获图的结构,不需要考虑象顶点位置或边长等外形问题。(6分)
图3 无向图示例
四、设计题(共30分)
1.阅读下列说明及图4和图5,回答问题1、问题2和问题3。(20分)
【说明】
某电话公司决定开发一个管理所有客户信息的交互式网络系统。系统功能如下:
浏览客户信息:任何使用Internet的网络用户都可以浏览电话公司所有的客户信息(包括姓名、住址、电话号码等)。
登陆:电话公司授予每个客户一个帐号。拥有授权帐号的客户,可以使用系统提供的页面设置个人密码,并使用该帐号和密码向系统注册。
修改个人信息:客户向系统注册后,可以发送电子邮件或者使用系统提供的页面,对个人信息进行修改。
删除客户信息:只有公司的管理人员才能删除不再接受公司服务的客户的信息。
系统采用面对对象方法进行开发,在开发过程中认定出的类见表1.
图4 用例图 | 图5 类关联图 |
编号 | 类名 | 描述 |
1 | InternetClient | 网络用户 |
2 | CustomerList | 客户信息表,记录公司所有客户的信息 |
3 | Customer | 客户信息,记录单个客户的信息 |
4 | CompanyCustomer | 公司客户 |
5 | InternalClient | 公司的管理人员 |
在需求分析阶段,采用UML的用例图(use case diagram)描述系统功能需求,如图4所示,请指出图中的A、B、C、D分别是哪个用例?(8分)
【问题2】
在UML中,重复读(Multiplicity)定义了某个类的一个实例可以与另一个类的多少个实例相关联。通常把它写成一个表示取值范围的表达式或者一个具体的值。例如图7-21中的类InternetClient和CustomerList,InternetClient端的“0..*”表示一个CustomerList的实例可以与0个或者多个InternetClient的实例相关联;CustomerList端的“1”表示一个InternetClient的实例只能与一个CustomerList的实例相关。
请指出图5中(1)到(4)出的重复度分别为多少?(8分)
【问题3】
类通常不会单独存在,因此当对系统建模时,不仅要识别出类,还必须对类之间的相互关系建模。在面向对象建模中,提供了4种关系:依赖(dependency)、概括(generalization)、关联(association)和聚集(aggregation)。请说明关联和聚集之间的主要区别。(4分)
2.根据书本的分析和设计思想或者UP的思想,简单描述一下对一个项目使用面向对象方法进行分析与设计的步骤和具体过程。(10分)