软件设计与体系结构练习题 - 图文

发布时间 : 星期日 文章软件设计与体系结构练习题 - 图文更新完毕开始阅读

Client<>PilotGender-pilotKind : PilotKind+getInfo() : String11<>PilotKind+info() : StringManPilot+getInfo() : StringWomanPilot+getInfo() : StringFightPilot+info() : StringBomberPilot+info() : String

13. 假设有一个设计类图如下所示。

此类图中包含了几个动物类,Tiger、Dog和Cat,它们都包含各自的功能,三个类相互协作并紧密耦合,以便完成类似于动物世界的游戏功能。请用中介者模式重新设计,保持功能不变,画出设计类图。

可将updateAll()方法修改为doGame(),在doGame()定义游戏规则。

14.

针对如下已经存在的某程序设计图,使用桥接模式重新设计该程序,并画出设计类图

client+main() : void<>MilkSize<>MilkType1..1+getOrder()+order()MedSizeMilk+getOrder()SuperSizeMilk+getOrder()CoffeeMilk+order()FragMilk+order() 15.

文件系统中的文件有不同类型,不同类型的文件其浏览方式有所区别,如文本文件和图片文件、视频文件的浏览方式就不相同。对文件夹的浏览实际上就是对其中所包含文件的浏览,而客户端可以一致地对文件和文件夹进行操作,无须关心它们的区别。请使用组合模式来模拟文件的浏览操作(display),画出设计类图。

<>*File+display() : void+add()+getChild(in index : int)+remove()TextFileImagFileVideoFile+display()+display()+display()

三) chapter 4 行为型设计模式

一个计算手机缴费的软件设计如下图所示:

1Directory+display()+add()+getChild(in index : int)+remove()

(16.

类中的type变量代表不同的客户群体,因此有不同的缴费率。因为对应于不同的客户群体,有不同的优惠收费包,例如FamilyPackage、FriendPackage和FamerPackage。方法computeFare(String num, String type)需要经常改变,原因是每个包都有不同的打折率,并且对于每个包计算费用的算法是不同的。这说明在方法computeFare(String num, String type)中,存在许多条件语句。很明显,本设计不符合开闭原则,请利用策略模式对以上的类进行重新设计,画出设计类图。 答:

client+main() : voidContext-ref : FarePackage+ComputeFare(in num : String, in type : string) : float11<>FarePackage+getFare(in num : String) : floatFamilyPackage-rate : float+getFare(in num : String) : floatFriendPackage-rate : float+getFare(in num : String) : floatFamerPackage-rate : float+getFare(in num : String) : float 17.

使用状态模式设计软件。在一个面向儿童的人/机对抗游戏中有两个角色,mood_guy代表计算机游戏软件,玩家为儿童。玩家可以容易地影响mood_guy。mood_guy有三个状态:愉快、恼怒和疯狂。当它在愉快的状态时,它将唱歌;当它在恼怒的状态时,它将告诉它的朋友,抱怨某事;当它在疯狂的状态时,它将故意损坏一些东西。mood_guy可以自动改变心情状态:如果玩家忽略它超过20秒,无论处于何种状态,mood_guy将自动进入愉快状态。mood_guy的状态也可以由玩家的行为而改变:如果它处于愉快状态,玩家给它一个酸梨,则它进入恼怒状态;如果它处于恼怒状态,玩家给它一个辣椒,它将进入疯狂状态;如果它处于疯狂状态,玩家给它一个香蕉,它将进入愉快状态。要求使用状态模式设计该问题,并且:(1)画出状态图;(2)画出设计类图,该类图中应该包含两个方法:act( )和changeMood( )。

联系合同范文客服:xxxxx#qq.com(#替换为@)