UML设计模式考试题
uml试题及答案(考试专用)
![uml试题及答案(考试专用)](https://img.taocdn.com/s3/m/96f87d3cda38376bae1fae8c.png)
一、名词解释:用例:是外部可见的系统单元,这些功能由系统单元所提供,并通过一系列系统单元与一个或多个参与者之间交换的消息所表达。
泳道:在活动图中,泳道用垂直实线绘出,垂直线分隔的区域就是泳道;组件:组件是定义了良好接口的物理实现单元,是系统中可替换的物理部件.双向工程:双向工程包括正向工程和逆向工程.正向工程就是从模型到代码,而逆向工程则是从代码到模型.正向和逆向工程结合在一起叫双向工程。
对象流:对象流是动作状态或者活动状态与对象之间的依赖关系,表示动作使用对象或者动作对对象的影响。
二、填空题1、UML中的模型元素包括事物和事物之间的联系。
2、Rational Rose包括了统一建模语言、面向对象的软件工程及对象建模技术。
3、时序图包含的4个元素有对象、生命线、消息、激活 .4、协作图以对象图的方式绘制各个参与对象,并且将消息和链平行放置。
5、组件是定义了良好接口的物理实现单元,是系统中可替换的物理部件.6、状态机包含了一个类的对象在其生命期间所有状态的序列以及对象对接收到的事件所产生的反应。
7、包图建模技术包括对成组的元素建模和对体系结构视图建模。
8、内部转换只有一个原状态但是没有目标状态 ,因此转换后并不改变状态本身。
9、分叉可以用来描述并发线程,每个分叉可以有一个输入转换和两个或多个输出转换.10、配置图描述了系统执行处理过程中系统资源元素的配置情况以及软件到这些资源元素的映射.三、1。
简述时序图的建模步骤。
如何识别用例?答:建模步骤:1)设置交互语境;2)确定对象;3)分析消息和条件;4)分析附加约束;5)对建模结果精化和细化2。
Rational Rose中有哪几种视图,各个视图的作用是什么?答:Rational Rose有四种视图:①用例视图:用例视图是被称为参与者的外部用户所能观察到的系统功能的模型图。
用例是系统中的一个功能单元,可以被描述为参与者与系统之间的一次交互作用。
用例模型的用途是列出系统中的用例和参与者,并显示哪个参与者参与了哪个用例的执行. 用例视图是其他视图的核心,它的内容直接驱动其他视图的开发。
uml参考题(带答案版)
![uml参考题(带答案版)](https://img.taocdn.com/s3/m/84c72b80dbef5ef7ba0d4a7302768e9951e76e16.png)
uml参考题(带答案版)1、⾯向对象的核⼼要素:对象,封装,消息,类,抽象,继承,多态性(7个)2、封装把类构成那两个部分,⼜提供了哪两种保护两个部分:接⼝部分,和实现部分两种保护:1,对象内部的状态被保护起来,不会被与该对象沟通的对象直接篡改;2另⼀⽅⾯,对象内部特征的变化不会改变其他对象与该对象的沟通⽅式。
(另⼀种⽼师课件的答案:两种保护:1.⾸先保护对象,防⽌⽤户直接存取对象的内部细节;。
2.其次封装也保护了客户端,防⽌对象实现部分的变化可能产⽣的副作⽤,即实现部分的改变影响到客户端的改变。
)3、消息提供了服务的哪四个⽅⾯对象标识,服务(⽅法)标识,输⼊信息和回答信息等5、下⾯是⼀个⽤例描述的⽚断:Use Case: Withdraw Cash(提取现⾦)参与者:Customer主事件流:1. 储户插⼊ATM卡,并键⼊密码。
2. 储户按“Withdrawal”按钮,并键⼊取款数⽬。
3. 储户取⾛现⾦、ATM卡并拿⾛收据。
4. 储户离开。
上述描述中存在的问题:只描述了参与者的动作序列,没有描述系统的⾏为。
改进的描述:答:1. 通过读卡机,储户插⼊ATM卡。
2. ATM系统从卡上读取银⾏ID、帐号、加密密码、并⽤主银⾏系统验证银⾏ID和帐号。
3. 储户键⼊密码,ATM系统根据上⾯读出的卡上加密密码,对密码进⾏验证。
4. 储户按“FASTCASH”按钮,并键⼊取款数量,取款数量应该是5美元的倍数。
5. ATM系统通知主银⾏系统,传递储户帐号和取款数量,并接收返回的确认信息和储户帐户余额。
6. ATM系统输出现⾦,ATM卡和显⽰帐户余额的收据。
7. ATM系统记录事务到⽇志⽂件。
7、什么是场景,⼀个⽤例可以有多少个主要场景和次要场景?场景:是使⽤系统的⼀个特定情节或通过⽤例的⼀个特定执⾏路径。
每个⽤例有且只有⼀个主要场景可以有多个次要场景8、按照耦合度从⾼到低,说明类之间的关系有哪些?由强到弱:继承,组合,聚合,关联,依赖9、标准类图中成员四个可见性分别⽤什么表⽰?Public + Protected # Package ~Private -10、association aggregation generalization dependency 分别代表什么关系关联关系聚合关系泛化关系依赖关系11、给出下⾯带关联类类图的另⼀种普通类图表⽰。
UML建模期末考试题及答案
![UML建模期末考试题及答案](https://img.taocdn.com/s3/m/aed4049809a1284ac850ad02de80d4d8d15a0132.png)
UML建模期末考试题及答案一、单项选择题(每题2分,共20分)1. UML中用于表示系统的静态结构的图是:A. 活动图B. 用例图C. 类图D. 状态图答案:C2. 在UML中,一个类可以拥有的属性和方法的集合被称为:A. 接口B. 实现C. 封装D. 抽象答案:C3. 以下哪个不是UML中的关系?A. 关联B. 依赖C. 泛化D. 映射答案:D4. 以下哪个不是UML中的行为图?A. 活动图B. 序列图C. 状态图D. 部署图答案:D5. 在UML中,表示对象之间交互的图是:A. 用例图B. 类图C. 序列图D. 组件图答案:C6. 在UML中,一个对象的生命周期可以用以下哪个图来表示?A. 活动图B. 序列图C. 状态图D. 部署图答案:C7. 在UML中,表示系统的物理架构的图是:A. 用例图B. 部署图C. 组件图D. 包图答案:B8. 以下哪个是UML中的对象?A. 类B. 接口C. 实例D. 以上都是答案:C9. 在UML中,表示一个类可以实例化多少次的关系是:B. 泛化C. 聚合D. 组合答案:D10. 在UML中,表示对象之间交互的顺序的图是:A. 活动图B. 序列图C. 状态图D. 用例图答案:B二、多项选择题(每题3分,共15分)1. UML中,以下哪些图可以用来描述系统的动态行为?A. 活动图B. 序列图C. 状态图D. 用例图答案:A、B、C2. 在UML中,以下哪些元素可以表示类之间的关系?A. 关联B. 依赖C. 泛化D. 组合答案:A、B、C、D3. 以下哪些图可以用来描述系统的静态结构?A. 类图B. 对象图D. 部署图答案:A、B、C、D4. 在UML中,以下哪些图可以用来描述系统的交互?A. 序列图B. 通信图C. 用例图D. 活动图答案:A、B5. 在UML中,以下哪些元素可以表示对象之间的交互?A. 消息B. 信号C. 事件D. 操作答案:A、B、C三、简答题(每题10分,共30分)1. 请简述UML中用例图的作用。
UML考试题及答案
![UML考试题及答案](https://img.taocdn.com/s3/m/1648cff96394dd88d0d233d4b14e852458fb39fc.png)
UML考试题及答案UML 统⼀建模⼀、选择题 (共40分,每⼩题2分)1、下⾯的模型图中,哪个能正确表⽰“1个教师可以指导0个到多个学⽣的论⽂,1个学⽣必须有1个教师指导其论⽂” 的意思(C )2、计算机由CUP 、内存、硬盘、显⽰器、⿏标等构成,那么计算机类和⿏标类之间的关系是( C )A 继承关系B 关联关系C 聚合关系D 依赖关系 3、下⾯( B )图形表⽰依赖关系。
4、关于UML ,下⾯说法正确的是( D )A UML 是⼀种⾯向对象的建模⽅法。
B UML 是⼀种形式化的语⾔,使⽤UML 建⽴的模型可被计算机编译执⾏。
C UML 是⼀种⾯向对象的编程语⾔。
D UML 是⼀种⾯向对象的建模语⾔,但不是建模⽅法。
ABCD5、顺序图和交互图的关系,类似与下⾯的哪种关系(C )A 类和对象的关系B 类和参与者关系C Java和编程语⾔的关系D UML和Java的关系6、要对⼀个企业的⼯作流程建模,下⾯4种图中的(B )是最重要的。
A 交互图B 活动图C 状态图D 类图7、关于参与者,错误的说法是(C )A 参与者是与所建⽴的系统交互的⼈或物。
B 参与者可以是实际的⼈,也可以其他系统。
C 参与者是系统的⼀部分,是⽤例图的重要组成部分。
D 参与者之间可以存在泛化关系。
8、UML中关联的多重性是指(B )A ⼀个类有多个⽅法被另⼀个类调⽤。
B ⼀个类的实例对象能够与另⼀个类的多少个实例对象相关联。
C ⼀个类的某个⽅法被另⼀个类调⽤的次数。
D 两个类所具有的相同的⽅法和属性。
9、关于类图的说法正确的是(A )A 类图分为3个层次:对象层、特征层和关系层,其中对象层给出系统中所有反映问题域和系统责任的对象。
B 类图分为3个层次:对象层、特征层和关系层,其中特征层给出系统中所有反映问题域和系统责任的对象。
C 类图只是⼀种辅助模型,不如其他图重要。
D 类图定义了系统的功能需求,描述了系统的动态⾏为。
10、根据Coad/Yourdon的定义,⾯向对象的概念不包括(D )A 对象B 继承C 消息D 封装11、使⽤UML对系统进⾏动态建模,不能使⽤以下哪种图(A )A 类图B 顺序图C 状态图D 活动图12、UML 的结构事物不包括( D )A 接⼝B 类C 协作D 状态机 13、分析下⾯的顺序图,并指出哪种说法是正确的( C )A “求战”、“怎么办”以及“⽕烧连营”这3条消息并没有严格的次序,⽐如:“求战”消息有可能在“⽕烧连营”之前产⽣。
UML试题及答案
![UML试题及答案](https://img.taocdn.com/s3/m/4947ba03657d27284b73f242336c1eb91a3733a9.png)
一、单项选择题: (本大题共 20 小题,每题 1 分,共 20 分)1. UML 的全称是 Unified Modeling Language(A) Unify Modeling Language (B) Unified Modeling Language(C) Unified Modem Language (D) Unified Making Language2. 执行者(Actor)与用例之间的关系是( C )(A)包含关系 (B)泛化关系 (C)关联关系 (D)扩展关系3. 在类图中,下面哪个符号表示继承关系( C )(A) (B) (C) (D)4. 在类图中,“ #”表示的可见性是( B )(A) Public (B) Protected (C) Private (D) Package5. 在类图中,下面哪个符号表示接口( C )(A) (B) (C) (D)6. 下面哪个视图属于 UML 语言的交互图( D )(A) 行为图 (B) 状态图 (C) 实现图 (D) 顺序图7. UML 语言包含几大类图形( B )(A) 3 (B) 5 (C) 7 (D) 98. OMT 方法是由下面哪位科学家提出的( b )(A) Booch (B) Rumbaugh (C) Coad (D) Jacobson9. 下面那个类图的表示是错误的( D )(A) (B) (C) (D)Student Student Student Studentname : String Name : StringgetName ()age: Integer getAge () Age:IntegergetName ()getAge ()10. 什么概念被认为是第二代面向对象技术的标志( A )(A)用例 (B) UML 语言 (C)活动图 (D) 组件图11. 下面哪个符号代表包图( A )(A) (B) (C) (D)12. 生命线是 UML 视图中哪个图形的组成部分( D )(A)类图 (B) 状态图 (C) 活动图 (D) 顺序图13. 在 UML 的顺序图中,通常由左向右分层排列各个对象,正确的排列方法是( a)(A) 执行者角色控制类用户接口业务层(B) 执行者角色用户接口控制类业务层后台数据库后台数据库(C) 执行者角色控制类用户接口后台数据库业务层(D) 执行者角色用户接口业务层控制类后台数据库14. 多对象是 UML 哪个视图中的概念( C )(A)类图 (B) 状态图 (C) 协作图 (D) 组件图15. 在类图中,哪种关系表达总体与局部的关系( D )(A)泛化 (B)实现 (C)依赖 (D)聚合16. 在 UML 中,接口有几种表达方式( A )(A) 2 (B) 4 (C) 6 (D) 817. 下面哪个图形代表活动( D )(A) (B) (C) (D)18. 下面哪个 UML 视图是描述一个对象的生命周期的( B )(A)类图 (B) 状态图 (C) 协作图 (D)顺序19. 顺序图由类角色,生命线,激活期和(B)组成(A)关系 (B)消息 (C)用例 (D) 实体20. UML 中关联的多重度是指 ( b)(A)一个类有多个方法被另一个类调用(B)一个类的实类能够与另一个类的多个实类相关联(C)一个类的某个方法被另一个类调用的次数(D)两个类所具有的相同的方法和属性二、多项项选择题: (本大题共 10 小题,每题 2 分,共 20 分) 在每小题列出的五个备选项中有二个至五个是符合题目要求的,请将其代码填写在题后的括号内。
UML必考45道选择题
![UML必考45道选择题](https://img.taocdn.com/s3/m/77efb43983c4bb4cf7ecd149.png)
UML课程题库一、选择题(共45个)1.用例图不包括以下哪方面的内容()A 参与者。
B 用例。
C 依赖、泛化和关联关系。
D 生命线2.面向对象的三个要素不包括以下哪个()A 封装 B继承 C 多态 D 接口3.UML图分为静态图和动态图,以下哪个属于静态图A 状态图 B协作图 C 类图 D 顺序图4.在UML建模时,应该最先画什么图()A 顺序图 B用例图 C 类图 D构造图5.类图的表示方法如下,其中B区应该是类的()A 方法 B名称 C 属性 D以上都不是6.下图中,表示()图或()图的开始和结束A 类图和对象图B 类图和部署图C 状态图和活动图 D顺序图和活动图7.“泳道”的概念出现在 ( ) 图中A活动图 B状态图 C顺序图 D协作图8.UML图不包括 ()(A)用例图(B)类图(C)状态图(D)流程图9.在类图中,下面哪个符号表示继承关系()10.在类图中,下面那种不是类属性的可见性()(A)Public (B)Protected (C)Private (D)Package11.类之间的关系不包括()(A)依赖关系(B)泛化关系(C)实现关系(D)分解关系12.在UML中,协作图的组成不包括()(A)对象(B)消息(C)发送者(D)链13.下面哪个符号代表包图()14.顺序图由类角色,生命线,激活期和()组成(A)关系(B)消息(C)用例(D)实体15.UML中关联的多重度是指()(A)一个类有多个方法被另一个类调用(B)一个类的实体类能够与另一个类的多个实体类相关联(C)一个类的某个方法被另一个类调用的次数(D)两个类所具有的相同的方法和属性16.在()中每个参与者以及系统都用一条垂直的生命线表示,每条消息用从发送方指向接收方的水平箭头表示。
A、类图B、顺序图C、状态图D、活动图17.UML图明确地在关联线的两端列出了多重性,UML用区间来确定多重性,其中特殊符号“*”表示()A、零B、1C、多D、1或多18.UML有两种类型的部分-整体关系:()A、聚合和合成B、组合和合成C、聚合和组合D、聚合与关联19.下面哪些图形可以清楚地表达并发行为()(A)类图(B)状态体(C)活动图(D)顺序图20.UML提供了一系列的图支持面向对象的分析与设计,其中____(1) ___给出系统的静态设计视图;___(2) ___对系统的行为进行组织和建模是非常重要的;____(3) __和____(4) ___都是描述系统动态视图的交互图,其中___(5) __描述了以时间顺序组织的对象之间的交互活动,___(6) ___强调收发消息的对象的组织结构。
uml试题——精选推荐
![uml试题——精选推荐](https://img.taocdn.com/s3/m/dec2ccc729ea81c758f5f61fb7360b4c2e3f2a09.png)
uml试题1.UML图不包括( D )A⽤例图B类图 C状态图D流程图2.下⾯哪⼀项不是包图中的关系( D )A<> B<> C<> D<>3.在类图中,下⾯哪个符号表⽰继承关系( C )4.在类图中,“ #”表⽰的可见性是( B )A PublicB ProtectedC PrivateD Package5.消息的组成不包括( C )A 接⼝B 活动C 发送者D 接收者6.下⾯哪个视图属于UML语⾔的交互图( D )A ⾏为图B 状态图C 实现图D 顺序图7.下⾯哪个不是UML中的静态视图( A )。
A.状态图B.⽤例图C.对象图D.类图8.对于⼀个在线旅⾏代理商使⽤的在线旅⾏公司系统,通过分析获得了下列⽤例及⽤例说明,其中哪⼀个应该不是合适的⽤例。
( D )A预定航班机票B预定酒店住宿C在线⽀付D开始实地旅⾏9.某游戏使⽤⾯向对象技术建模,游戏⾓⾊和道具分别是两个类,游戏⾓⾊达到⼀定条件后可以使⽤相应的道具。
游戏⾓⾊和道具之间的关系应该是(D )A、关联B、继承C、聚合D、依赖10.类之间的关系不包括( D )A 依赖关系B 泛化关系C 实现关系D 分解关系11.在UML中,协作图的组成不包括( C )A 对象B 消息C 发送者D 链12.下⾯哪个符号代表包图( A )BA C DBA C D13.下列对状态图描述不正确的是( C )A 状态图通过建⽴类对象的⽣命周期模型来描述对象随时间变化的动态⾏为B 状态图适⽤于描述状态和动作的顺序,不仅可以展现⼀个对象拥有的状态,还可与说明事件如何随着时间的推移来影响这些状态C 状态图的主要⽬的是描述对象创建和撤销的过程中资源的不同状态,有利于开发⼈员提⾼开发效率D 状态图描述了⼀个实体基于事件反应的动态⾏为,显⽰了该实体如何根据当前所处状态对不同的事件作出反应14.在UML的顺序图中,通常由左向右分层排列各个对象,正确的排列⽅法是( A)A 执⾏者⾓⾊控制类⽤户接⼝业务层后台数据库B 执⾏者⾓⾊⽤户接⼝控制类业务层后台数据库C 执⾏者⾓⾊控制类⽤户接⼝后台数据库业务层D 执⾏者⾓⾊⽤户接⼝业务层控制类后台数据库15.在UML中,接⼝有⼏种表达⽅式( A )A 2 B)4 C 6 D 816.下⾯哪个UML视图是描述⼀个对象的⽣命周期的( B )A 类图B 状态图C 协作图D 顺序17.顺序图由对象,⽣命线,控制焦点和(B)组成A 关系B 消息C ⽤例D 实体18.在⼀个“订单输⼊⼦系统”中,创建新订单和更新订单都需要检查⽤户帐号是否正确。
UML试题(内含答案)
![UML试题(内含答案)](https://img.taocdn.com/s3/m/7f7bf4f0951ea76e58fafab069dc5022aaea46db.png)
UML试题(内含答案)【用例图】1.用例图的节点包括(ABD)A、用例B、边界C、关联D、执行者2.用例之间的关系主要有(BCD)A、聚合B、继承C、扩展D、包含3.在采用用例模型捕获需求时,需要执行如下(ABCD)操作A、描述非功能需求B、用例建模C、识别用例D、识别参与者4.在识别用例时,以下(ABC)问题可以帮助识别用例A、当系统状态发生故障时,是否需要通知参与者B、系统是否存在外部事件,如果存在,是哪个能参与者通知系统这些个部事件C、参与者希望系统为他提供什么样的功能D、系统运行环境是什么5.在用例图中,可以用(D)来表示整个软件系统或其中一些子系统的边界,也可以用它表示软件系统的不同发布版本的功能范围A、执行者B、关联关系C、用例D、边界框6.(B)作为完成用例任务的责任承担者,协调、控制其他类共同完成用例规定的功能或行为A、数据对象B、控制类C、实体类D、边界类7.基于用例图的需求捕获的第一步就是确定系统的参与者,在寻找系统参与者时,可以根据以下(ABCD)等问题来确定A、系统同环境如何进行交互B、由谁安装系统C、系统为哪些对象提供信息、服务D、系统的使用者是谁8.如果用例B是用例A的某项子功能,并且建模者确切地知道在A所对应的动作序列中何时将调用B,则称(A)A、用例A扩展用例BB、用例A继承用例BC、用例A包括用例BD、用例A实现用例B9.如果用例A与用例B相似,但A的动作序列是通过改写B的部分或者扩展B的动作而获得的,则称(B)A、用例A实现用例BB、用例A继承用例BC、用例A扩展用例BD、用例A包括用例B10.如果用例A与用例B相似,但A的功能较B多,A的动作序列是通过在B的动作序列中的某些执行点上插入附加的动作序列而构成的,则称(C)A、用例A扩展用例BB、用例A包含用例BC、用例A继承用例BD、用例A实现用例B11.在UML中,(A)表示使用软件系统的功能,与软件系统交换信息的外部实体A、执行者B、类C、用例D、用例图12.在用例图中,执行者之间的关系只有(B)一种A、包含B、继承C、扩展D、实现【静态图】1.对于类,其属性的可见性表示对类的外部世界的可见性,它有以下(ABCD)选项A、公开(public)B、包内公开(package)C、保护(protected)D、私有(private)2.在UML中,以下(ABCD)是可以应用于包的构造型A、框架{《Framework》}B、虚包{《Facade》}C、子系统{《Subytem》}D、系统{《ytem》}3.两个类之间的关联表示他们之间存在一种不适于继承的逻辑关系。
UML考试试题及答案
![UML考试试题及答案](https://img.taocdn.com/s3/m/6a24d3326ad97f192279168884868762caaebb06.png)
UML考试试题及答案2008-2009第2学期《UML与面向对象方法学》复习题二、单选题1.( A )不是UML体系的组成部分。
A.应用领域B.规则C.基本构造块D.公共机制2.在UML中,有四种事物,下面哪个不是( B )。
A.结构事物B.静态事物C.分组事物D.注释事物3.以下(C )不是RUP中的优秀方法。
A.迭代的开发软件B.不断的验证软件质量C.配置管理与变更管理D.支持正向与逆向工程4.下面( D)属于UML中的动态视图。
A.类图B.用例图C.对象图D.状态图5.在UML中,()把活动图中的活动划分为若干组,并将划分的组指定给对象,这些对象必须履行该组所包括的活动,它能够明确地表示哪些活动是由哪些对象完成的。
AA.泳道B.同步条C.活动D.组合活动6.用例之间有几种不同的关系,下列哪个不是他们之间可能的关系()。
BA.include B.connect C.generalization D.extend7.event表示对一个在时间和空间上占据一定位置的有意义的事情的规格说明,下面哪个不是事件的类型()。
CA.信号B.调用事件C.源事件D.时间事件8.通常对象有很多属性,但对于外部对象来说某些属性应该不能被直接访问,下面哪个不是UML中的类成员访问限定性()。
D A.public B.protected C.private D.friendly9.在UML中,类之间的关系有一种关系称为关联,其中多重性用来描述类之间的对应关系,下面哪个不是其中之一()。
A A.*....*B.0....* C.1....* D.0. (1)10.关于包的描述,不正确的是()。
BA.和其他建模元素一样,每个包必须有一个区别于其他包的名字B.export使一个包中的元素可以单向访问另一个包中的元素C.包的可见性分为public、protected、privateD.包中可以包含其他元素,比如类、接口、组件、用例等等11.Use Case用来描述系统在事件做出响应时所采取的行动。
UML试题及答案
![UML试题及答案](https://img.taocdn.com/s3/m/e3b1d6cb561252d380eb6efc.png)
3)构造阶段(1分)4)提交阶段(1分)全部答对(1分)四、问答题和分析题:(本大题共2小题,共40分)1. 看图回答下面问题(15分)1)类Student和类Course之间是什么关系?并用文字性语言描述该类图表达意思。
关联关系(1分)该图描述的是:学生和课程之间的选择关系,一个学生可以选择多门课程,一门课程可以被多个学生所选择。
(2分)2)使用Rose双向工程,写出Student类生成的java代码(省略注释、get和set方法)(5分)public class Student{ (1分)private String name; (1分)private Course selecters[]; (1分)public void Student(){ (1分)private int k;public void C(){}public void test3(){}}画出类A B C每个1分,画出类A和类B、类C之间关系各2分2. 图书管理系统功能性需求说明如下:(25分)图书管理系统能够为一定数量的借阅者提供服务。
每个借阅者能够拥有唯一标识其存在的编号。
图书馆向每一个借阅者发放图书证,其中包含每一个借阅者的编号和个人信息。
提供的服务包括:提供查询图书信息、查询个人信息服务和预定图书服务等。
当借阅者需要借阅图书、归还书籍时需要通过图书管理员进行,即借阅者不直接与系统交互,而是通过图书管理员充当借阅者的代理和系统交互。
系统管理员主要负责系统的管理维护工作,包括对图书、数目、借阅者的添加、删除和修改。
并且能够查询借阅者、图书和图书管理员的信息。
可以通过图书的名称或图书的ISBN/ISSN号对图书进行查找。
回答下面问题:1)该系统中有哪些参与者?(3分)借阅者图书管理员系统管理员2)确定该系统中的类,找出类之间的关系并画出类图用户类、用户角色类、图书类、预定类、借阅类、书目类(6分)类图(6分)6个类每2个1分,6个关系每2个1分3)画出语境“借阅者预定图书”的时序图(10分)【用例图】页脚内容11。
uml习题及答案
![uml习题及答案](https://img.taocdn.com/s3/m/488e4d30f111f18583d05a3b.png)
uml习题1、什么不是面向对象程序设计的主要特征。
()A.封装C.多态B.继承D.结构2、UML中有四种关系是:依赖,泛化,关联和()A、继承B、合作C、实现D、抽象3、UML中的事物包括:结构事物,分组事物,注释事物和()A、实体事物B、边界事物C、控制事物D、动作事物4、在UML中,()图显示了一组类、接口、协作以及它们之间的关系。
A、状态图B、类图C、用例图D、部署图5、下列描述中,哪个不是建模的基本原则()A.要仔细的选择模型B.每一种模型可以在不同的精度级别上表示所要开发的系统C.模型要与现实相联系D.对一个重要的系统用一个模型就可以充分描述6、UML体系包括三个部分:UML基本构造块,()和UML公共机制A、UML规则B、UML命名C、UML模型D、UML约束7、下图是()A、类图B、用例图C、活动图D、状态图10、下面哪个不是UML中的静态视图()A.状态图B.用例图C.对象图D.类图11、()技术是将一个活动图中的活动状态进行分组,每一组表示一个特定的类、人或部门,他们负责完成组内的活动。
A、泳道B、分叉汇合C、分支D、转移12、下列关于状态图的说法中,正确的是()A. 状态图是UML中对系统的静态方面进行建模的五种图之一。
B. 状态图是活动图的一个特例,状态图中的多数状态是活动状态C. 活动图和状态图是对一个对象的生命周期进行建模,描述对象随时间变化的行为。
D. 状态图强调对有几个对象参与的活动过程建模,而活动图更强调对单个反应型对象建模13、对反应型对象建模一般使用()图A、状态图B、顺序图C、活动图D、类图14、类图应该画在Rose的哪种()视图中A、Use Case ViewB、Logic ViewC、Component ViewD、Deployment View15、类通常可以分为实体类,()和边界类A、父类B、子类C、控制类D、祖先类16、顺序图由类角色,生命线,激活期和()组成A、关系B、消息C、用例D、实体17、()是系统中遵从一组接口且提供实现的一个物理部件,通常指开发和运行时类的物理实现A、部署图B、类C、接口D、组件18、关于协作图的描述,下列哪个不正确()A.协作图作为一种交互图,强调的是参加交互的对象的组织;B.协作图是顺序图的一种特例C.协作图中有消息流的顺序号;D.在ROSE工具中,协作图可在顺序图的基础上按“F5”键自动生成;19、组件图用于对系统的静态实现视图建模,这种视图主要支持系统部件的配置管理,通常可以分为四种方式来完成,下面哪种不是其中之一()A.对源代码建模B.对事物建模C.对物理数据库建模D.对可适应的系统建模20、一个对象和另一个对象之间,通过消息来进行通信。
UML考试真题
![UML考试真题](https://img.taocdn.com/s3/m/f2bbc9f76c175f0e7dd13719.png)
U M L考试真题(总17页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--前面的实体有欠缺。
828.在状态视图中,( B )表示两个状态之间的关系;源状态和目的状态。
A、监护条件B、事件C、状态D、转换829.在需求分析中,控制类(B)。
A、负责目标软件系统与外部执行者之间的交互B、作为完成用例任务的责任承担着,负责协调,控制其他类共同完成用例规定的功能或行为C、负责保存目标软件系统中具有持久意义的信息项并向其他类提供信息访问的操作。
D、负责实现用户的业务逻辑的(B)是由建模者设计的心的模型元素,但是这个模型元素的设计要建立在UML已定义的模型元素基础上。
A、标记值B、构造型C、注释D、约束831.一般情况下,可以将面向对象中的聚合概念区分为(B)关系。
A 继承B 关联C 组合D 聚合832.在UML活动图中,(B)表示操作之间的信息交换。
A 控制流B 信息流C 初始活动D 活动833.如果用例A与用例B相似,但A的动作序列是通过改写B的部分动作或者扩展B的动作而获得的,则称(C)。
A .用例A包含用例BB .用例A扩展用例BC .用例A继承用例BD .用例A实现用例B通过图形化的表示机制从多个侧面对系统的分析和设计模型进行刻画,其中(A)包括构件图(component diagram)。
它描述软件系统中各组成构件、构件的内部结构以及构件之间的依赖关系。
A 构件视图B 行为视图C 结构视图D 用例视图835.在用例图中,执行者之间的关系只有(D)一种。
A 扩展B 包含C 继承D 实现836.(C)是一种特殊形式的状态机,用于对计算流程和工作流程建模。
A 状态图B 活动图C 流程图D 时间图837.(D)使用类图的一个子集,用于强化某个时间点类实例之间的关系。
A 协作图B 交互图C 对象图D 状态图838.(D)用于描述相互合作的对象间的交互关系和链接关系。
uml建模考题
![uml建模考题](https://img.taocdn.com/s3/m/a95a5c73f46527d3240ce0b8.png)
试题三(15分)阅读下列说明和数据流图,回答问题1和问题3,将解答填入答题纸的对应栏内。
【说明】某指纹门禁系统结构如图3-1所示,其主要部件有:主机(MainFrname)、锁控器(LockController)、指纹采集器(FingerReader)和电控锁(Lock)。
(1)系统中的每个电控锁都有一个惟一的编号。
锁的状态有两种:“已锁住”和“未锁住”。
(2)在主机上可以设置每把锁的安全级别以及用户的开锁权限。
只有当用户的开锁权限大于或等于锁的安全级别并且锁处于“已锁住”状态时,才能将锁打开。
(3)用户的指纹信息、开锁权限以及锁的安全级别都保存在主机上的数据库中。
(4)用户开锁时,只需按一下指纹采集器。
指纹采集器将发送一个中断事件给锁控器,锁控器从指纹采集器读取用户的指纹并将指纹信息发送到主机,主机根据数据库中存储的信息来判断用户是否具有开锁权限,若有且锁当前处于“已锁住”状态,则将锁打开;否则系统报警。
该系统采用面向对象方法开发,系统中的类以及类之间的关系用UML类图表示,图3-2是该系统类图的一部分;系统的动态行为采用UML序列图表示,图3-3是用户成功开锁的序列图。
【问题1】(6分)图3-2是该系统类图的一部分,依据上述说明中给出的术语,给出类Look的主要属性。
【问题2](5分)依据上述说明中给出的词语,将图3-3中的(1)~(5)处补充完整。
【问题3】(4分)组装(Composition)和聚集(Aggregation)是UML中两种非常重要的关系。
请说明组装和聚集分别表示什么含义?两者的区别是什么?某公司的主要业务是出租图书和唱碟。
由于业务需求,该公司委托软件开发公司A开发一套信息管理系统。
该系统将记录所有的图书信息、唱碟信息、用户信息、用户租借信息等。
A公司决定采用面向对象的分析和设计方法开发此系统。
图1-1所示为某类图书或唱碟被借阅时应记录的信息,图1-2描述了系统定义的两个类Book和CD,分别表示图书和唱碟的信息。
UML考试试题及答案
![UML考试试题及答案](https://img.taocdn.com/s3/m/2a1714fba26925c52dc5bf2a.png)
UML 考试试题及答案一、选择题(共15分,每题1分)1. UML 的全称是 ( B )(A )Unify Modeling Language (B )Unified Modeling Language (C )Unified Modem Language(D )Unified Making Language2. 执行者(Actor )与用例之间的关系是( C )(A )包含关系(B )泛化关系 (C )关联关系 (D )扩展关系3.在类图中,下面哪个符号表示继承关系( C 4.下面哪个视图属于UML 语言的交互图( D ) (A )行为图(B )状态图(C )实现图(D )顺序图5. UML 语言包含几大类图形( B )(A )3(B )5(C )7(D )96. 在类图中,下面哪个符号表示接口( C )7. 下面哪个图形代表活动( D )8. UML 中关联的多重度是指( b)(A )一个类有多个方法被另一个类调用(B )一个类的实类能够与另一个类的多个实类相关联 (C )一个类的某个方法被另一个类调用的次数 (D )两个类所具有的相同的方法和属性9. 下面哪个不是UML 中的静态视图(A )(A)状态图 (B)用例图 (C)对象图 (D)类图10. (A )技术是将一个活动图中的活动状态进行分组,每一组表示一个特定的类、人或部(B)(A)(C)(D)(B)(A)(D)(B) (A) (D)门,他们负责完成组内的活动。
(A)泳道(B)分叉汇合 (C)分支(D)转移11.下列关于状态图的说法中,正确的是( C )(A) 状态图是UML中对系统的静态方面进行建模的五种图之一。
(B) 状态图是活动图的一个特例,状态图中的多数状态是活动状态(C) 活动图和状态图是对一个对象的生命周期进行建模,描述对象随时间变化的行为。
(D) 状态图强调对有几个对象参与的活动过程建模,而活动图更强调对单个反应型对象建模12.类图应该画在Rose的哪种(B)视图中。
uml期末考试题及答案
![uml期末考试题及答案](https://img.taocdn.com/s3/m/063b53215bcfa1c7aa00b52acfc789eb172d9e82.png)
uml期末考试题及答案一、选择题(每题2分,共20分)1. 在UML中,用于表示对象之间关系的符号是:A. 矩形B. 菱形C. 箭头D. 圆圈答案:C2. 以下哪个不是UML的视图?A. 用例视图B. 逻辑视图C. 部署视图D. 数据视图答案:D3. 在UML中,表示类的方法的符号是:A. 圆括号B. 正方形C. 圆圈D. 三角形答案:A4. 以下哪个不是UML的图?A. 活动图B. 状态图C. 流程图D. 序列图答案:C5. 在UML中,表示聚合关系的符号是:A. 空心菱形B. 实心菱形C. 空心三角形D. 实心三角形答案:B6. 以下哪个不是UML的元素?A. 属性B. 方法C. 接口D. 函数答案:D7. 在UML中,表示泛化关系的符号是:A. 空心箭头B. 实心箭头C. 空心菱形D. 实心菱形答案:A8. 以下哪个不是UML的约束?A. 派生B. 抽象C. 接口D. 组合答案:C9. 在UML中,表示关联关系的符号是:A. 空心箭头B. 实心箭头C. 空心菱形D. 实线答案:D10. 以下哪个不是UML的交互图?A. 序列图B. 通信图C. 状态图D. 活动图答案:D二、填空题(每题2分,共20分)1. 在UML中,表示类的属性的关键字是________。
答案:属性2. 表示类之间存在依赖关系的符号是________。
答案:虚线箭头3. 在UML中,表示类的可见性,public用________表示。
答案:+4. 表示类之间存在组合关系的符号是________。
答案:实心菱形5. 在UML中,表示类的静态方法的关键字是________。
答案:static6. 表示类之间存在关联关系的符号是________。
答案:实线7. 在UML中,表示类的构造方法的关键字是________。
答案:构造8. 表示类之间存在实现关系的符号是________。
答案:空心箭头9. 在UML中,表示类的私有属性的关键字是________。
uml和模式应用考试题及答案
![uml和模式应用考试题及答案](https://img.taocdn.com/s3/m/d57cc1b03086bceb19e8b8f67c1cfad6185fe971.png)
uml和模式应用考试题及答案一、单项选择题(每题2分,共20分)1. UML中,用于描述系统的静态结构的图是()。
A. 活动图B. 用例图C. 类图D. 序列图答案:C2. 在UML中,以下哪个元素用于表示类之间的关联关系?()A. 依赖B. 实现C. 关联D. 泛化答案:C3. 以下哪个模式属于创建型模式?()A. 观察者模式B. 单例模式C. 策略模式D. 工厂方法模式答案:B4. 在UML中,以下哪个元素用于表示对象之间的交互?()A. 对象图B. 状态图C. 序列图D. 用例图答案:C5. 以下哪个模式属于结构型模式?()A. 工厂方法模式B. 单例模式C. 装饰器模式D. 策略模式答案:C6. 在UML中,以下哪个元素用于表示系统的动态行为?()A. 类图B. 用例图C. 活动图D. 组件图答案:C7. 以下哪个模式属于行为型模式?()B. 装饰器模式C. 观察者模式D. 工厂方法模式答案:C8. 在UML中,以下哪个元素用于表示系统的物理部署?()A. 部署图B. 组件图C. 用例图D. 序列图答案:A9. 以下哪个模式是解决对象创建问题的?()A. 单例模式B. 策略模式D. 装饰器模式答案:A10. 在UML中,以下哪个元素用于表示系统的静态结构和动态行为?()A. 用例图B. 活动图C. 状态图D. 时序图答案:D二、多项选择题(每题3分,共15分)11. UML中,以下哪些图用于描述系统的静态结构?()A. 类图C. 组件图D. 部署图答案:A, C12. 以下哪些模式属于创建型模式?()A. 单例模式B. 工厂方法模式C. 建造者模式D. 策略模式答案:A, B, C13. 在UML中,以下哪些元素用于表示对象之间的交互?()A. 序列图B. 通信图C. 活动图答案:A, B14. 以下哪些模式属于结构型模式?()A. 单例模式B. 代理模式C. 装饰器模式D. 策略模式答案:A, B, C15. 在UML中,以下哪些元素用于表示系统的动态行为?()A. 序列图B. 活动图C. 状态图D. 用例图答案:A, B, C三、简答题(每题10分,共30分)16. 请简述UML的主要组成部分。
《UML建模与设计模式》试卷
![《UML建模与设计模式》试卷](https://img.taocdn.com/s3/m/ae3c928150e79b89680203d8ce2f0066f5336433.png)
第 1 页 共9 页 XX 大学XX 学院20152015——2016第一学期期末考试 《UML 建模与设计模式》考试试卷(A 卷)题号题号 一 二 三 四 总分总分 评卷人 审核人审核人 得分得分一、 单项选择题(本大题共20 小题,每小题 3 分,共 60 分)1、 面向对象方法中的( D )机制使子类可以自动地拥有父类全部属性和操作。
机制使子类可以自动地拥有父类全部属性和操作。
A 、 封装封装 B B 、多态性 C 、 重载重载 D D 、继承、继承 2、 以下关于软件的说法,错误的是以下关于软件的说法,错误的是( A ) ( A )A 、软件就是程序。
、软件就是程序。
B 、与硬件不同,软件不存在磨损和老化问题。
、与硬件不同,软件不存在磨损和老化问题。
C 、大多数软件是根据客户需求定做的,而不是利用现成的部件组装成所需要的软件。
、大多数软件是根据客户需求定做的,而不是利用现成的部件组装成所需要的软件。
D 、软件是复杂的。
、软件是复杂的。
3、在进行、在进行( A )( A )相关领域的应用开发时,不推荐使用UML 建模。
建模。
A 、数值计算、数值计算B B 、工业系统、工业系统C C 、信息系统、信息系统D D 、软件系统、软件系统4、以下、以下( D )( D )不属于软件的生存期。
不属于软件的生存期。
A 、维护、维护B B 、需求分析、需求分析C C 、软件设计、软件设计D D 、意向、意向5、关于下图,说法错误的是、关于下图,说法错误的是( D )( D )A 、Reader 是类名是类名B 、borrowBook 是类的方法是类的方法C 、name 是类的属性是类的属性D 、name 是公有的是公有的6、以下图中,表示“包”这种事物的是( D )A 、B 、C 、D 、_________________________系______级________________________专业______班 姓名:_____________ 学号:____________________ -密-----------------封----------------线-------------------内-------------------不---------------------要-----------------------答-------------------题------------------------------------------------------------------------------------------------------------------------------------------------------------------本题得分本题得分7、以下图中,表示“依赖”这种关系的是( A )A 、B 、C 、D 、8、( A )图可以用来对需求建模。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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;
}
}
}。