一.选择
1. 不属于面向对象三大特性的是______________
A.封闭 B.继承 C.多态 D.重载
2. 对象的可见行为是由__________来模型化。
A. 属性 B. 职责 C. 操作 D. 方法
3. 多重继承在概念上是比较直接,也是真实世界的体现;然而在实际使用时却要非常谨慎 ,这主要是因为多重继承存在很多潜在问题,具体表现为(多选):___________。
A. 由于继承多个父类,子类经常存在冲突 B. 多重继承可能增加了系统的复杂程度 C. 有些编程语言不支持多重继承的实现 D. UML语言不支持多重继承的建模
4. 关于分析和设计区别,下列哪个说法是错误的:____________。 A. 分析侧重于问题域,设计侧重于解域 B. 分析解决做什么的问题,设计则解决怎么做的问题 C. 分析模型主要侧重功能需求,而设计模型则要充分考虑各种非功能需求 D. 一般情况下,分析模型不考虑系统结构,而设计模型则对系统结构进行全面设计
5. 关于面向对象方法论的优点,下列不正确的叙述是 __________。 A. 与人类习惯的思维方法比较一致 B. 可重用性好 C. 以数据操作为中心 D.可维护性好
解答: 1. D 2. C
3. ABC 4. D 5. C
二.填空
1. 对象之间通过_____________和_____________交互。
2. 继承的三种实现方式:________________、____________________和可视继承。
3. 面向对象三大特性:封装、____________________和________________。
4. 对象具有______________、______________、抽象性和层次性。
5. 多态的二种实现方式为_____________和_____________。
6. 对于现实世界建模,软件分析员通常采用_______________方法论或________________方 法论。
解答:
1. 消息、事件
2. 实现继承、接口继承
3. 继承、多态
4. 独立性、原子性
5. 覆盖、重载
6. 面向过程方法论、面向对象方法论
三.名词解释 1. 对象
2. 面向过程方法论
3. 面向对象方法论
4. 多态
5. 封装
解答:
1. 有形的、可以感知的实体
2. 以数据为中心,,以自顶向下方法将复杂数据加工处理逐步分解为简单、独立模块的开 发方法。
3. 以对象为中心,以类和继承为构造机制,来认识、理解、刻画客观世界和设计、构建相 应的软件系统的方法
4. 相同的行为表现出不同的实现过程
5. 每个对象都包括自己进行操作所需要的所有信息,而不依赖于其他对象来完成自己的操 作
四.简答题
1. 简述面向过程方法论的优缺点。
2. 简述面向对象方法论与面向过程方法论的各自特点。
3. 继承的特点是什么,继承有哪几种表现方式?
4. 简述单继承和多继承的异同点。
5. 什么是多态,多态有几种表现形式,面向对象语言通过什么方式实现多态?
解答:
1. 优点:把现实世界描绘为数据在信息系统中的流动,在数据流动过程中数据发生转化。 通过自顶向下的程序设计将复杂的程序分解为程序模块的层次图。概括为自顶向下、逐步求 精、模块化设计、结构化编码的基本特点。 缺点:当构成一个系统的因素过多,把所有可能的因素都考虑到,所有因素可能的因果 关系都分析清楚,把这些过程模拟出来实在太困难了。对于复杂度较低、构成系统的各个部 分之间有着密不可分的因果关系,面向过程方法论很管用。对于复杂的系统,任何小的变动 ,都可能会引起蝴蝶效应
2. 面向过程方法论把现实世界描绘为数据在信息系统中的流动,在数据流动过程中数据发 生转化。通过自顶向下的程序设计将复杂的程序分解为程序模块的层次图。概括为自顶向下 、逐步求精、模块化设计、结构化编码的基本特点。 面向过程方法论特点:(1)世界由紧密联系的数据和过程组成。(2)分析设计就是过程分 析。(3)数据与过程分离。 面向对象方法论将世界看成一个个相互独立的对象,相互之间并无因果关系,它们平时 没有任何联系。只有在某个外部力量的驱动下,对象之间才会依据某种规律相互传递信息。 这些交互构成了世界的一个“过程”。在没有外力的情况下,对象保持“静止”状态。面向 对象方法论特点:(1)把世界看作相互独立的小对象。这些对象根据某种规则组织起来,完成
一个特定的功能。(2)分析设计就是对象获取,过程由特定规则组织起来的一组对象表现出来
。(3)数据与过程不分离.
3. 特点
--子类拥有父类非private的属性和功能;
--子类具有自己的属性和功能,即子类可以扩展父类没有的属性和功能; --子类可以以自己的方式重写父类的功能。 表现方式
--实现继承:使用基类的属性和方法而无需额外编码的能力;
--接口继承:仅使用属性和方法的名称、但是子类必须提供实现的能力; --可视继承:子窗体(类)使用基窗体(类)的外观和实现代码的能力。
4. 单继承 --目前的主流继承方式,比如java,C#; --继承结构清晰,为树状结构; --类可以继承一个父类,但可以继承多个接口 --从完全封装(对象必须是属性+行为)到半封装(承认了行为的独立性,契约式) 多继承 --最早出现,目前多数语言已不支持; --由于继承多个父类,子类经常存在命名冲突 --二义性:两个父类中有同名方法的时候,你不得不在子类的调用中指明此方法出自那 个父类 --多继承的滥用增加了系统复杂性,导致无法维护
5. 多态:相同的行为表现出不同的实现过程 多态的表现形式 --子类以父类的身份出现; --子类在运行时以自己的方式实现; --子类以父类的身份出现时,子类特有的属性和方法不可以使用。 实现方式: 覆盖 --子类重新定义父类的函数的做法 --子类可以选择使用override将父类的实现替换为自己的实现 重载 --指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数 类型不同,或许两者都不同)
五.绘图题 解答: 六.应用题 解答:
第二章 UML概述
一.选择
1. 下面哪个不是UML中的静态视图_____________。 A.用例图 B.活动图 C.对象图 D.类图
2. UML的全称是__________。 A.Unify Modeling Language B.Unified Modeling Language C.Unified Modem Language D.Unified Making Language
3. 在进行____________相关领域的应用开发时,不推荐使用UML建模。 A、数值计算 B、工业系统 C、信息系统 D、软件系统
4. 以下关于模型的说法,错误的是____________。 节 。
A、模型是对现实的简化,虽然模型对现实进行了简化,但不能改变或歪曲任何重要细
B、对一个现实问题 ,可以从不同的角度和方法论进行建模。 C、建模的目的就是将现实描述清楚。
D、对一个复杂的或是重要的系统,有时需要用多种模型对系统分别进行研究和描述。
5. 以下____________不能当做模型。
A、地球仪 B、交通地图 C、电路设计图 D、灭火器
6. ___________是指利用工具从已有的代码中生成系统模型的某些图形。 A、正向工程 B、逆向工程 C、导入工程 D、导出工程 解答: 1. B 2. B 3. A 4. C 5. D 6. B
二.填空
1. ___________图描述类的所有对象可能具有的状态,以及引起状态变化的事件。
2. ___________图描述某个操作执行时的活动状况
3. __________图反应代码的物理结构,可为源代码、二进制文件或可执行文件组件
4. __________图用来显示系统中软件和硬件的物理架构,通常在图中以结点的形式显示实 际的计算机和设备,以及各个结点之间的关系。
5. UML是____________软件建模方法。
解答: 1. 状态 2. 活动 3. 组件
4. 部署
5. 面向对象
三.名词解释 1. 建模
2. UML
3. 模型
4. 场景
5. UML
解答:
1. 对客观事件建立一种抽象的方法用以表征事物并获得对事物本身的理解。同时把这种理 解概念化,用逻辑组织起来,以表达所观察的对象的的内部结构和工作原理。
2. 以面向对象方法论为指导,将现实世界映射成软体世界的一种图形化描述语言
3. 模型是多个不同的抽象角度对问题域的描述
4. 场景描述了为了一个目标,由静态的事物加在特定的条件下按特定的规则执行了特定的 动作。
5. 将现实世界映射成软体世界的一种图形化描述语言
四.简答题
1. 简述蓝图与草图的区别,并简单描述其适用的场景
2. 说明UML适用的建模领域,以及作用和主要参与人员。
3. 如果让你为一个公司开发一个管理系统,请简述面向对象方法论和面向过程方法论的调 研方法?
4. 简述OOA与OOD的异同
5. 简述对象具有哪些特性。
解答:
1. 蓝图一般是指采用CASE工具绘制的、正式的、规范的UML模型 草图则通常是指手工绘制的、规范度较低的在纸张的UML模型 大胆地绘制草图,尽可能基于草图进行讨论。对于局部的、重要性不高的、共享范围较 小的UML模型,直接将草图扫描到电脑存档即可;对于全局的、重要性高的、高度共享的,在
草图的基础上用CASE工具绘制成为正式的蓝图,并将其纳入统一的模型管理中
2. • 业务建模:以领域专家为主,需求分析人员是主力,系统分析员、架构师可参与 • 需求模型:以需求分析人员为主,系统分析员是主力,领域专家提供指导,架构师和 资深开发人员参与 • 设计模型:高层设计模型以架构师为主,系统分析员从需求方面提供支持,资深开发 人员从技术实现方面提供支持。详细设计模型则以资深开发人员为主,架构师提供指导。 • 实现模型:以资深开发人员(设计人员)为主,架构师提供总体指导。 • 数据库模型:以数据库开发人员为主,架构师提供指导,资深开发人员(设计人员) 予以配合。
3. 面向过程:先问清多少业务流程,画出业务流程图,找出业务流程中每一步骤的参与部 门或岗位,弄清楚参与者所做的事情和填写表单的结果,并关心用户是如何把这份表单传给 下一个环节的。面向对象:先问清有多少部门,多少岗位,再找到每一个岗位的业务代表, 问他们类似的问题:你平时做什么?每件事是谁交办的?做完了你需要通知或传达给谁?做 这件事你需要填写些什么表格?
4. OOA偏重于理解问题,描述软件要做什么,而OOD偏重于理解解决方案,描述软件要如何 做 OOA只考虑理想的设计,不关心技术与实现底层的细节,而OOD需要得到更具体详细更接
近于真? 实的代码的设计方案 在设计结果的描述上,OOA偏重于描述对象的行为,OOD偏重于描述对象的属性与方
OOA只关注功能性需求,OOD还需要关注非功能性需求 OOD是对OOA的细化 OOD的结果直接用于编码
与OOA的输出一样,只是更加详细完善
5. 一切有名字的东西都是对象;对象都是独立的,对象与对象之间是天然独立的,只有在 某个特定的场景下,它们的某个特定的实例才相互联系在一起。;对象是原子的,与其他对 象交互时就是一个整体;对象是可抽象的;对象是有层次的。
五.绘图题 解答: 六.应用题 解答:
第三章 用例图
一.选择
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. 对象模型 E. 前置条件
7. 阅读图例,判断下列哪个说法是错误的。____________.
A.读者可以使用系统的还书用例 B.每次执行还书用例都要执行图书查询用例 C.每次执行还书用例都要执行交纳罚金用例 D.执行还书用例有可能既执行图书查询用例,又执行交纳罚金用例
8. 以下说法错误的是____________ A、用例既可以描述系统做什么,也可以描述系统是如何被实现的。 B、应该从参与者如何使用系统的角度出发定义用例,而不是从系统自身的角度。 C、基本流描述的是该用例最正常的一种场景,在基本流中系统执行一系列活动步骤来响
应参与者提出的服务请求。 D、备选流负责描述用例执行过程中异常的或偶尔发生的一些情况。
9. 下图表示的关系是_________________
A、扩展 B、包含 C、泛化 D、依赖
10. 在一个“订单输入子系统”中,创建新订单和更新订单都需要检查用户帐号是否正确。 那么,用例“创建新订单”、“更新订单”与用例“检查用户帐号”之间是___________关系 。 A.包含 B.扩展 C.分类 D.聚集
解答:
1. C 2. C 3. C 4. A 5. D
6. ABCE 7. C 8. D 9. C
10. A
二.填空
1. UML中用以建模使用者之需求及系统之功能之图形为_________________。
2. 由参与者、用例、以及它们之间关系构成的用于描述系统功能的动态视图称之为_______ ___。
3. 用例驱动视图由_________________、__________________、部署视图、实施视图组成。
4. 用例图中的元素分别有_________________、用例、_________________、用例之间的关 系。
5. 用例之间的关系有四种,分别为关联关系、泛化关系、________________、___________ ____。
解答: 1. 用例图
2. 用例图
3. 逻辑视图、进程视图
4. 参与者、边界框
5. 包含关系,扩展关系
三.名词解释 1. 用例
2. 用例驱动
3. 参与者
4. 业务用例 5. 角色
解答:
1. 描绘一个系统外在可见的需求情况,是代表系统中各个项目相关人员之间就系统的行为 所达成的契约。
2. 以用例为抽象角度来观察现实世界,为产生的用例描述出可能的特定场景,并找到实现 这些场景的事物、规则和行为。
3. 系统之外与系统交互的某人或物。
4. 对用户的当前业务进行建模,以确定客户和合作伙伴当前是如何开展业务
5. 从众多参与者的职责中抽象相同的部分,表了系统中的一类职责
四.简答题
1. 简述参与者与角色、业务工人之间的区别。
2. 简述用例之间包含关系与扩展关系的区别。
3. 简述业务用例与系统用例区别。
4. 简述用例驱动开发分为几个阶段,每个阶段的主要任务是什么。
5. 简述面向对象三大特性。
解答:
1. 角色代表了系统中的一类职责,是一个抽象的概念,从众多参与者的职责中抽象相同的 部分,将其命名而形成一个角色 系统为参与者服务,业务工人负责完成参与者的业务目标,不需要为之建立业务模型, 他们只是在主角的业务模型中出现,缺少了他们,业务模型是不完整的
2. 扩展关系的明显特征是,子用例并不总是发生的,或者说子用例的发生是有条件的,只 有在特定条件下才能发生子用例。如果去掉子用例,我们照样可以得到一个完整的结果
包括关系的明显特征是子用例必然发生,没有子用例,基本用例是不完整的。
3. 范围不同 业务用例涉及的范围更大,可能有各种人、部门、各种系统,甚至包含手工操作、讨
论等 。 系统用例只涉及我们自己系统与操作人员的交互,对应于业务用例中某些活动步骤, 不包含其他系统及手工操作 用途不同 业务用例建模是为了明确业务组织是如何运作的 。 系统用例是明确各种角色面对计算机系统时,双方各自要做的事和交互反馈, 执行者不同 业务用例的执行者为外部客户或组织,各种领导或操作人员为内部业务工人 系统用例的执行者为操作人员所代表的岗位角色 建模必要性不同 业务用例仅当业务活动复杂、涉及人员多、需要长期深入某个行业时才需要业务建模 系统用例的无论什么时候,都必须建模,以对计算机系统进行面向对象分析
4. 从现实世界到业务模型 分析现实世界的用户的业务流程,通过用例的方式表达 从业务模型到系统分析模型(分析类) 根据系统的用例,获取界面类,控制类,实体类 从系统分析模型到设计模型 根据界面类、控制类、实体类设计系统的具体类
5. 封装:对象在其操作中隐藏属性及操作的细节,良好的封装可以降低耦合度。 继承:描述对象之间存在内在的静态关系,并最终以层次结构描述了整个世界 多态:相同的行为表现出不同的实现过程
五.绘图题
1. 电话拨号系统要求可以拨打市话和长话。请绘制用例图。
2. 电话拨号系统的“打电话”用例,只能进行两方通话,如果有一个用户开通了电话会议 业务,则可以进行三方通话。请绘制用例图。
3. 电话缴费可以通过营业厅缴费、银行缴费和预存话费方式。
4. 教师在日常管理中登录系统,如果忘了自己的密码,则可以找回。可以通过系统首先查 询成绩,然后可以修改和删除学生的考试成绩。当考试结束后,教师有权将学生成绩录入系 统。请绘制用例图。
5. 银行的金融系统存在四个用例:登录、存钱、取钱、转帐,这三个用例使用前必须登录 ,请绘制相应的用例图。
6. 有一个购物系统,会员退货和取消定购之前必须先查询到相应的定单,如果取消定购, 则必须通过另一个“会计系统”将金额转给会员。绘制相应的用例图。
7. 客户可以通过电话或者Internet订购,订单登记员也直接可以通过后台进行订购。请绘 制相应用例图。
8. 自动售货机会按用户的要求进行自动售货,供货员在售货机验证身份后会巡查向其内供 货,取款员在售货机验证身份后会定时取款。请绘制相应用例图。
9. 客户在加油站购买汽油,一般情况下用现金买,少部分人用外部信用卡和内部信用卡购 买,如果是内部信息卡购买,则可以免费洗车。请绘制用例图。
10. 用户使用图书管理系统可以查询书籍、借书和还书,如果还书时书超期了,用户必须到 指定地点交罚款。请绘制用例图。 解答:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
六.应用题
1. 一个网上购物系统,参与者有买家、卖家、系统管理员等。首先构造最高层次粒度的用 例,如下:
请问该用例犯了什么错误,请说明原因,并给出正确的用例图
2. 学生管理系统中有一个模块是报到登记,具体流程是:在新生入校报到时,进行新生信 息登记,记录学生的报到资料、个人基本情况的输入、查询、修改等。 1. 写出在上述需求描述中出现的Actor 2. 根据上述描述绘制其用例图
3. 为了满足物业中介的需求,主要实现客户资料的信息管理、客户委托(出租、出售、租赁 、购买)信息管理、业务线索生成与管理、房源状态自动更新、权限管理、到期用户管理、房
源组合查询等功能。通过用户需求的交流,完成了最初的用例图开发,部分如下图所示,请 指出用例图的错误,并说明应该如何修改。
4. 现有一个大选投票系统,需求如下 选民可以登录WEB系统投票,也可以通过手机投票。票务人员在投票结束后通过系统对选
票进行统计。选民和票务人员的身份通过国家的户政系统验证。 请绘制用例图,并进行简单描述。
5. 某人根据个人图书管理需求描述,初步画出了用例图,请指出其中的错误,并给出正确 的用例图。
6. 根据需求,找出参与者,并说明为什么?
(1) 信用卡管理系统每个月底向每个用户发一 个电子帐单
(2)小王去银行开户,向大厅经理询问了办理手续,填写了表单,交给柜台职员,拿到了
银行存折。 (3)对于ATM柜员机系统,每次储户取钱,ATM机不记录储户的帐户,必须向银行后台系统
发出查询和更新命令。
7. 根据需求,找出参与者,并说明为什么? (1)对于图书馆门禁系统,进出人员必须将图书卡放在读写器上识别,识别无误后方可开 门。
(2)机票购买者呼叫中心的自动语音预定机票,假定呼叫中心不是机票预定系统的一部分 (3)机票购买者呼叫中心的自动语音预定机票,假定呼叫中心是机票预定系统的一部分
8. 分析下图存在的错误,说明原因并绘制改正后的用例图 需求如下:
客户通过Internet预订座位,如果有空闲,则登录自己的预订信息,如果没有空闲的座 位或满意的座位,则不进行任何操作。客户在预订的时间到达后,由总台服务员检查相关信 息,并安排入坐。当客户要离开棋牌馆时,总台服务员询问用户以何处方式结帐,系统支持 两种方式:现金结账和银行卡结账,服务员收到钱后,给客户发票,客户离开。
9. 有人根据用户需求,分析出有四个用例:管理项目、添加项目、删除项目和更新项目。 但是无法表示用例之间的关系,请给出正确的用例图和说明。
10. 阅读代码,指出代码错误的原因及改正方法 public class Father { public Collection doSomething( Map map){
System.out.println(\"父类被执行...\"); return map.values(); } }
public class Son extends Father {
public Collection doSomething(HashMap map){ System.out.println(\"子类被执行...\"); return map.values(); } } public class Client { public static void invoker(){ Father f = new Father(); HashMap map = new HashMap(); f.doSomething(map); } public static void main(String[] args) { invoker(); } }
运行结果:父类被执行... 但是子类替换父类时,代码出错 public class Client { public static void invoker(){ Son f = new Son(); HashMap map = new HashMap(); f.doSomething(map); } public static void main(String[] args) { invoker(); } } 运行结果为:子类被执行... 错误!!
解答:
1. 修改定义是管理网站用例的一部分,是这由于用例的粒度不一造成的,建模者心中没有
清楚的边界,就会出现用例的粒度不一,从而导致信息将不同层次的信息在同一层次表示, 出现结构性混乱。正确用例图如下
2. 参与者:管理员
3. 主要错误 用例分解太细,粒度不在一个层次上。 “打开房源信息页面”、“录入房源信息”、“确认提交信息”都只是一个操作步骤, 不适合作为用例。 修改方法 将“打开房源信息页面”、“录入房源信息”、“确认提交信息”合并成“新增房源信 息”
4.
系统存在三个参与者:投票人,票务人员和户政系统
WEB投票和手机投票是对投票用例的泛化。投票和统计选票都包含了验证身份
5. 用例分解太细,粒度不在一个层次上。 “新增书籍”、“查询书籍”、“修改书籍”与“管理图书”不在一个层次上 “登记外借”、“查询外借”与“管理外借”不在一个层次上
6. 定时器相对于信用卡管理系统,位于系统之外,主动发出了动作,向系统提供信息 系统是为小王这类储户服务的,小王主动发出了动作,才使得系统进行了响应大厅经理 和柜台职员是系统的一部分 储户处于系统之外,主动发出了动作,系统为储户服务;键盘位于系统之内,是系统与 用户交互的接口
7. 图书卡虽然位于系统之外,但是不主动发出动作,是进出人员与系统交互的接口。读卡
器位于系统之内,是系统与用户交互的接口 呼叫中心是参与者:主动发出了动作
机票购买者:主动发出了动作,系统为机票购买者服务,呼叫中心只是一个业务工人
8. 去掉“处理选修队列”用例,因为需求没有要求。 增加用例“取消预订”用例,该需求为隐含需求
9. 建模者心中没有清楚的边界,就会出现用例的粒度不一,正确的图为
10. 错误原因: 子类在没有覆写父类的方法的前提下,子类方法被执行了,引起业务逻辑混乱 修改方法: public class Father { public Collection doSomething( HashMap map){ System.out.println(\"父类被执行...\"); return map.values(); } } public class Son extends Father { public Collection doSomething(Map map){ System.out.println(\"子类被执行...\"); return map.values(); } }
第四章 类图
一.选择
1. 在UML中,_________图显示了一组类、接口、协作以及它们之间的关系。 A、状态图 B、类图
C、用例图 D、部署图
2. 关于下图,说法错误的是_________
A、Reader是类名 B、borrowBook是类的方法 C、name是类的属性 D、name是公有的
3. 描述对象特性的要素是_____________。 A.状态 B.行为 C.标识 D.属性
4. 已知类A需要类B提供的服务;下列所描述的四种情况中,哪种情况不会把类A和类B之间
的关系定义成依赖关系:_________________ A. 类A中存在两个操作都需要访问类B的同一个对象 B. 类A的某个操作内部创建了类B的对象,而其它操作均与类B无关 C. 类A的某个操作其参数是类B的对象,而其它操作均与类B无关 D. 类B是一个全局变量
5. 下图中的空心箭头连线表示__________关系
A、泛化 B、包含 C、扩展 D、实现
6. 关于泛化关系和实现关系的区别,下列论述错误的是:____________ A. 实现关系容易支持多态性,而泛化关系则很难支持多态性
B. 泛化关系是类与类之间的关系,而实现关系则是设计元素与接口之间的关系 C. 泛化关系被用于重用实施,而实现关系只能重用行为的规约
D. 泛化关系中父类可以提供缺省实现,而实现关系中接口不提供任何实现
7. 下面关于抽象类说法正确的是____________ A.抽象类不能实例化 B.抽象类只能做基类 C.抽象类可以实例化 D.抽象类可以做子类
8. 下面哪个聚合关系的正确的___________。
9. 下图中,表示“实现”这种关系的是_________
10. 已知某接口A,存在类B实现了该接口所定义的所有操作;对于这两个类之间存在的关系
,下列选项中哪些是正确的(为了简化,图中省略了相关的属性和操作)(多选):_______
__.
11. 关于下面的类图中所表示的关联关系,下列四个选项中说法错误的是:___________。
A. 一个学生可以选1到多门课程 B. 一个老师可以教0到多门课程 C. 一门课程只能由一位老师上课 D. 一门课程可以被0到多个学生选课
解答: 1. B 2. D 3. D 4. A 5. A 6. A 7. A 8. D 9. C
10. BD
11. D
二.填空
1. 类的构造型的作用______________________________________________。
2. Rational Rose的构造型有_________种图形表示。
3. UML中属性的可见性有_________种。
4. 属性的多属性“0…*”表示的含义为__________________________。
5. 属性的多属性“n…m”表示的含义为__________________________。
6. 类与类之间的关系有泛化、关联、聚合、____________、____________、____________ 。
7. 关联按方向分为___________关联和____________关联。
8. 在学校中,一个学生可以选修多门课程,一门课程可以由多个学生选修,那么学生和课 程之间是__________关系。
9. ________约束使得类之间关联的多个对象只能有一个被实例化。
10. 表示类之间的关系时,两个类之间存在多对多关系,有些属性不容易归到某一个类中, 则可以通过_____________表示。
11. 关联按连接的类的数量分类可分为__________________、二元关联和_____________。
12. 类A的一个操作调用类B的一个操作,且这两个类之间不存在其它关系,那么类A和类B之
间是________关系。
13. 面向对象设计的4个主要原则是开闭原则、Liskov替换原则、________________和______ ____________。
14. 开闭原则的本质_____________________________________________________________ _。 15. 接口分离原则是____________________________________________________________ 。
16. 边界类的种类分为______________、________________和设备接口类。
是
指
17. 控制类可分为_____________________和 _______________________。
解答:
1. 用来注明类的所属类型 2. 3 3. 4
4. 任何数目的对象
5. 最少为 n 个对象, 最多为 m 个对象
6. 组合、实现、依赖
7. 单向、双向
8. N:N 或 多对多 或 *:*
9. XOR
10. 关联类
11. 自反关联, N元关联
12. 依赖
13. 依赖倒置原则、接口分离原则
14. 功能允许扩展,代码不能修改
15. 使用多个专门的接口比使用单一的总接口要好
16. 用户界面类,系统接口类
17. 界面控制逻辑类,业务逻辑类
三.名词解释 1. 泛化
2. 抽象类
3. 接口污染
4. 关联关系
5. 限定关联
6. 依赖关系
7. 常量接口
8. 标识接口
9. 分析类
10. 边界类
11. 控制类
12. 实体类
13. 类
14. 接口
15. 标识接口
解答:
1. 也称之为继承,描述了超类与子类之间的关系
2. 一种不能被直接实例化的类
3. 为接口添加了不必要的职责,程序员被迫实现并维护不必要的方法。
4. 是一种结构关系,它指明一个事物的对象与另一个事物的对象间的联系
5. 带有限定符的关联
6. 一个事物(独立事物)发生变化,会影响到另一个事物(依赖事物)的语义
7. 表示静态数据的接口类
8. 没有任何方法和属性的接口
9. 将系统模型转换成概念模型,适合软件系统理解和实现的类
10. 一种用于对系统外部环境与其内部运作之间的交互进行建模的类。这种交互包括转换事 件,并记录系统表示方式(例如接口)中的变更。
11. 控制类用于对一个或几个用例所特有的控制行为进行建模。
12. 实体类是用于对必须存储的信息和相关行为建模的类
13. 一组具有相同属性和行为对象的抽象
14. 描述了类或组件对外提供的抽象操作
15. 没有任何方法和属性的接口
四.简答题
1. 简述聚合与组合的区别
2. 简述关联与依赖的共同点与异同点
3. 简述开闭原则的原理、实现方法
4. 简述依赖倒置原则的原理
5. 简述分析类的作用
解答:
1. 聚合也称为“has-a”关系,组合也称为“contains-a”关系 聚合表示较弱的整体/部分关系,组合表示较强的整体/部分关系 聚合关系中,代表部分事物的对象可以属于多个聚合对象,具有共享性;而组合关系中 ,代表部分事物的对象不可以属于多个聚合对象,不具有共享性 聚合关系中,代表整体事物的对象与代表部分事物的对象,有各自独立的生存期,而组 合关系中,有完全一致的生存期
2. 泛化、关联和实现都可以算作是某种依赖关系,只不过它们有比较强的语义和重要的作 用,所以划分出来。 依赖是使用关系,类与类之间表现为临时性 依赖是单向的 代码表现为被依赖类在类中的一个方法中调用 关联是结构化关系,即拥有关系,类与类关系表现为长期性 关联可以是双向的 代码表现为被关联类是类中的一个属性
3. 软件实体在扩展性方面应该是开放的,而在更改性方面应该是封闭的 实现开闭原则的关键是 (1)找所有的具体类必须提供的方法的特征作为系统设计的抽象层
(2)找到类中可能变化的部分,将变化的部分封装成对象 实现方法: (1)面向接口编程 (2)封装变化 (3)组合代替继承
4. 依赖关系应该是尽量依赖接口(或抽象类),而不是依赖于具体类 抽象不应该依赖于细节,细节应该依赖于抽象 要针对接口编程,不针对实现编程
5. 分析模型是介于原始需求和实现之间的一种过渡模型 分析模型向上映射了原始需求,计算机的可执行代码可以通过分析模型追溯到原始需求; 分析模型向下为计算机实现规定了一种高层次的抽象,这种抽象是一种指导,也是一种 约束,计算机实现过程非常容易遵循这种指导和约束来完成可执行代码的设计工作。
五.绘图题
1. 根据代码绘制类图 public class A{ public B theB; public A(){ } } public class B{ public B(){ } }
2. 根据代码绘制类图 public class A{ public B theB; public A(){ } } public class B{ public A theA; public B(){ } }
3. 根据代码绘制类图 public abstract class Athlete{ public Athlete(){ }
}
public class Golfer extends Athlete { public Golfer(){ } }
public class Swimmer extends Athlete{ public Swimmer(){ } }
4. 根据代码绘制类图 public class A { public A(){ } public go(){ B b=new B(); b.go(); } public run(C c){ c.run(); } }
5. 一个公司可以雇用任何个雇员,一个雇员只能被一个公司雇用,请绘制类图
6. 一个老师可以开设一到三门课,一门课有一到多名老师讲授,请绘制类图。
7. 一个产品一个年度只有零至一个价格,请绘制类图。
8. 大学的一个学号只能对应0至1个学生。请绘制类图。
9. 一个学生可以选多个老师,一个老师一门课可以带多个学生,请绘制类图。
10. 一个字典中一个语言可以有多个单词,这些单词按次序排列,请绘制类图。
11. 一个项目拥有多个有序的任务,请绘制类图。
12. 帐号可以是个人帐号或公司帐号,请绘制类图。
13. 一个公司拥有多个员工,一个boss员工管理多个工人,请绘制类图。
14. 一名助教可以为一位讲师或一位教授助课,一位讲师只能有一名助教,一位教授可以有5
名助教。请绘制类图。
15. 一个教室可以由多个桌子、多个椅子、1个黑板组成。请绘制类图。
16. 根据代码绘制类图 public Interface A{ public go(); } public class B implement A{ public B(){ } public go(){ } }
17. 某计算中心的计算机分为客户机和服务器两类,管理员负责管理多台计算机,一台客户 机可以供多个用户使用。请绘制类图。
18. 某机械制造厂生产车床、刨床和钻床三种机床和一种起重机。每一种机床和起重机都装 配一台电动机,而电动机分为同步电机和异步电机两类。 请用组合和泛化关系,画出一个类图表示以上各种事物以及它们之间的结构关系。
19. 一个供货商可能向多个购货商供货,一个购货商也可购买多个供货商的商品。交易过程 中需要记录交易的数量、时间。请绘制相应的类图。
20. 一本书含有若干章节,一章节由一些段落和图组成。绘制相应的类图。
21. 酒店预订系统中需求如下:酒店有多个房型,会员可以预订多个房间。绘制相应的类图 。
解答:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16. 17.
18.
19.
20.
21.
六.应用题
1. 根据依赖倒转原则重新设计以下类图,并通过代码进行表示
2. 假设在我们的问题领域中有一个关于Door的抽象概念,该Door具有执行两个动作open和c
lose ,Door还要具有报警的功能。请画出相关类图,并请写类图对应的代码。
3. 根据接口分离原则重新设计以下类图
4. 在CS游戏中,士兵通过不同的枪去杀死敌人,设计类图如下,后来增加了一个玩具枪, 玩具枪也继承了AbstractGun类,发现怎么也杀不死敌人,请说明其中的错误的原因及改正方 法。
5. 以下是一段需求描述,请找出其中的候选类,并画出类图。 小王是一个爱书之人,家里各类书籍已过千册,而平时又时常有朋友外借,因此需要一 个个人图书管理系统。该系统应该能够将书籍的基本信息按计算机类、非计算机类分别建档 ,实现按书名、作者、类别、出版社等关键字的组合查询功能。在使用该系统录入新书籍时 系统会自动按规则生成书号,可以修改信息,但一经创建就不允许删除。该系统还应该能够 对书籍的外借情况进行记录,可对外借情况列表打印。另外,还希望能够对书籍的购买金额 、册数按特定时间周期进行统计。
6. 看图回答问题
(1) 根据UML图,写出此图表示的含义 (2) 根据用例图设计相关分析模型
7. 看图回答问题
类中的行为(方法)是有哪些?
类中的成员方法的访问可见性是什么?
该类是什么类型的类,这种类型的类作用是什么?
8. 下图一个仓库管理系统的类模型局部,其中IncomeOrder是指入库单,OrderItem是指入 库中的每一项,Product是产品信息,请指出模型中的错误,说明原因并改正错误。
9. 在学生成绩管理系统中,一个学生可以选择多门课,一门课可以由多名学生选择,每个 学生选修课程后都有一个成绩。 (1)请用关联类,绘制类图表示以上需求 (2)有人将关联类的代码表示如下,请说明存在哪些不足,如何改正。
10. 图形编辑器一般都具有一些基本图形,如直线、矩形等,用户可以直接使用基本图形画 图,也可以把基本图形组合在一起创建复杂图形 (1)请绘制出相应的类图 (2)请描述类图中每个类的功能及类与类之间的关系
11. 一个研究生在软件学院做助教(teaching assistant),同时还在校园餐厅打工做收银 员(cashier),也就是说,这个研究生有三种角色:学生,助教和收银员,但在同一时刻只 能有一种角色” 根据上面的陈述,以下哪种设计是最合理的,请说明原因。
解答:
1. public class Person implements Driver{ public void driver(MobileMachine a){ } public static void main(String[] args) { Driver driver =new Person(); MobileMachine machine = new Moto(); driver.dirver(machine ); } } public class Moto implements MobileMachine { public void run( ){ …… } }
2. abstract class Door { abstract void open(); abstract void close();
}
interface Alarm { void alarm(); }
class AlarmDoor extends Door implements Alarm { void open() { … } void close() { … } void alarm() { … } }
3. 为接口添加了不必要的职责,程序员被迫实现并维护不必要的方法。根据接口分离原则 ,改进类图如下
4. 玩具枪是枪是现实世界人的划分,由于子类不能够完整地实现父类的业务,违背了Lisko v替换原则:子类必须完全实现父类的方法。改进方法如下图所示
5. 候选类: 书籍 计算机类书籍 非计算机类书籍 借阅记录 借阅记录列表 书籍列表
6. 管理员首先查询图书,再对图书进行新增、修改、删除和删除书目。新增图书时如果没 有对应的书目,则先要新建书目。
7. 类中的行为(方法)是:_newReader(),ModifyReader(),deleteReader() 类中的成员方法的访问可见性是: public 答:该类是控制类。控制类是负责协调其他类的工作,它建立了一个或几个用例的行为 模型。它整理系统的行为并描述一个系统的动态特性,处理主要的任务和控制流。每个用例 通常都有一个控制类、控制用例中的事件顺序。也存在多个用例共享同一个控制类。
8. 一个入库单由多个入库单项OrderItem组成,不可能只有一个产品,应绘制如下
9.
不足: 1.难以找出一个成绩的学生或课程 2..违反了对象的封装原则,与成绩直接相关的数据,像学生和课程,没有放到成绩对象 中。 转化成二元关联
10.
Graphics: 基本图形和组合图形的父类,声明了所有图形共同的操作,如Draw;也声明 了专用于组合图形管理子图形的操作,如Add、Remove Line、Rectangle: 基本图形类 GroupGraphics: 组合图形类,与父类有组合关系,从而可以组合所有图形对象(基本图 形和组合图形)
11. B最合理 根据组合替代原则,将人的角色抽象为类,这样用户便具有的多重角色。
第五章 对象图
一.选择
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. Liskov替换原则为良好的继承定义了一个规范,以下说法不正确的是: ________ A.子类必须完全实现父类的方法 B.有子类出现的地方父类未必就可以出现 C.覆盖或实现父类的方法时输入参数可以被放大 D.覆盖或实现父类的方法时输出结果可以被放大
7. 一个课程注册系统中,定义了类CourseSchedule和类Course,并在类CourseSchedule中 定义了方法add(c:Course)和方法remove(c:Course),则类CourseSchedule和类Course之间的 关系是_________。 A.泛化关系 B.组成关系 C.依赖关系 D.包含关系
8. 以下说法错误的是_________ A、在编译一个类之前需要另一个类的定义,这是类之间的使用依赖关系。 B、一个类的方法调用其它类的操作,这是类之间的调用依赖关系。 C、一个类向另一个类分发事件,这是类之间的发送依赖关系。 D、一个类中创建了另一个类的实例,这是类之间的创建依赖关系。
9. 下列关于接口的关系说法,不正确的是_____________。 A. 接口是一种特殊的类 B. 所有接口都是构造型《interface》的类 C. 一个类可以通过实现接口支持接口所指定的行为 D. 程序运行的时候,其它对象不仅需要依赖于此接口,还需要知道该类关于接口实现
的其它信息。
10. 下面关于抽象方法说法正确的是(多选)____________ A.一个抽象方法只能重写一次 B.抽象方法有方法体 C.抽象方法没有方法体 D.使用static关键字声明抽象方法
解答: 1. B 2. B
3. C 4. B 5. A 6. D 7. C 8. A 9. D
10. C
二.填空
1. 对象的特性包括:____________、_____________和标识。
2. 一个类的行为的改变要求另一个类作相应的改变。则这二个类________(放/不放)在一个 包中。
3. 删除了一个类,另一个类变成多余的,则把这二个类________(放/不放)在一个包中
4. 两具类之间存在大同的消息发送,则这二个类________(放/不放)在一个包中。
5. 包的依赖关系___________(具有/不具有)传递性。
解答:
1. 状态/属性、行为/操作
2. 放
3. 放
4. 放
5. 不具有
三.名词解释 1. 对象
2. 匿名对象
3. 简述类和对象的异同。
4. 简述对象图的作用,什么时候可以使用对象图?
解答:
1. 代表一个单独的、可确认的物体、单元或实体,它可以是具体的也可以是抽象的,在问 题领域里有确切定义的角色。
2. 对象图中对象名不存在的对象元素。
3. 对象是一个存在于时间和空间中的具体实体,而类仅代表一个抽象,抽象出对象的“本 质”。 类是共享一个公用结构和一个公共行为对象集合 类是静态的,对象是动态的;类是一般化,对象是个性化;类是定义,对象是实例;类 是抽象、对象是具体
4. 作用 对象图展现了多个对象的特征及对象之间的交互 对象图代表了系统某时刻的状态。 使用对象图时机 论证类模型的设计:当设计了类模型时,举例说明多个对象在某个时刻的交互状态 分析和说明源代码:由于类图只是展示了程序的静态类结构,因此通过类图看懂代码的 意图是很困难的,通过对象图来分析。
四.简答题
1. 请简述下列属性声明的含义 +size: Area = (100,100) #visibility: Boolean = false -default-size: Rectangle
2. 简述继承的优缺点
3. 简述抽象类与接口的异同点
4. 聚合和关联的区别
解答:
1. 变量size为Area类型,默认值为(100,100),全局可见 变量visibility为Boolean类型,默认值为false,对所有者派生的类型可见 变量default-size为Rectangle类型,不可见
2. 优点: 提高了代码复用性。 少创建类的工作量,每个子类都拥有父类的方法和属性; 子类可以形似父类,但又异于父类。
提高代码的可扩展性。 缺点 降低代码的灵活性,增强了耦合性,设计中的不足很难修改 继承是侵入性的。只要继承,就必须拥有父类的所有属性和方法。 当父类的常量、变量
和方法被修改时,必需要考虑子类的修改,而且在缺乏规范的环境下,这种修改可能带来非 常糟糕的结果——大片的代码需要重构。 层次结构会泄露给客户代码,难以修改
3. 抽象类和接口很相似,都定义了抽象操作而推迟了实现部分 代码层次 --接口不允许实现任何方法;接口的属性只能有静态属性常量;类可以继承多个接口; --抽象类允许实现部分方法;抽象类的属性定义没有任何限制;类只能继承一个父类(抽 象类) 设计层次 --抽象类体现了一种继承关系,父类和派生类之间必须存在“is a”关系,即父类和派 生类在概念本质上应该是相同的。 --接口表现出,实现类实现了interface定义的契约而已,即实现了接口规定的功能,是 一种” like a”关系。
4. 与关联关系一样,聚合关系也是通过属性变量来实现这样关系的。 关联关系和聚合关系来语法上是没办法区分的,从语义上才能更好的区分两者的区别。 关联关系所涉及的两个对象是处在同一个层次上的。聚合关系涉及的两个对象处于不平 等的层次上,一个代表整体,一个代表部分。
五.绘图题 解答: 六.应用题
1. 阅读对象图,描述对象图表达的含义
解答:
1. 有一个公司C,下面有二个部门分别为“sales”和“R&D”, “sales”部门下有一个子 部门“US Sales”,该部门的经理为“Erin”,其联系地址为“1472 Miller St.”
第六章 包图
一.选择
1. 关于包的描述,哪个不正确___________ A.和其他建模元素一样,每个包必须有一个区别于其他包的名字 B.包中可以包含其他元素,比如类、接口、组件、用例等等 C.包的可见性分为:public、protected、private D.导出(export)使的一个包中的元素可以单向访问另一个包中的元素
2. ___________是用于把元素组织成组的通用机制 A、包 B、类 C、接口 D、组件
3. 包内的元素可以被包内的元素、继承的子包元素所访问是指包的______________。 A.公有访问 B. 保护访问 C. 私有访问 D.通用访问
4. 包内的元素可以被包外的元素所访问是指包的______________。 A.公有访问 B. 保护访问 C. 私有访问 D.通用访问
5. 包内的元素只能被属于同一个模型包的内含元素访问是指包的_____________。
A.公有访问 B. 保护访问 C. 私有访问 D.通用访问
6. 客户包依赖于提供者包是指包的________依赖关系。 A. use B. import C. access D. trace
7. 客户包中的元素也能够访问提供者包的所有公共元素是指包的________依赖关系。 A. use B. import C. access D. trace
8. 客户包中的元素能够访问提供包中的所有公共元素,但客户包必须使用路径名,是指包 的_________关系。 A. use B. import C. access D. trace
9. 表示一个包到另一个包的历史发展,是指包的_________关系。 A. use B. import C. access D. trace
10. 包元素可以拥有的元素包括(多选)___________________。 A. 类 B. 构件 C. 用例 D. 包
11. 包的常见构造型包括(多选)____________________。
A. 《subsystem》 B. 《facade》 C. 《framework》 D. 《node》
解答: 1. D 2. A 3. B 4. A 5. C 6. A 7. B 8. C 9. D
10. ABCD
11. ABC
二.填空
1. 包的依赖关系包括_________________、_______________、access和trace。
2. 包的可见性分为_______________、_______________和私有访问。
3. 包与包之间的关系有依赖关系、实现关系、______________和_____________。
4. 包的构造型《____________》是指作为代理的包,它服务于某个其他包的公共内容。
5. 包的构造型《_______________》是指包表示汇在建模系统的独立部分。
6. 包的构造型《________________》是指包仅是某个其他包的视图,主要用来为其它一些 复杂的包提供简略视图。
7. 包的构造型《______________》是指包含模式的包,模型的体系结构。
8. 包的绘制原则重用等价原则、共同闭包原则、_______________和_______________。
解答:
1. use、import
2. 公有访问、保护访问
3. 泛化关系、嵌套关系
4. stub
5. subsystem
6. facade
7. framework
8. 共同重用原则、非循环依赖原则
三.名词解释 1. 包
2. 重用等价原则
3. 共同闭包原则
4. 共同重用原则
5. 非循环依赖原则
解答:
1. 语义上相关的元素的组合
2. 把类放入包中时,应考虑把包作为可重用的单元,有利于开发人员不断升级包,方便包 的各个版本的管理。
3. 指把那些需要同时改变的类放在一个包中。
4. 指不会一起使用的类不要放在一个包中。
5. 指包之间的依赖关系不要形成循环
四.简答题
1. 系统建模中为什么要引入包图?
2. 简述包图的绘制原则。
3. 简述什么是包的构造型,常见的包的构造型有哪些,分别的作用是什么。
4. 包与包之间存在几种关系,分别举例说明。
解答:
1. 对基本构造块进行分类 在面向对象软件开发的视角中,类显然是构建整个系统的基本构造块。但是对于庞大的 应用系统而言,其包含的类将是成百上千,再加上其间“阡陌交纵”的关联关系、多重性等 ,必然是大大超出了人们可以处理的复杂度。这也就是引入了“包”这种分组事物构造块。 高层次把握系统结构 包图是一种维护和描述系统总体结构的模型的重要建模工具,通过对包中各个包以及包 之间关系的描述,展现出系统的模块与模块之间的依赖关系。
2. 重用等价原则 指把类放入包中时,应考虑把包作为可重用的单元,有利于开发人员不断升级包,方便 包的各个版本的管理。 共同闭包原则 共同半包原则是指把那些需要同时改变的类放在一个包中。 共同重用原则 共同重用原则是指不会一起使用的类不要放在一个包中。 非循环依赖原则 非循环依赖原则是指包之间的依赖关系不要形成循环
3. 用以表示包的语义的说明为包的构造型 常见的包的构造型有 《subsystem》表示汇在建模系统的独立部分 《framework》表示设计模式、,模型的体系结构 《stub》作为代理的包,它服务于某个其他包的公共内容
4. 依赖关系:一个包依赖于另一个包的代码
实现关系:一个包实现了另一个包规定的接口
泛化关系:一个包继承了另一个的代码
嵌套关系:包内包含多个子包
五.绘图题 解答: 六.应用题
1. 指出包图存在的错误,并说明该错误如何解决
2. 阅读包图,描述包图的含义
解答:
1. 该图存在非循环依赖原则 解决方法
2. 根据《use》关系,可以发现Client包使用Server包,Server包使用System.Data.SqlCli ent包,结合其元素,不难得知Client负责Order(订单)的输入,并通过Server来管理用户
的登录(LoggingService)和数据库存储(DataBase),而Server包还将通过.NET的SQL Ser ver访问工具包来实现与数据库的实际交互。 接着再看两个《import》,从包的命名和其所属的元素不难发现Rule负责处理一些规则 ,并引用一个具体的窗体(Window),而Client包则通过引用Rule来实现整个窗体和表单的
显示、输入等。并且还将暂存Order(订单)信息。 最后来看包的泛化关系,GUI有两个具体实现,一个是针对C/S的WindowsGUI,一个是实
现B/S的WebGUI。
第七章 交互图
一.选择
1. UML中,对象行为是通过交互来实现的,是对象间为完成某一目的而进行的一系列消息交
换。消息序列可用两种类来表示,分别是_________________。 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. ALT B. Par C. LOOP D. Assert
9. 时序图交互片段中的_____________表示该片段执行多次 A. ALT B. OPT C. LOOP D. Assert
10. 时序图交互片段中的_____________表示两个或多个并发执行的子片断 A. ALT B. Par C. LOOP D. Assert
解答: 1. D 2. B 3. D 4. D
5. AB 6. C 7. D 8. A 9. C
10. B
二.填空
1. 事件可以分为内部事件和外部事件。按下按钮和打印机的中断是____________事件。
2. UML的4种交互图是指顺序图、通信图、______________和_____________。
3. 动态模型用来描述系统的动态行为,分为______________和____________。
4. UML用____________和____________为交互模型建模。
5. UML用_____________和______________为动态模型建模。
6. 时序图的主要元素包括对象、______________、_________________和消息。
7. 时序图中生命线表___________________________________________________ ___。
8. 时序图中激活期表___________________________________________________ ___。
示
的
含
义
的
示的含义的
9. 消息常见类型有____________、____________、异步消息和返回消息。
10. 时序图中的_________消息描述了控制如何从一个对象传递到另一个对象,但不描述任何
通信的细节。
11. 时序图中的_________消息描述了发送者把消息发送后,等待直到接收者返回信息。
12. 时序图中的_________消息描述了消息发送后,发送者继续操作,不等待
13. 通信图的主要元素包括链、迭代标记、_________________和_____________。
14. 通信图通过____________来表示分支判定。
解答: 1. 外部
2. 定时图、交互概述图
3. 状态模型、交互模型
4. 时序图(顺序图)、协作图
5. 交互图、活动图
6. 生命线、激活期
7. 表示对象的生存时间
8. 表示该对象的活动时间
9. 简单消息、同步消息
10. 简单
11. 同步
12. 异步
13. 消息编号、监护条件
14. 监护条件
三.名词解释 1. 交互
2. 交互图
3. 消息
4. 激活期
解答:
1. 在特定语境中,为了实现某一个目标,而在一组对象之间进行交换的一组消息所表示的 行为
2. 描述对象之间的关系以及信息传递的图
3. 用来描述对象之间所进行的通信的描述,该信息带有对将要发生的活动的期望。
4. 表示该对象的活动时间
四.简答题
1. 简述时序图与通信图的区别。
2. 简述UML2.0的四种交互图用途。
3. 简述同步消息、异步消息之间的区别。
4. 包的重用等价原则、共同闭包原则、共同重用原则能不能同时满足?如果不能应该如何 灵活应用。
解答:
1. 时序图是一种强调消息时间顺序的交互图,为读者提供了控制流随着时间推移的清晰的 可视化轨迹 通信图它强调的是参加交互的对象的组织,为读者提供了在协作对象结构组织的语境中 观察控制流的一个清晰的可视化轨迹
2. 时序图:时序图是一种强调消息时间顺序的交互图,为读者提供了控制流随着时间推移
的清晰的可视化轨迹 通信图:强调的是参加交互的对象的组织,为读者提供了在协作对象结构组织的语境中 观察控制流的一个清晰的可视化轨迹 定时图:采用了一种带数字刻度的时间轴来精确地描述消息的顺序 交互概述图:是交互图和活动图的混合物
3. 同步消息 发送者把消息发送后,等待直到接收者返回信息 异步消息 消息发送后,发送者继续操作,不等待
4. 不能。重用等价原则、共同闭包原则、共同重用原则,3个原则事实上不可能同时满足。 共同闭包原则希望包越大越好。共同重用原则希望包越小越好。 一般情况下,开发早期,可以以共同闭包原则为主,当系统稳定后,可以对包做一些重 构,以重用等价原则和共同重用原则为主。
五.绘图题
1. 购买手机流程如下 首先先选择手机品牌,试用多个样机后,决定购买一个适合的。请画出相应的活动图
2. 招聘流程如下 所有人都可以填写求职申请,首先检查申请资料,再进行面试,面试结束后审定聘用资 格,将所有骋用的人统一交给人事处进行人事安排。 请画出相应的活动图 解答: 1.
2.
六.应用题
1. 用户打印文件,计算机向打印机服务器发送打印命令,打印机如果空闲,则直接打印, 否则把打印文件存储在打印队列中。请分析出相关的对象,画出时序图和通信图。
2. 请绘制MVC框架的包图,请描述包图的含义,并指出设计存在的优缺点
解答:
1.
2. 模型(Model) 模型用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法。 “模型”不依赖“视图”和“控制器”,也就是说,模型不关心它会被如何显示或是如 何被操作。但是模型中 、数据的变化一般会通过一种刷新机制被公布。为了实现这种机制, 那些用于监视此模型的视图必须事先在此模型上注册,从而,视图可以了解在数据模型上发 生的改变。 视图(View) 视图层能够实现数据有目的的显示(理论上,这不是必需的)。在视图中一般没有程序 上的逻辑。为了实现视图上的刷新功能,视图需要访问它监视的数据模型(Model),因此应
该事先在被它监视的数据那里注册。 控制层(Controller) 控制层起到不同层面间的组织作用,用于控制应用程序的流程。它处理事件并作出响应 。“事件”包括用户的行为和数据模型上的改变
第八章 活动图
一.选择
1. 下列关于活动图的说法错误的是_____________ A一张活动图从本质上说是一个流程图,显示从活动到活动的控制流 B 活动图用于对业务过程中顺序和并发的工作流程进行建模。 C活动图中的基本要素包括活动节点、分支、分叉和汇合、泳道、对象流。 D活动图是UML中用于对系统的静态建模图
2. UML中,__________把活动图中的活动划分为若干组,并将划分的组指定给对象,这些对
象必须履行该组所包括的活动,它能够明确地表示哪些活动是由哪些对象完成的。 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. 活动图和交互图是UML中对系统动态方面建模的两种主要形式 A、活动图 类图 B、交互图 类图 C、活动图 交互图 D、状态图 用例图
8. 活动图的_________元素代表活动连接输入、输出值的连接点 A、转换 B、引脚 C、起始节点 D、泳道
9. 一个活动图中开始状态能有_____个,结束状态能有________个。 A、1个 多个 B、1个 1个 C、多个 多个 D、多个 1个
10. 事件(event)表示对一个在时间和空间上占据一定位置的有意义的事情的规格说明,下 面哪个不是事件的类型_______________。 A.、信号事件 B、调用事件 C、空间事件 D、时间事件
解答: 1. D 2. D 3. A 4. A 5. A 6. C 7. C 8. B 9. A
10. C
二.填空
1. 用一个实心圆表示活动的___________,用一个圆圈内加一个实心圆来表示活动的______ ____。
2. 当一个活动结束时,控制流就会马上传递给下一个活动节点,在活动图中称之为_______ ____,
3. 作用活动图可以对______________和_______________进行建模。
4. 活动图的节点表示_______________________________________。
5. 活动图通过________________和___________________用来建模并发活动。
6. 一个活动节点可以属于___________个泳道,一个泳道可以拥有_______个活动节点。
7. 活动图中,分支用_________形表示。
8. 活动图__________(能/不能)表示节点中使用的对象。
9. 活动图的信号分为______________、____________________和接收信号。
10. 活动所需求的输入或产生的输出一般使用_____________表示。
解答:
1. 起始节点、终止节点
2. 转换/转移
3. 业务流程、操作过程
4. 一个活动
5. 分叉、汇合
6. 1个,多个
7. 菱形
8. 能
9. 时间信号、发送信号
10. 引脚
三.名词解释 1. 泳道
2. 引脚 3. 转换
解答:
1. 把活动图中的活动划分为若干组,并将划分的组指定给对象,这些对象必须履行该组所 包括的活动,它能够明确地表示哪些活动是由哪些对象完成的。
2. 一个对象节点,代表活动连接输入、输出值的连接点
3. 当一个活动结束时,控制流就会马上传递给下一个活动节点
四.简答题
1. 简述活动图和交互图的差别
2. 简述活动图与程序流程图的差别
3. 简述分叉与分支的区别
解答:
1. 交互图强调的是对象到对象的控制流,而活动图则强调的是从活动到活动的控制流 活动图是一种表述过程基理、业务过程以及工作流的技术。它可以用来对业务过程、工 作流建模,也可以对用例实现甚至是程序实现来建模
2. 传统的程序流程图描述的是处理的过程,主要控制结构有顺序、分支和循环,各个处理 之间有严格的顺序和时间关系 活动图描述的是对象(或模型元素)的活动的顺序关系所遵循的规则,它着重表现的是 系统的行为,而不是系统的处理过程,在活动图中也没有通常的循环控制结构。活动图能够 表现并发情形
3. 分叉表示的是并发活动的开始 分支表示的是条件,在不同的条件下执行不同的流程
五.绘图题
1. 销售合同从签订到履约的过程 签定合同签订后,要进行核对,如果发现错误,则终止履约;如果没有错误,则要核对 货物清单确定是否有货,还要核对付款单确定对方是否已经付款,只有这两项都完成,才可 以发货。如果无货或对方尚未付款,则终止履约。 请绘制活动图。
2. 小张想去吃饭,如果必胜客有空位或最多只等待15分钟,则进必胜客吃饭,否则去肯德 鸡吃饭。请画出相应的活动图。
3. 开工奠基流程如下: 如果资金到位,则准备施工现场。当领导也到场时,开工奠基开始 请画出相应的活动图 解答:
1. 2.
3.
六.应用题
1. 阅读活动图,回答以下问题
(1) 将活动图转换成带泳道的活动图,并做简要描述 (2) 在带泳道的活动上增加以下对象:定单、送货单。
2. 下图为销售货物的活动图,请将该活动图转换成带泳道的活动图
解答:
1.
2.
第九章 状态图
一.选择
1. 关于类的状态建模,下列说法中哪项是正确的:_________。
A. 对于所有的设计类都需要进行状态建模 B. 状态建模描述了一个类的对象的发展历史
C. 对于复杂的类,应该利用多个状态图进行状态建模 D. 某一时刻,一个类的对象可以处于多个不同的状态
2. 下面中_____________状态图表示结束状态。
3. 对反应型对象建模一般使用____________图。 A、状态图 B、顺序图 C、活动图 D、类图
4. 下列对状态图描述不正确的是_________。 A. 状态图通过建立类对象的生命周期模型来描述对象随时间变化的动态行为 B. 状态图适用于描述状态和运作的顺序,不仅可以展现一个对象拥有的状态,还可说明
事件如何随着时间的推移来影响这些状态。 C. 状态图的主要目的是描述对象创建和撤消过程中资源的不同状态,有利于开发人员提
高开发效率 D. 状态图描述了一个实体基于事件反应的动态行为,显示了该实体如何根据当前所处状
态对不同的事件做出反应
解答: 1. B 2. C 3. A 4. C
二.填空
1. 对于任何一个对象,如果此对象的动态行为具有事件驱动的特性,就适合于用________ 来建模
2. _________触发状态的转换
3. 状态图的转换分为:外部转换、__________、退出转换和_____________。
4. 状态图的转换的5要素:源状态、___________、触发事件、_____________、动作。
5. 状态图的_________对事件做出响应,引起状态变化或自身转换,同时引发一个特定动作 ,如果离开或进入状态将引发进入转换、离开转换
6. 状态图____________对事件做出响应,并执行一个特定的活动,但并不引起状态变化或 进入转换、离开转换
解答: 1. 状态机 2. 事件
3. 进入转换、内部转换
4. 目标状态、监护条件
5. 外部转换
6. 内部转换
三.名词解释 1. 事件驱动
2. 状态
3. 状态机
解答:
1. 根据当前事件,以及对以前事件的响应的结果决定对当前事件的响应的软件对象的动态行 为
2. 指在对象的生命周期中的某个条件或者状况,在此期间对象将满足某些条件、执行某些 活动活活等待某些事件。
3. 用于描述一个对象在其生存期间的动态行为,表现为对象响应事件所经历的状态序列以 及伴随的动作。
四.简答题
1. 状态图与交互图的区别
2. 状态图与活动图的区别
3. 什么是历史状态,为什么需要历史状态,举例说明。
4. 状态转换分为几种类型,各代表什么含义。
解答:
1. 交互图不显示对象所有可能的动态行为,只显示特定交互(一个具体用例)中对象的行为 。 状态图可以显示对象所有的动态行为
2. 状态图只建模一个对象的行为,活动图可以建模多个对象的活动 活动图允许建模特定活动中的对象的某个状态
3. 历史状态是一种伪状态。可以存储腿出组合状态时所处的子状态,则返回组合状态时可 以直接回到相应的子状态。 用户有时需要保存一种历史操作的记录,当返回时并不从初始状态开始执行,而是从历 史中断处执行,这时就需要历史状态。比如用户听评书,用户因为某事退出播放,而再次播 放评书时,用户的默认希望从历史中断处继续播放。
4. 进入和退出转换:当进入一个状态时,执行某个动作; 内部转换:用来处理一些不离开该状态的事件 外部转换 :对外部事件做出响应,引起状态变化,并执行一系列运作
五.绘图题
1. IC电话卡的状态有空闲、维护、工作。其中,工作状态包括验卡、拨号、通话、挂断。 请绘制出相应的状态图
2. 有一个CD机有三个按钮:启动、关闭、暂停、播放。请绘制相应的状态图,注意:播放 时,如果按播放键,CD机继续播放;如果CD机重启,则进入上次运行时的状态。
3. 用户购买商品,分为三个状态:浏览目录、显示购物车和结账。浏览目录又可以分为: 显示详细信息和显示索引信息两个情况。当用户从结账和显示购物车状态跳转回浏览目录时 ,则进入离开时的历史状态。请绘制状态图。
解答:
1.
2.
3.
六.应用题
1. 请参考下图,回答问题:
(1) 该图是什么图,其中的矩形框表示什么? (2) 请描述该图表达的含义
2. 根据下表完成以下问题
(1) 绘制简单的状态图
(2) 将简单的状态图转换成具有复合状态图
解答:
1. 状态图,表示就绪,运行,阻塞状态; 线程运行的基本流程如下: 当线程准备运行时,进入就绪状态,如果获得cpu时间片,就转入运行状态,运行正
常结束,进入结束状态,如果在运行过程中,cpu时间片用完后还没有完成任务,就进入就绪
状态,等待再次得到cpu时间片,如果线程在运行过程中,不满足所须资源,就进入阻塞状态
,处于阻塞状态的线程得到相关资源后,进入就绪状态,依次循环。
2.
第十章 构件图
一.选择
1. _________是系统中遵从一组接口且提供实现的一个物理部件,通常指开发和运行时类的 物理实现 A、部署图 B、类 C、接口 D、构件
2. 下列不属性构件的特征的是______________。 A、可替换 B、通过接口实现或提供服务 C、可以被一个或多个实现 D、只能是代码的形式
3. 对于比如源代码文件及数据文件,并不是直接地参与可执行系统,我们称这类构件为___ ______。 A、实施构件 B、工作产品构件 C、执行构件 D、质量构件
4. __________是可复用的,提供明确接口完成特定功能的程序代码块。 A、模块 B、函数 C、用例 D、构件
解答: 1. D
2. D 3. B 4. D
二.填空
1. 构件的类型可分为_______________、工作产品构件和__________________。
2. 构件图由构件、_____________和____________构成。
3. 构件图中的接口分为_____________接口和______________接口。
4. 一个构件使用另外一个构件的操作,可以通过___________关系表示。
5. 如果构件之间存在泛化关系,可以通过______________ 关系表示。
6. 构件图可以对________________________和___________________进行建模
解答:
1. 实施构件、执行构件
2. 接口、端口
3. 供给接口、需求接口
4. 依赖
5. 依赖
6. 可执行程序的结构、源代码
三.名词解释 1. 构件
2. 执行构件
3. 实施构件
解答:
1. 系统的一类模块,隐藏了细节,并且可以被其它实现了该功能的模块替换。
2. 可以被系统执行的模块
3. 不能单独执行,但可作为一个可执行系统的一部分
四.简答题
1. 简述构件与类之间的关系?
2. 构件之间存在依赖和实现关系,请描述什么时候用依赖关系,什么时候用实现关系。
3. 请描述构件分为几类,各自特点是什么。
解答: 1. 联系 构件和类都是分类符 构件用来实现类的动态行为 区别 抽象的方式不同; 构件存在于物理空间 类存在于概念空间 抽象的级别不同; 构件的抽象级别高于类 访问方式不同;
2. 依赖关系 • 表示构件需要什么服务 • 一个构件使用另外一个构件的操作 • 如果构件之间存在泛化关系,则表示为依赖关系 实现关系 • 表示构件能提供什么服务
3. 实施构件:这类构件是构成一个可执行系统必要和充分的构件,例如动态链接库、可执 行文件,另外还包括如COM+、CORBA及企业级Java Beans、动态Web页面也属于实施构件的一 部分 工作产品构件:这类构件主要是开发过程的产物,包括创建实施构件的源代码文件及数 据文件。这些构件并不是直接地参与可执行系统,而且用来产生可执行系统的中间工作产品 执行构件:作为一个正在执行的系统的结 果而被创建的,例如由DLL实例化形成的 CO
M+对象
五.绘图题
1. 插入磁卡后进入输密码状态,当密码输入正确时进入选择服务类型状态,当输入密码不 正确时,停留在原状态,但如果三次不正确,服务结束。进入选择服务类型后 根据选择的不
同,顾客可进入存款和取款状态。存、取款结束后,顾客既可以选择结束服务到最终状态,
也可以选择继续服务回到选择服务类型状态。请绘制状态图。
2. 电梯的第一层有向上按钮,最高层有向下按钮,中站各层都有向上或向下的按钮。启动 时电梯处于第一层,当有人按了向上按钮,电梯向上移动到指定的楼层,到达后电梯处于闲 置状态,此时可以接收向上移动或向下移动请求。若闲置超过3分钟,电梯自动移动到第一层
。请绘制状态图。 解答:
1.
2.
六.应用题
1. 描述构件图的含义,并指出哪些是装配连接器。
2. 根据以下UML图写出代码
解答:
1. 酒店预订系统中有一个构件对外提供用户界面服务,一个构件来完成与酒店系统的连接 和预订, “调度程序”构件负责将用户的需求与酒店的供给进行匹配的。 装配连接器:预订、添加申请。
2. class Company { private Person[] employee=new Person[n]; public void give_me_a_raise( Person p) { } public void hire ( Person p ) { } } class Person { private String name; private Company employer; private Person boss; private Vector worker=new Vector(); }
第十一章 部署图
一.选择
1. 节点是存在于运行时并代表一项计算资源的物理元素,没有计算能力的节点称为_______
___
A.处理器 B.规范 C.接口 D.设备
2. 节点是存在于运行时并代表一项计算资源的物理元素,有计算能力的节点称为_________ _
A.处理器 B.规范 C.接口 D.设备
3. 下图中,表示“节点”的图为____________。
4. __________图可以用来描述系统硬件的物理拓扑结构以及在此结构上运行的软件。 A、用例图 B、类图 C、部署图 D、活动图
解答: 1. D 2. A 3. C 4. C
二.填空
1. 状态图的____________是指进入一个状态时,执行某个动作。
2. 状态图的______________退出一个状态时,执行某个动作。
3. 含有子状态的状态称之为_______________。
4. 状态图可以对___________________________和___________________________建模。
解答:
1. 进入转换
2. 退出转换
3. 复合状态/组合状态
4. 对象生命周期、反应型对象
三.名词解释 1. 部署图
2. 节点
3. 事件
4. 历史状态
解答:
1. 描述了一个系统运行时的硬件节点、在这些节点上运行的软件构建将如何运行以及他们 将如何彼此通信的静态视图。
2. 代表一个运行时的计算资源。
3. 是对一个时间和空间上占有一定位置的有意义的事情的规格说明。
4. 历史状态是一种伪状态。可以存储腿出组合状态时所处的子状态,则返回组合状态时可 以直接回到相应的子状态。
四.简答题
1. 简述节点与构件之间的异同点。
2. 部署图中的节点分为几种类型,各在什么情况下使用。
3. 状态图与交互图的区别
解答:
1. 相似之处 二者有多名称,都可以参与依赖、泛化和关联关系,都可以被嵌套,都可以有实例,都 可以参与交互。 区别 构件是参与系统执行的事物,而节点是执行构件的事物; 构件表示逻辑元素的物理打包,而节点表示构件的物理部署
2. 处理器 具有处理能力的节点,即可以执行构件 设备 没有处理能力的节点,至少是不关心其处理能力的节点。
3. 交互图不显示对象所有可能的动态行为,只显示特定交互(一个具体用例)中对象的行为 。 状态图可以显示对象所有的动态行为
五.绘图题
1. 现有系统需求如下: 客户端:需使用Windows操作系统,安装客户端软件(假设名为KaoQing.exe) 服务器:包含一个用Delphi开发的服务端软件(设为KqServer.exe),它需要与Access 数据库交互(设为KaoQing.mdb),并且需要通过IC卡读卡器的驱动程序(假设名为cardRead er.dll)来实现与IC卡读卡器通信 IC卡读写器:对于本系统而言,它是不执行构件的设备,不过为了方便员工,安装了3个 。 请绘制一张布署图。
2. 现有系统需求如下 现有一个设备,设备主板上有四个部件:手机模块、灯传感器、GPS、雷应传感器。四个
部件之间没有任何关联,只与主板进行通信。 请绘制出相应的布署图。
解答: 1.
2.
六.应用题
1. 请参考下图,回答问题:
1、图中的实体类有哪些? 2、图中的控制类有哪些? 3、图中的边界类有哪些? 4、“借书界面”类中的成员属性有哪些?
2. 根据下例描述,画出客户购物的活动图 客户首先在查看和浏览商品,一旦确定要购买的物品后,就通知销售员。这时销售员为 购买的物品,开出订单,并通知仓管员提取物品。仓管员则根据定单,提取货物,再把订单 交给销售员。这时,顾客查看自己的订单,确认货物,而销售员则开始计算货款。一旦双方 都完成后,顾客就付款,提货,销售员则将订单保存下来。
解答:
1. 实体类:书目,书籍 控制类:书籍管理 边界类:借书界面 成员属性:sUserName,sPass
2.
第十二章 UML建模实例
一.选择 解答: 二.填空 解答:
三.名词解释 解答: 四.简答题 解答: 五.绘图题 解答: 六.应用题 解答:
因篇幅问题不能全部显示,请点此查看更多更全内容