1、不定项选择题:1开发过程中最困难的一个环节。(人的思想交流) 2用例是从谁的观点对系统行为的一个描述。(用户) 3顺序图的线索。(以时间为线索,从上往下) 4多重性的常见表达法。(见PPT第三章P13-P14) 5在找出了类的继承关系后,通常应该怎样处理最上层的基类。(抽象类/接口) 6使用用例的难点在于哪里。(用例的挖掘) 7产生类图和得到用例这两个步骤的先后顺序。(无特定顺序,通常并发执行) 8面向对象理论中,对象之间发送信号,就是UML状态图里的什么元素。(触发器事件)(事件包括:状态、变迁线、触发器事件)9当代软件工程的特点有哪些。(开发阶段重叠、迭代;面向对象;UML驱动;需求分析占
2、成本百分比大) 10GRAPPLE中最重要的段是哪个。(需求收集) 11当我们想创建一个具体的对象而又不希望指定具体的类时,可以使用哪个模式。(抽象工厂模式(把对象的创建抽象化))12当我们想将抽象部分和实现部分分离时,可以使用哪个模式。(桥接模式)13面向对象系统中功能复用的两种最常用技术。(类继承(白合复用)和对象组合技术(黑盒复用))14对象组合的含义(保存别的对象/接口的指针或者引用)。15在Lexi系统中,我们把所有文档元素都看作是图元,这样,它们就有了相同的什么?(接口/类型)16一个软件产品是否成功,因素有哪些。(详细的需求分析、正确的需求收集、好的软件体系结构、)17怎样在项目
3、中定制自己的元素。(构造)18型构的含义。(函数返回参数的类型)19UML中的实现是一种特殊类型的继承,特殊在哪里?(它的积累是抽象类) 20收集用例的基本方法。(交谈)21顺序图中,怎样表示动态创建对象(在信号线上动态创建并标注对象的生命域)。24设计模式的4个基本要素。(模式名称pattern name、问题problem、模式的解决方案solution、效果consequences)25当我们想用不同的请求对客户进行参数化时,可以使用哪个模式。(command模式/命令模式)26当我们想封装不同算法并使它们可相互替换时,可以使用哪个模式。(策略模式)27面向对象系统中的“黑盒复用”是指哪
4、种复用技术。(对象组合复用技术)28设计模式中应优先使用的复用技术是哪种。(对象组合复用技术)30Lexi系统中,我们之所以能对文档采用Composite模式,是因为文档的元素之间有什么关系。(树型层次关系)填空题:1软件体系结构是指一个系统的有目的的设计和规划,这个设计规划既不描述 活动 ,也不描述 如何开发产品 ,它只描述系统的 组成元素 及其相互的 交互、协作 。2一个UML模型只描述了一个系统 要做什么 ,它并没告诉我们系统是 如何被实施的 。3接口是可以在整个模型中反复使用的一组行为,是一个没有 属性 而只有 操作 的类。4多重性指的是,某个类有 一 对象可以和另一个类的 多个 对象
5、关联。5当一个类的对象可以充当多种角色时, 自身关联 关联就可能发生。6在泛化关系中, 子类 可以替代 父类 。也就是说,后者出现的地方,前者都可以出现。但是反过来却不成立。7最通常的依赖关系是一个类操作的 型构 中用到了 其他类 的定义。8组成是 强类型 的聚集,因为聚集中的每个部分体只能属于 一个 整体。9实现的符号和继承的符号有相似之处,两者的唯一差别是实现关系用 虚线 表示,继承关系用 实线 表示。10UML背后的两个重量级概念是 面向对象 和 用例 。11状态图和类图、顺序图不同之处在于,后两种图能够对 多个对象 建立模型,而状态图只是对 一个对象 建立模型。12状态图中3个常用的动
6、作是 入口动作 、 出口动作 、 和 动作(do) 。13顺序图中,消息用 消息线 表示;时间用 生命线 表示。14当逻辑发生分支时,在顺序图中用 消息分支 表示,在协作图中用 嵌套序号 表示。15顺序图强调的是交互的 顺序执行 ,协作图强调的是交互的 空间布局 和参与交互的对象的 协作关联 。16GRAPPLE把开发过程分为5个 段 ,之中又由许多 动作 组成。17GRAPPLE过程中,得到初步类图是在 需求收集 段,细化类图是在 需求分析 段。18每一个设计模式都集中于一个特定的 面向对象设计问题或者设计要点 ,描述了 什么时候使用它 、在另一些设计约束条件下是否还能使用 以及 使用的效果
7、 和 如何取舍 。19面向对象系统中功能复用的两种最常用技术是 类继承复用技术 和 对象组合复用技术 。20设计模式中应优先使用 对象组合 而不是 类继承 。 简答题3如何在实际工作中发现类。(ppt第二章P19)1)在与客户的交谈中,要注意客户用来描述业务实体的名词术语。这些名词可作为领域模型中的类。还要注意你听到的动词,因为这些动词可能2)根据自身工作经验对得到的各个类进行修改,最终得到想要的类。4简述怎样发现类之间的继承关系。1)在与客户交谈的过程中,系统分析员可以通过多种方式发现类之间的继承关系。作为候选的类有可能和它的父类、子类在谈话中同时被发现。系统分析员能意识到某个类的属性和操作
8、也许能被运用到其他多个类当中去;此外,这几个类还有属于自己的特定属性和操作。2)根据自身工作经验对得到的各个类进行修改,得到最终类之间的继承关系。5使用UML的关系表示法,表示出大学计算机专业中如下这些课程的模型:C语言程序设计、C+语言程序设计、Windows程序设计、网络程序设计。注意抽象类和依赖的使用。6画出图形用户界面GUI的状态图,要包括屏幕保护状态。其中要表明相应的事件、动作。答:图形用户界面(GUI)是一个可以说明状态转移细节的例子。在这里,假设GUI可以处于以下3种状态之一:Initializing(初始化);Working(工作);Protection(屏幕保护状态);Shu
9、t Down(关闭)。当打开PC电源的时候,自启动发生。因此Turning the PC on(打开PC)是一个触发器事件,它导致了GUI的状态转移到Initializing状态,而Bootup(自启动)是一个在转移过程中执行的动作。由于Initializing状态中活动的完成,GUI将转移进入Working状态。长时间不使用系统GUI自动进入Protection状态,只要给个触发,就可以唤醒又进入Working状态。当对PC选择ShutDown(关闭机器)时,就引发了Shut Down触发器事件,最后PC自己切断电源,整个过程结束。下面的状态图捕获了GUI的这些状态和转移。8画出自动饮料销售
10、机中,理想场景和“钱数不正确”的场景合并在一起的顺序图。假设在饮料销售机中有3个对象来做上述工作:前端(Front)(它是饮料销售机与顾客之间的接口),钱币记录仪(Register)(它负责收集顾客投的钱币),以及分配器(Dispenser)。我们还假设钱币记录仪控制分配器对象。那么对象之间的交互序列可能如下所示: 1 顾客向机器前端的槽缝中投入钱币。 2 顾客选择所要购买的饮料品种。 3 钱币被转送给记录仪。 由于这是一个理想情况下的场景,假设有饮料存货,则记录仪控制分配器将一罐饮料投递到销售机的前端。由于上述对应的序列图只覆盖了用例“Buy soda”的一个场景(也就是一个实例),因此它被
11、称之为实例顺序图(instance sequence diagram)。下图显示了对应的实例顺序图。注意图中只有简单消息,每个消息都引起控制流程从一个对象转移到另一个对象。对于“钱数不正确”场景:1记录仪检查顾客输入的钱币数星是否与所要购买的饮料价格匹配。 2 如果输入数量大于价格,则记录仪计算两者之间的差额并检查机器中存有的金额。 3 如果机器中刚好有能找给顾客的零钱,则记录仪将零钱找给顾客,一切按正常情况继续进行。 如果没有零钱找给顾客,则记录仪退回顾客投入的钱币,并显示一个消息,提示顾客重新输入数量正确的金额。13简述类继承和接口继承的区别?我们应该尽量使用哪一种?答:类继承根据一个对象
12、的实现定义了另一个对象的实现。简而言之,它是代码和表示的共享机制。然而,接口继承描述了一个对象什么时候能被用来替代另一个对象。类继承是派生中的类将继承父类的所有属性和方法,并且可以在派生类里添加自己的属性和方法,而接口继承则是在接口里只定义接口的方法,没有属性,并且方法不能实现,只有在派生他的类才实现该方法。类继承是编译的时候新建对象,而接口实例是在运行时刻创建对象。我们应该尽量使用接口继承,类继承会产生类爆炸现象。15.可复用的面向对象设计的两条原则是什么?1. 针对接口编程,而不是针对实现编程。不要将变量声明为一个特定类的实例对象,而是让他遵从抽象类所定义的接口2.优先使用对象组合,而不是
13、类继承。18.Lexi系统的格式化问题中,我们引入了Compositor和Composition两个类来实现“策略”模式。请画出这两个类各自的继承关系和它们之间的协作关系。Compositor类,它的接口(见下表)可让Compositor获知何时去格式化哪些图元。它所格式化的图元是一个被称为Composition的特定图元的各个子图元。一个Composition在创建时得到一个Compositor子类实例,并在必要的时候(如用户改变文档的时候)让Compositor对它的图元作Compose操作。下图描述了Composition类和Compositor类之间的关系:19.Lexi系统的支持多种窗口平台的问题中,我们使用了Window和WindowsImp类来实现桥接模式。请画出这两个类各自的继承关系和它们之间的协作关系。