当前位置:文档之家› UML设计模式考试题

UML设计模式考试题

UML设计模式考试题
UML设计模式考试题

UML设计模式考试题

简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。

该模式中包含的角色及其职责

工厂(Creator)角色

简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类可以被外界直接调用,创建所需的产品对象。

抽象(Product)角色

简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。

具体产品(Concrete Product)角色

简单工厂模式的特点:

简单工厂模式的创建目标,所有创建的对象都是充当这个角色的某个具体类的实例。

在这个模式中,工厂类是整个模式的关键所在。它包含必要的判断逻辑,能够根据外界给定的信息,决定究竟应该创建哪个具体类的对象。用户在使用时可以直接根据工厂类去创建所需的实例,而无需了解这些对象是如何创建以及如何组织的。有利于整个软件体系结构的优化。

请问什么是责任链器模式,责任链模式包含哪些角色、可以应用在哪些场景?定义:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系,将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。角色:处理者、具体处理者。场景:有许多对象可以处理用户的请求,希望程序在运行期间自动确定处理用户的那个对象;希望用户不必明确指定接受者的情况下,向多个接受者一个提交请求;程序希望动态指定可处理用户请求的对象集合

设计模式六大原则-单一职责原则、开放封闭原则、依赖倒转原则、里氏代换原则、迪米特法则、合成/聚合复用原则

标签:扩展编程设计模式class测试工作

2012-07-31 09:26 1823人阅读评论(0) 收藏举报

分类:OO(1)

原则,故名思议则是本质的意思。所谓擒贼先擒王,研究设计模式自然要先了解设计原则,所有的模式都是在这些原则的基础之上发展起来的,有的是侧重一个,有的是多个都有所涉及。看完设计模式之后,我感觉到每个模式都有这些原则的影子,还渗透着面向对象的三大属性,也觉得这些原则也都有相通之处,,正是有了他们才使我们由代码工人转为艺术家。下面我来点评一下六大原则,望各位拍砖:

1、单一职责原则(Single Responsibility Principle,简称SRP)

单一职责原则,就一个类而言,应该仅有一个引起它变化的原因。如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会消弱或者一直这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破

坏。而软件设计真正要做的许多内容,就是发现职责,并把这些职责相互分离。

一句话点评:高内聚低耦合的绝佳体现,不要乱拉关系,独善其身挺好。

2、开放--封闭原则(The Open-Closed Principle,简称OCP)

开放--封闭原则,是说软件实体(类、模块、函数等等)应该可以扩展,但是不可以修改。即对于扩展是开放的,对于更改是封闭的。我们不可能做到未卜先知,在设计的时候尽可能让一个类足够好,设计好了就不要去修改了;不能完全封闭的情况下,当发生变化时,我们就创建抽象来隔离以后发生的同类变化。

一句话点评:开放扩展,封闭更改,开合有度是一门艺术。

开放封闭原则(OCP,Open Closed Principle)是所有面向对象原则的核心。软件设计本身所追求的目标就是封装变化、降低耦合,而开放封闭原则正是对这一目标的最直接体现。其他的设计原则,很多时候是为实现这一目标服务的,例如以Liskov替换原则实现最佳的、正确的继承层次,就能保证不会违反开放封闭原则。

关于开放封闭原则,其核心的思想是:

软件实体应该是可扩展,而不可修改的。也就是说,对扩展是开放的,而对修改是封闭的。

因此,开放封闭原则主要体现在两个方面:

对扩展开放,意味着有新的需求或变化时,可以对现有代码进行扩展,以适应新的情况。

对修改封闭,意味着类一旦设计完成,就可以独立完成其工作,而不要对类进行任何修改。

“需求总是变化”、“世界上没有一个软件是不变的”,这些言论是对软件需求最经典的表白。从中透射出一个关键的意思就是,对于软件设计者来说,必须在不需要对原有的系统进行修改的情况下,实现灵活的系统扩展。而如何能做到这一点呢?

只有依赖于抽象。实现开放封闭的核心思想就是对抽象编程,而不对具体编程,因为抽象相对稳定。让类依赖于固定的抽象,所以对修改就是封闭的;而通过面向对象的继承和对多态机制,可以实现对抽象体的继承,通过覆写其方法来改变固有行为,实现新的扩展方法,所以对于扩展就是开放的。这是实施开放封闭原则的基本思路,同时这种机制是建立在两个基本的设计原则的基础上,这就是Liskov替换原则和合成/聚合复用原则。关于这两个原则,我们在本书的其他部分都有相应的论述,在应用反思部分将有深入的讨论。

对于违反这一原则的类,必须进行重构来改善,常用于实现的设计模式主要有Template Method模式和Strategy模式。而封装变化,是实现这一原则的重要手段,将经常发生变化的状态封装为一个类。

3、依赖倒转原则(Dependence Inversion Principle )

依赖倒转原则,指高层模块不应该依赖低层模块,两个都应该依赖抽象;抽象不应该依赖细节,细节应该依赖抽象。说白了就是要针对接口编程,不要对实现编程。举个例子:计算机硬件中,如果内存坏了,那么只需要换一个内存条就可以了,而不需要去换一个主板,在这里内存是一个接口类,只要符合他的规格要求就行,无论是那一根。

一句话点评:搞建筑时要做设计师,而不是砖瓦工,抽象的蓝图要靠具体的材料一点点实现。

抽象不应该依赖于细节,细节应当依赖于抽象。

要针对接口编程,而不是针对实现编程。

传递参数,或者在组合聚合关系中,尽量引用层次高的类。

主要是在构造对象时可以动态的创建各种具体对象,当然如果一些具体类比较稳定,就不必再弄一个抽象类做它的父类,这样有画蛇添足的感觉。

优点:

系统扩展灵活。

缺点:

需要大量的类。

4、里氏代换原则(Liskov Substitution Principle,简称LSP)

里氏代换原则,子类型必须能够替换掉他们的父类型。在软件里面,把父类都替换成其子类,程序的行为不会发生变化。正是由于子类型的可替换性才使得使用父类型的模块在无需修改的情况下就可以扩展。

一句话点评:长辈给了你继承的权利就一定要做赡养的义务,把长辈的职责都要承担起来。

里氏代换原则(Liskov Substitution Principle LSP)面向对象设计的基本原则之一。里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现。LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。里氏代换原则是对“开-闭”原则的补充。实现“开-闭”原则的关键步骤就是抽象化。而基类与子类的继承关系就是抽象化的具体实现,所以里氏代换原则是对实现抽象化的具体步骤的规范。

5、迪米特法则(Law of Demeter)

迪米特法则,如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中一个类需要调用另一个类的某一个方法时,可以通过第三者转发这个调用。类之间的耦合越弱,就越有利于复用,一个处在弱耦合的类被修改,不会对有关系的类造成波及。主要是强调了类之间的松耦合。

6、合成/聚合复用原则(Composition/Aggregation Principle],简称CARP)

合成聚合复用原则,尽量使用合成/聚合,尽量不使用类继承。合成聚合是“has a”的关系,而继承是“is a”的关系。由于继承是一中强耦合的结构,父类变,子类必变。所以不是“is a”关系,我们一般不要用继承。优先使用合成聚合复用原则,有助于保持每个类的封装,降低继承的层次。

一句话点评:优生优育,不要盲目繁衍。

public class FlyweightFactory{

private HashMap flyweights = new HashMap();

public Flyweight getFlyweight(String key){

if(flyweights.containsKey(key)){

return (Flyweight)flyweights.get(key);

}

else{

Flyweight fw = new ConcreteFlyweight();

flyweights.put(key,fw);

return fw;

}

}

}

UML设计模式考试题

UML设计模式考试题 简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。 该模式中包含的角色及其职责 工厂(Creator)角色 简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类可以被外界直接调用,创建所需的产品对象。 抽象(Product)角色 简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。 具体产品(Concrete Product)角色 简单工厂模式的特点: 简单工厂模式的创建目标,所有创建的对象都是充当这个角色的某个具体类的实例。 在这个模式中,工厂类是整个模式的关键所在。它包含必要的判断逻辑,能够根据外界给定的信息,决定究竟应该创建哪个具体类的对象。用户在使用时可以直接根据工厂类去创建所需的实例,而无需了解这些对象是如何创建以及如何组织的。有利于整个软件体系结构的优化。 请问什么是责任链器模式,责任链模式包含哪些角色、可以应用在哪些场景?定义:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系,将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。角色:处理者、具体处理者。场景:有许多对象可以处理用户的请求,希望程序在运行期间自动确定处理用户的那个对象;希望用户不必明确指定接受者的情况下,向多个接受者一个提交请求;程序希望动态指定可处理用户请求的对象集合 设计模式六大原则-单一职责原则、开放封闭原则、依赖倒转原则、里氏代换原则、迪米特法则、合成/聚合复用原则 标签:扩展编程设计模式class测试工作 2012-07-31 09:26 1823人阅读评论(0) 收藏举报 分类:OO(1) 原则,故名思议则是本质的意思。所谓擒贼先擒王,研究设计模式自然要先了解设计原则,所有的模式都是在这些原则的基础之上发展起来的,有的是侧重一个,有的是多个都有所涉及。看完设计模式之后,我感觉到每个模式都有这些原则的影子,还渗透着面向对象的三大属性,也觉得这些原则也都有相通之处,,正是有了他们才使我们由代码工人转为艺术家。下面我来点评一下六大原则,望各位拍砖: 1、单一职责原则(Single Responsibility Principle,简称SRP) 单一职责原则,就一个类而言,应该仅有一个引起它变化的原因。如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会消弱或者一直这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破

软件工程与UML期末试题及答案

软件工程与U M L建模复习题B 一:单选题 1.是在系统之外,透过系统边界与系统进行有意义交互的任何事物 A).相关系统B).Use Case C).Class D).Actor 2.软件工程是以为核心 A).过程B).面向对象C).软件开发D).质量 3.“系统应具有很高的可靠性,使用该产品的前3个月,系统不应该出现崩溃(数据不可恢复)的现象”,这属于 A).功能性需求B).客观需求C).主观需求D).非功能性需求 4.“系统每天晚上自动生成进货报表”,Actor是: A).系统B).其它系统C).时间D).报表审阅者 5.数据流程图是一个分层的概念模型,分三个层次:,分别描述系统的不同特征 A).总体图、二级图、三级图B).总体图、二级图、细节图 C).总体图、零级图、细节图D).总体图、次级图、细节图 6.正式运行系统后能够产生的收益被称为 A).直接效益B).运营效益C).最佳效益D).启动效益 7.“以相对短的时间和相对低的成本来确定给定的问题在其约束条件内是否有解、有几种解以及哪个是最佳解”,这指的是软件开发过程中的 A).问题定义B).可行性研究C).需求分析D).设计 8.在处理过程定义中,有时存在多重嵌套的情况,对于复杂的条件组合问题,用自然语言往往不能直观、清楚地表述处理的过程,因此,常常使用方法。 A).数据字典B).判定表和判定树C).用例图D).螺旋模型 9.设C(X)定义问题X的复杂性函数,E(X)定义解决问题X所需要工作量的函数,对于两个问

题p1和p2,一般情况下如果C(p1)E(p2) B).C(p1+p2)=C(p1)+C(p2) C).E(p1+p2)>E(p1)+E(p2) D).E(p1+p2)

UML期末考试试题与答案解析

UML期末考试试题与答案解析 一、选择题: 1.UML中关联的多重度就是指(B) A.一个类有多个方法被另一个类调用 B.一个类的实类能够与另一个类的多个实类相关联 C.一个类的某个方法被另一个类调用的次数 D.两个类所具有的相同的方法与属性 2.已知三个类A、B与C、其中类A由类B的一个实类与类C的1个或多个实类构成、 请画出能够正确表示类A,B与C之间关系的UML类图、 3在某个信息系统中,存在如下的业务陈述:①一个客户提交0个或多个订单;②一个订单由一个且仅由一个客户提交。系统中存在两个类:“客户”类与“订单”类。对应每个“订单”类的实例,存在___(46)_B__“客户”类的实例;对应每个“客户”类的实例,存在___(47)D___个“订单”类的实例。 供选择的答案: (1)A、0个 B、1个C、1个或多个 D、0个或多个 (2)A、0个 B、1个 C、1个或多个 D、0个或多个 4、 UML中的交互图有两种,分别就是顺序图与协作图,请分析一下两者之间的主要差别与各自的优缺点。掌握利用两种图进行的设计的方法。 答:顺序图可视化地表示了对象之间随时间发生的交互,它除了展示对象之间的关联,还显示出对象之间的消息传递。与顺序图一样,协作图也展示对象之间的交互关系。顺序图强调的就是交互的时间顺序,而协作图强调的就是交互的语境与参与交互的对象的整体组织。顺序图按照时间顺序布图,而协作图按照空间组织布图。 顺序图可以清晰地表示消息之间的顺序与时间关系,但需要较多的水平方向的空间。 协作图在增加对象时比较容易,而且分支也比较少,但如果消息比较多时难以表示消息之间的顺序。 14、什么就是对象间的可见性? 答:可见性(Visibility)指的就是一个对象能够“瞧到”或者引用另一个对象的能力。 5、UML提供了一系列的图支持面向对象的分析与设计,其中____(1)___给出系统的静态设计视图;___(2)____对系统的行为进行组织与建模就是非常重要的;____(3)___与____(4)___都就是描述系统动态视图的交互图,其中___(3)___描述了以时间顺序组织的对象之间的交互活动,___(4)____强调收发消息的对象的组织结构。 A、状态图 B、用例图 C、序列图 D、部署图 E、协作图 F、类图 答案:(1)F (2)B (3)C (4)E 6、在UML提供的图中,___(1)___用于描述系统与外部系统及用户之间的交互;__(2)___用于按时间顺序描述对象间的交互。

UML期末考卷一份(有答案)

考试时间年月日(120分钟) 课程UML 请将答案填写在答题纸上!不要在考卷上作答! 一、单选题(每小题只有一个正确选项,每小题2分,共30分) 1.执行者(Actor)与用例之间的关系是() (A)包含关系(B)泛化关系(C)关联关系(D)扩展关系2 .在类图中,下面哪个符号表示继承关系() 3.在类图中,“#”表示的可见性是() (A)Public (B)Protected (C)Private (D)Package 4.下面那个类图的表示是正确的() 5.下面哪个符号代表部署图的节点() 6.生命线是UML视图中哪个图形的组成部分() (A)类图(B)状态图(C)活动图(D)顺序图 7.在类图中,那种关系表达总体与局部的关系() (A)泛化(B)实现(C)依赖(D)聚合 8.下面哪个图形代表活动() 9.下面哪个UML视图是描述一个对象的生命周期的() (A)类图(B)状态图(C)协作图(D)顺序图 10.下面哪个视图属于UML语言的交互图() (A)行为图(B)状态图(C)实现图(D)顺序图 11.下面哪个符号代表包图() 12.在UML协作图中,有多少种关联角色的构造型() (A)1 (B)3 (C)5 (D)7 13.在类图中,哪种关系表达总体与局部的关系() (A)泛化(B)实现(C)依赖(D)聚合 14.在类图中,“#”表示的可见性是() (A)Public (B)Protected (C)Private (D)Package 15.下面哪个符号表示注释() 二、多选题(每小题有一个或多个选项,每小题2分,共10分) 1.下面哪些图形可以清楚地表达并发行为() (A)类图(B)状态体(C)活动图(D)顺序图 2.下面哪些元素构成了组件图形() (A)组件(B)转换(C)关系(D)接口 3.部署图中的节点具有以下哪些方面的内容() (A)计算能力(B)基本内存(C)位置(D)接口 4.顺序图的用途包括() (A)显示并发进程和激活 (B)当不同的类之间存在多个简短的方法时,描述控制流的整体序列 (C)显示在协作图中难于描述的事件序列 (D)显示涉及类交互而与对象无关的一般形式 5.常见的UML工具有哪些?() (A)Rational Rose (B)Power Designer (C)Visio (D)Visual UML 三、填空题(每空2分,共30分) 1. UML中有多种关系,请标出图示是哪种关系: (B) (A) (C) (D) (B) (A) (C) (D) (B) (A) (C) (D) (B) (A) (C) (D) Student Student name : String age : Student getName () getAge () Student Name : String Age: intInteger getName () getAge () (B) (A) (C) (D) (B) (A) (C) (D)

23种设计模式_UML_类图及对应示例代码

23种设计模式UML 类图及对应示例代码(一) 收藏 1.DoFactory.GangOfFour.Abstract.Structural Abstract Factory:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:如何创建及如何向客户端提供。 using System; namespace DoFactory.GangOfFour.Abstract.Structural { ///

/// MainApp startup class for Structural /// Abstract Factory Design Pattern. ///

class MainApp { ///

/// Entry point into console application. /// public static void Main() { // Abstract factory #1 AbstractFactory factory1 = new ConcreteFactory1(); Client client1 = new Client(factory1); client1.Run(); // Abstract factory #2 AbstractFactory factory2 = new ConcreteFactory2(); Client client2 = new Client(factory2); client2.Run(); // Wait for user input Console.Read(); } } // "AbstractFactory" abstract class AbstractFactory { public abstract AbstractProductA CreateProductA(); public abstract AbstractProductB CreateProductB(); } // "ConcreteFactory1" class ConcreteFactory1 : AbstractFactory { public override AbstractProductA CreateProductA() { return new ProductA1(); } public override AbstractProductB CreateProductB() { return new ProductB1(); } }

uml与设计模式

返回总目录
目 录
第 10 章 UML 与设计模式 ...................................................................................2 10.1 10.2 10.3 10.4 10.5 10.6 10.7 10.8 10.9 10.10 10.11 什么是模式 ................................................................................................2 为什么要使用设计模式 ............................................................................3 模式的分类 ................................................................................................4 模式的组成元素 ........................................................................................6 模式的质量 ................................................................................................7 一个简单的模式例子 代理模式 ............................................................8 UML 对模式的支持 ..................................................................................9 应用设计模式进行系统设计 ..................................................................14 模式选择举例 评估项目 ......................................................................15 模式应用举例 形状编辑器 ................................................................20 小 结 ..................................................................................................36

uml期末考试题A卷及答案

考试时间 年 月 日(90分钟) 课程 UML 请将答案填写在答题纸上!不要在考卷上作答! 一、单选题 1.执行者(Actor )与用例之间的关系是( ) (A )包含关系 (B )泛化关系 (C )关联关系 (D )扩展关系 2 .在类图中,下面哪个符号表示继承关系( ) 3.在类图中,“ #”表示的可见性是( ) (A )Public (B )Protected (C )Private (D )Package 4.下面那个类图的表示是正确的( ) 5.下面哪个符号代表部署图的节点( ) 6.生命线是UML 视图中哪个图形的组成部分( ) (A )类图 (B )状态图 (C )活动图 (D )顺序图 7.在类图中,那种关系表达总体与局部的关系( ) (A )泛化 (B )实现 (C )依赖 (D )聚合 8.下面哪个图形代表活动( ) (B) (A) (C) (D) (B) (A) (C) (D) Student Student name : String age : Student getName () getAge () Student Name : String Age: intInteger getName () getAge () (B) (A) (C) (D) (B) (A) (C) (D)

9.下面哪个UML 视图是描述一个对象的生命周期的( ) (A )类图 (B )状态图 (C )协作图 (D )顺序图 10.下面哪个视图属于UML 语言的交互图( ) (A )行为图 (B )状态图 (C )实现图 (D )顺序图 11.下面哪个符号代表包图( ) 12.在UML 协作图中,有多少种关联角色的构造型( ) (A )1 (B )3 (C )5 (D )7 13.在类图中,哪种关系表达总体与局部的关系( ) (A )泛化 (B )实现 (C )依赖 (D )聚合 14.在类图中,“ #”表示的可见性是( ) (A )Public (B )Protected (C )Private (D )Package 15.下面哪个符号表示注释( ) 二、多选题 1.下面哪些图形可以清楚地表达并发行为( ) (A )类图 (B )状态图 (C )活动图 (D )顺序图 2.下面哪些元素构成了组件图形( ) (A )组件 (B )转换 (C )关系 (D )接口 3.部署图中的节点具有以下哪些方面的内容( ) (A )计算能力 (B )基本内存 (C )位置 (D )接口 4.顺序图的用途包括( ) (A )显示并发进程和激活 (B )当不同的类之间存在多个简短的方法时,描述控制流的整体序列 (C )显示在协作图中难于描述的事件序列 (D )显示涉及类交互而与对象无关的一般形式 5.常见的UML 工具有哪些?( ) (A )Rational Rose (B )Power Designer (C )Visio (D )Visual UML (B) (A) (C) (D) (B) (A) (C) (D)

UML期末考试题(必考)

一、选择 1.UML 的全称是 ( ) (A )Unify Modeling Language (B )Unified Modeling Language (C )Unified Modem Language (D )Unified Making Language 2.参与者(Actor )与用例之间的关系是( ) (A )包含关系(B )泛化关系(C )关联关系 (D )扩展关系 3.在类图中,下面哪个符号表示继承关系( ) (B) (A) (C) (D) 4.下面哪个视图属于UML 语言的交互图( ) (A )行为图 (B )状态图 (C )实现图 (D )顺序图 5. 在类图中,下面哪个符号表示实现关系( ) (B) (A) (C) (D) 6.下面哪个图形代表活动( ) 7.UML 中关联的多重度是指 ( ) (A )一个类有多个方法被另一个类调用 (B )一个类的实类能够与另一个类的多个实类相关联 (C )一个类的某个方法被另一个类调用的次数 (D )两个类所具有的相同的方法和属性 8.下面哪个不是UML 中的静态视图( ) (A)状态图 (B)用例图 (C)对象图 (D)类图 9.( )技术是将一个活动图中的活动状态进行分组,每一组表示一个特定的类、人或部门,他们负责完成组内的活动。 (A)泳道 (B)分叉汇合 (C)分支 (D)转移 10.下列关于状态图的说法中,正确的是( ) (A) 状态图是UML 中对系统的静态方面进行建模的图之一。 (B) 状态图是活动图的一个特例,状态图中的多数状态是活动状态 (C) 活动图和状态图是对对象的生命周期进行建模,描述对象随时间变化的行为。 (D) 状态图强调对有几个对象参与的活动过程建模,而活动图更强调对单个反应型对象建模 11.类图应该画在Rose 的哪种( )视图中。 (A)Use Case View (B)Logic View (C)Component View (D)Deployment View 12.顺序图由类角色,生命线,激活期和( )组成 (A)关系 (B)消息 (C)用例 (D)实体 13.关于通信图的描述,下列哪个不正确( ) (A)通信图作为一种交互图,强调的是参加交互的对象的组织; (B)通信图是顺序图的一种特例 (C)通信图中有消息流的顺序号;

实验一 设计模式综合应用(一)附源码+UML图

注:班里的可以向我要工程文件 实验一设计模式综合应用(一) 一、实验目的: 熟练掌握Java设计模式中的命令模式和观察者模式,并培养学生将两者综合应用到具体软件项目中的能力。 二、实验内容: 制作如图1所示GUI界面,需求如下: 1. 鼠标左键点击界面时,在鼠标所在位置填充一个直径为20像素的圆, 并在界面上方的标签上显示“新增圆点位于:(x,y)”; 2. 鼠标右键点击时,则实现undo操作,将最后填充的圆点从界面中删除, 并在界面上方的标签上显示“删除圆点位于:(x,y)”; 3. 界面下方的标签随时显示“鼠标位于:(x,y)”; 图1 GUI界面 三、实验要求: 1. 绘制和撤销圆点使用命令模式; 2. 两个标签内容的变更使用观察者模式; 3. 在代码实现之前,进行UML类图设计;

4. 根据UML类图,在eclipse中编程实现程序的功能。 四、实验学时:2+2学时(课外2个学时) 五、提示: 1.设计一个Circle类,该类对象用来记录某个填充圆的信息; 2. 每填充一个圆点,就实例化一个Circle类对象,并将其放置到具体命令对 象关联的List对象中,用来作为undo操作的依据; 3. 填充圆可以使用Graphics的fillOval方法; 4. 删除圆可以先将Graphics对象的颜色设置为画布的背景色,再使用 Graphics的fillRect方法; 5. 标签显示内容的需求不用观察者模式就可以轻松实现,但要求使用观察者 模式进行设计; 5. 实验完成后,将UML文件和程序的工程文件打包,命名为“实验一.rar”, 并上传至ftp://10.10.3.72。 六UML图 七源代码 1. package lsu.egg.sy1; public class Circle { private int x; private int y;

uml期末考试题a卷及答案

文档来源为:从网络收集整理.word 版本可编辑.欢迎下载支持. 一、单选题 1.执行者(Actor )与用例之间的关系是( ) (A )包含关系 (B )泛化关系 (C )关联关系 (D )扩展关系 2 .在类图中,下面哪个符号表示继承关系( 3.在类图中,“ #”表示的可见性是( ) (A )Public (B )Protected (C )Private (D )Package 4.下面那个类图的表示是正确的( ) 5.下面哪个符号代表部署图的节点( ) 6.生命线是UML 视图中哪个图形的组成部分( ) (A )类图 (B )状态图 (C )活动图 (D )顺序图 7.在类图中,那种关系表达总体与局部的关系( ) (A )泛化 (B )实现 (C )依赖 (D )聚合 8.下面哪个图形代表活动( ) 9.下面哪个UML 视图是描述一个对象的生命周期的( ) (A )类图 (B )状态图 (C )协作图 (D )顺序图 10.下面哪个视图属于UML 语言的交互图( ) (A )行为图 (B )状态图 (C )实现图 (D )顺序图 11.下面哪个符号代表包图( ) (B) (A) (C) (D) (B) (A) (C) (D) (B) (A) (C) (D) (B) (A) (D)

文档来源为从网络收集整理 .word版本可编辑.欢迎下载支持 . 12.在UML协作图中,有多少种关联角色的构造型( ) (A)1 (B)3 (C)5 (D)7 13.在类图中,哪种关系表达总体与局部的关系() (A)泛化(B)实现(C)依赖(D)聚合 14.在类图中,“#”表示的可见性是() (A)Public (B)Protected (C)Private (D)Package 15.下面哪个符号表示注释() 二、多选题 1.下面哪些图形可以清楚地表达并发行为() (A)类图(B)状态图(C)活动图(D)顺序图 2.下面哪些元素构成了组件图形() (A)组件(B)转换(C)关系(D)接口 3.部署图中的节点具有以下哪些方面的内容() (A)计算能力(B)基本内存(C)位置(D)接口 4.顺序图的用途包括() (A)显示并发进程和激活 (B)当不同的类之间存在多个简短的方法时,描述控制流的整体序列 (C)显示在协作图中难于描述的事件序列 (D)显示涉及类交互而与对象无关的一般形式 5.常见的UML工具有哪些?() (A)Rational Rose (B)Power Designer (C)Visio (D)Visual UML 三、填空题(每空2分,共30分) 1. UML中有多种关系,请标出图示是哪种关系: (1)(2) (3)(4) (5)(6) (B) (A) (C) (D) (B) (A) (C) (D) 0..1 0..* employer employee

UML选择题

UML选择题

-、选择题 1.封装是指把对象的(A)结合在一起,组成一个独立的对象。 A. 属性和操作 B.信息流 c.消息和事件 D.数据的集合 2.封装是一种(C)技术,目的是使对象的生产者和使用者分离,使对象的定义和实現分1开。 A. 」_程化 B.系统维护 C.信息隐敞 D.产生对象 3.面向对象方法中的(D)机制使子类可以自动地例有(复制)父类全部属性和操作。 A.约東 B.对象映射 c.信息隐蔽 D.继承 4.在c++中,使得在多个类中能够定义同一个操作或属性名,并在每一个类中有不同的实現的一种方法是(B)。 A.继承 B.多态性 C.约束 D.接口 1.UML的软件开发以(A)为中心,以系统体系结构为主线,采用循环、迭代、渐增的方式进

行开发。 A.用例 B.对象 C.类 D.程序 2.uML的(B)模型图由类图、对象图、包图、构件图和配置图组成。 A.用例 B.静态 C.动态 D.系统 3.uML的(c)模型图由活动图、顺序图、状态图和协作图组成。 A.用例 B.静态 C.动态 D.系统 4.UML的最终产物就是最后提交的可执行的软 件系统和(D)。 A.用户手册 B.类图 C.动态图 D.相应的软件文档资料 5.在u ML的需求分析建模中,(B)模型图必 须与用户反复交流并加以确认。 A.配置 B.用例 C.包 D.动态 1.可行性研究分析包括经济可行性分析、技术可行性分析和(B)。

A.风险可行性分析 B.法律可行性分析 c.资源可行性分析 D.效益可行性分析 2.uML的客户需求分析模型包括(A)模型、初始类图、初始对象图和活动图组成。 A.用例 B.静态 C.动态 D.系统 3. uML客.J·?需求分析使用的 CRC卡上“责任”一栏的内容主要描述类的( C )和操作。 A.对象成员 B.关联对象 C.属性 D.私有成员 4.uML客户需求分析产生的用例模型描述了系 统的(D)。 A.状态 B.体系结构 c.静态模型 D.功能要求 5.在u ML的需求分析建模中,用例模.型必须与 (D)反复交流并加以确认。 A.软件生产商 B.用户单位领导 C.软件开发人员 D.问题领域专家 6.在u ML的需求分析建模中,对用例模.型中的 用例进行细化说明应使用(A)《图一>文字一>

江西理工大学UML与设计模式复习题(答案参考版)

UML 与设计模式复习题 题型:单项选择题、多项选择题、简答题、设计题 1、简述GRASP 模式的内容。 答:GRASP 是General Responsibility Assignment Software Pattern(通用责任分配软件模式)的缩写。GRASP 模式可以用来设计类,这个模式包括9个基本原则:创建者、信息专家、低耦合、控制器、高内聚、多态性、纯虚构、间接性、防止变异。 2、掌握如何阅读、绘制活动图的基本方法。 答:1.阅读活动图: 活动图的主要元素 ?初始节点和活动终点:用一个实心圆表示初始节点,用一个圆圈内加一个实心圆来表示活动终点 ?活动节点:是活动图中最主要的元素之一,它用来表示一个活动 ?转换:当一个活动结束时,控制流就会马上传递给下一个活动节点,在活动图中称之为“转换”,用一条带箭头的直线来表示 活动图的主要元素 ?分支与监护条件:分支是用菱形表示的,它有一个进入转换(箭头从外指向分支符号),一个或多个离开转换(箭头从分支符号指向外)。而每个离开转换上都会有一个监护条件,用来表示满足什么条件的时候执行该转换。 2.绘制活动图 ?绘制时首先决定是否采用泳道:主要根据活动图中是否要体现出活动的不同实施者?然后尽量使用分支、分岔和汇合等基本的建模元素来描述活动控制流程 ?如果需要,加入对象流以及对象的状态变化,利用一些高级的建模元素(如辅助活动图、汇合描述、发送信号与接收信号、引脚、扩展区)来表示更多的信息 ?活动图的建模关键是表示出控制流,其它的建模元素都是围绕这一宗旨所进行的补充工作流程,控制流程,业务流程中使用。 3、掌握如何阅读顺序图,如图所示,类Reservation,Window 必须实现哪些方法? : Participant

UMl期末考试题

1.下列描述中,哪个不是建模的基本原则(D) A.要仔细的选择模型 B.每一种模型可以在不同的精度级别上表示所要开发的系统 C.模型要与现实相联系 D.对一个重要的系统用一个模型就可以充分描述 2.UML体系包括三个部分:UML基本构造块,(A)和UML公共机制 A、UML规则 B、UML命名 C、UML模型 D、UML约束 3.UML中的事物包括:结构事物,分组事物,注释事物和(D) A、实体事物 B、边界事物 C、控制事物 D、动作事物 4.(A)模型的缺点是缺乏灵活性,特别是无法解决软件需求不明确或不准确的问题 A、瀑布模型 B、原型模型 C、增量模型 D、螺旋模型 5.下面哪个不是UML中的静态视图(A) A.状态图 B.用例图 C.对象图 D.类图 6.(A)技术是将一个活动图中的活动状态进行分组,每一组表示一个特定的类、人或部门,他们负责完成组内的活动。 A、泳道 B、分叉汇合 C、分支 D、转移 7.下列关于状态图的说法中,正确的是(C) A. 状态图是UML中对系统的静态方面进行建模的五种图之一。 B. 状态图是活动图的一个特例,状态图中的多数状态是活动状态 C.活动图和状态图是对一个对象的生命周期进行建模,描述对象随时间变化的行为。 D. 状态图强调对有几个对象参与的活动过程建模,而活动图更强调对单个反应型对象建模 8.对反应型对象建模一般使用(A)图 A、状态图 B、顺序图 C、活动图 D、类图 9.对反应型对象建模一般使用(A)图 A、状态图 B、顺序图 C、活动图 D、类图 10.类图应该画在Rose的哪种(B)视图中 A、Use CaseView B、Logic View C、ComponentView D、Deployment View 11.类通常可以分为实体类,(C)和边界类 A、父类 B、子类 C、控制类 D、祖先类 12.顺序图由类角色,生命线,激活期和(B)组成 A、关系 B、消息 C、用例 D、实体 13.(D)是系统中遵从一组接口且提供实现的一个物理部件,通常指开发和运行时类的物理实现 A、部署图 B、类 C、接口 D、组件 13关于协作图的描述,下列哪个不正确(B) A.协作图作为一种交互图,强调的是参加交互的对象的组织; B.协作图是顺序图的一种特例 C.协作图中有消息流的顺序号; D.在ROSE工具中,协作图可在顺序图的基础上按“F5”键自动生成; 14.组件图用于对系统的静态实现视图建模,这种视图主要支持系统部件的配置管理,通常可以分为四种方式来 完成,下面哪种不是其中之一(B) A.对源代码建模

uml设计模式三个工厂类图代码详解

工厂模式在《Java与模式》中分为三类: 1)简单工厂模式(Simple Factory):不利于产生系列产品; 2)工厂方法模式(Factory Method):又称为多形性工厂; 3)抽象工厂模式(Abstract Factory):又称为工具箱,产生产品族,但不利于产生新的产品; 这三种模式从上到下逐步抽象,并且更具一般性。 GOF在《设计模式》一书中将工厂模式分为两类:工厂方法模式(Factory Metho d)与抽象工厂模式(Abstract Factory)。将简单工厂模式(Simple Factory)看为工厂方法模式的一种特例,两者归为一类。 二、简单工厂模式 简单工厂模式又称静态工厂方法模式。重命名上就可以看出这个模式一定很简单。它存在的目的很简单:定义一个用于创建对象的接口。 在简单工厂模式中,一个工厂类处于对产品类实例化调用的中心位置上,它决定那一个产品类应当被实例化, 如同一个交通警察站在来往的车辆流中,决定放行那一个方向的车辆向那一个方向流动一样。 先来看看它的组成: 1) 工厂类角色:这是本模式的核心,含有一定的商业逻辑和判断逻辑。在java中它往往由一个具体类实现。 2) 抽象产品角色:它一般是具体产品继承的父类或者实现的接口。在java中由接口或者抽象类来实现。 3) 具体产品角色:工厂类所创建的对象就是此角色的实例。在java中由一个具体类实现。 三、工厂方法模式 工厂方法模式是简单工厂模式的进一步抽象化和推广,工厂方法模式里不再只由一个工厂类决定那一个产品类应当被实例化,这个决定被交给抽象工厂的子类去做。 来看下它的组成: 1)抽象工厂角色:这是工厂方法模式的核心,它与应用程序无关。是具体工厂角色必须实现的接口或者必须继承的父类。在java中它由抽象类或者接口来实现。 2)具体工厂角色:它含有和具体业务逻辑有关的代码。由应用程序调用以创建对应的具体产品的对象。 3)抽象产品角色:它是具体产品继承的父类或者是实现的接口。在java中一般有抽象类

23常用设计模式的UML

Factory模式 1.简单工厂模式,又称静态工厂模式 2.工厂方法模式 3. 抽象工厂模式 抽象工厂模式与工厂方法模式的最大区别在于,工厂方法模式针对的是一个产品等级结构;而抽象工厂模式则需要面对多个产品等级结构。

Singleton模式 要点: 类只能有一个实例 必须自行创建这个实例 必须自行向外界提供这个实例

Builder模式 Builder模式利用一个Director对象和ConcreteBuilder对象一个一个地建造出所有的零件,从而建造出完整的Product。Builder模式将产品的结构和产品的零件建造过程对客户端隐藏起来,把对建造过程进行指挥的责任和具体的建造者零件的责任分割开来,达到责任划分和封装的目的。 使用Builder模式的场合: 需要生成的产品对象有复杂的内部结构。每一个内部成分本身可以是对象,也可以紧紧是产品对象的一个组成部分。 需要生成的产品对象的属性相互以来。Builder模式可以强制实行一种分步骤进行的建造过程,因此,如果产品对象的一个属性必须在另一个属性被赋值之后才可以被赋值,使用建造模式便是一个很好的设计思想。 在对象创建过程中会使用到系统中的其他一些对象,这些对象在产品对象的创建过程中不易得到。

Prototype模式 通过给出一个原型对象来指明所要创建的对象的类型,然后用赋值这个原型对象的办法创建出更多同类型的对象。 Cloneable

Adapter模式 把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作,也就是说把接口不同而功能相同或相近的多个接口加以转换。 1.类的Adapter模式的结构 2.对象的Adapter模式的结构 注意两种结构的区别:主要就是Adaptee和Adapter的关系,一个为继承关系,一个为依

UML期末考试试题

一、选择 1.UML的全称是( B ) (A)Unify Modeling Language (B)Unified Modeling Language (C)Unified Modem Language (D)Unified Making Language 2.参与者(Actor)与用例之间的关系是( C ) (A)包含关系(B)泛化关系(C)关联关系(D)扩展关系 3.在类图中,下面哪个符号表示继承关系(C) (A) (C) (D) (B) 4.下面哪个视图属于UML语言的交互图( D ) (A)行为图(B)状态图(C)实现图(D)顺序图 5. 在类图中,下面哪个符号表示实现关系( C ) (A) (C) (D) (B) 6.下面哪个图形代表活动( D ) 7.UML中关联的多重度是指 ( B ) (A)一个类有多个方法被另一个类调用 (B)一个类的实类能够与另一个类的多个实类相关联 (C)一个类的某个方法被另一个类调用的次数 (D)两个类所具有的相同的方法和属性 8.下面哪个不是UML中的静态视图( A ) (A)状态图 (B)用例图 (C)对象图(D)类图 9.( A )技术是将一个活动图中的活动状态进行分组,每一组表示一个特定的类、人或部门,他们负责完成组内的活动。 (A)泳道(B)分叉汇合 (C)分支(D)转移 10.下列关于状态图的说法中,正确的是( C ) (A) 状态图是UML中对系统的静态方面进行建模的图之一。 (B) 状态图是活动图的一个特例,状态图中的多数状态是活动状态 (C) 活动图和状态图是对对象的生命周期进行建模,描述对象随时间变化的行为。 (D) 状态图强调对有几个对象参与的活动过程建模,而活动图更强调对单个反应型对象建模 11.类图应该画在Rose的哪种(B )视图中。 (A)Use Case View (B)Logic View (C)Component View (D)Deployment View 12.顺序图由类角色,生命线,激活期和(B )组成 (A)关系 (B)消息 (C)用例(D)实体 13.关于通信图的描述,下列哪个不正确( B ) (A)通信图作为一种交互图,强调的是参加交互的对象的组织; (B)通信图是顺序图的一种特例 (C)通信图中有消息流的顺序号; (D)在ROSE工具中,通信图可在顺序图的基础上按“F5”键自动生成;

uml中的关系

uml中的关系 1、关联 双向关联: C1-C2:指双方都知道对方的存在,都可以调用对方的公共属性和方法。 在GOF的设计模式书上是这样描述的:虽然在分析阶段这种关系是适用的,但我们觉得它对于描述设计模式内的类关系来说显得太抽象了,因为在设计阶段关联关系必须被映射为对象引用或指针。对象引用本身就是有向的,更适合表达我们所讨论的那种关系。所以这种关系在设计的时候比较少用到,关联一般都是有向的。 使用ROSE 生成的代码是这样的: class C1 ...{ public: C2* theC2; }; class C2 ...{ public: C1* theC1; }; 双向关联在代码的表现为双方都拥有对方的一个指针,当然也可以是引用或者是值。 单向关联: C3->C4:表示相识关系,指C3知道C4,C3可以调用C4的公共属性和方法。没有生命期的依赖。一般是表示为一种引用。 生成代码如下:

class C3 ...{ public: C4* theC4; }; class C4 ...{ }; 单向关联的代码就表现为C3有C4的指针,而C4对C3一无所知。 自身关联(反身关联): 自己引用自己,带着一个自己的引用。 代码如下: class C14 ...{ public: C14* theC14; }; 就是在自己的内部有着一个自身的引用。 2、聚合/组合 当类之间有整体-部分关系的时候,我们就可以使用组合或者聚合。

聚合:表示C9聚合C10,但是C10可以离开C9而独立存在(独立存在的意思是在某个应用的问题域中这个类的存在有意义。这句话怎么解,请看下面组合里的解释)。 代码如下: class C9 ...{ public: C10 theC10; }; class C10 ...{ }; 组合(也有人称为包容):一般是实心菱形加实线箭头表示,如上图所示,表示的是C8被C7包容,而且C8不能离开C7而独立存在。但这是视问题域而定的,例如在关心汽车的领域里,轮胎是一定要组合在汽车类中的,因为它离开了汽车就没有意义了。但是在卖轮胎的店铺业务里,就算轮胎离开了汽车,它也是有意义的,这就可以用聚合了。在《敏捷开发》中还说到,A组合B,则A需要知道B的生存周期,即可能A负责生成或者释放B,或者A通过某种途径知道B 的生成和释放。 他们的代码如下: class C7 ...{ public: C8 theC8; }; class C8 ...{ }; 可以看到,代码和聚合是一样的。具体如何区别,可能就只能用语义来区分了。 3、依赖

相关主题
文本预览
相关文档 最新文档