软件设计与体系结构练习题(3)

2018-12-04 22:24

8.

考察一个电源总开关的例子。为了使用方便,一个电源总开关可以控制四盏灯、一个风扇、一台空调和一台电视机的启动和关闭。通过该电源总开关可以同时控制上述所有电器设备。请使用外观模式设计该系统,画出设计类图。

答:参见图 7

SwitchFacadeClient+main()-lights[] : Light-fan : Fan-airCondition : AirConditioner-tv : Television+turnOnAll()+turnOffAll()Light-position : string+Light(in pos : string)+turnOn()+tunOff()Fan+turnOn()+turnOff()AirConditioner+turnOn()+turnOff()Television+turnOn()+turnOff()

图 7 电源开关的例子

9. 美国和加拿大的邮政编码有不同的格式,美国的邮政编码由5位阿拉伯数字组成加破折号,

再加4位阿拉伯数字组成,即美国的邮政编码形状为ddddd-dddd,其中d是介于0与9之间的整数。加拿大的邮政编码是由6位字母与数字混合组成,格式为:cdc dcd,其中第1,3,5位是英语字母,第2,4,6位是阿拉伯数字,如:M4B 1G5。假设有一个网上贸易软件,原来的客户是美国公民,但是,随着业务的扩展,将要允许加拿大公民使用该系统。假如已经有两个经过充分测试的类,一个是USZipCode,另外一个是CAPostalCode。这两个类中分别有一个方法,isValidZipCode(zip:String), 和isValidCaPostalCode(pcode: String),用于确认用户输入的邮政编码是否正确。虽然这两个接口(方法)的参数都是String类型的,但是方法名字是不同的,而且,它们的具体的确认算法是不同的。现在要写一个网上邮政编码确认程序,该程序使用一个统一的接口,允许客户程序使用该接口的时候,既可以使用美国的邮政编码又可以使用加拿大的邮政编码。请使用适配器模式进行设计,画出设计类图。

<>ZipCodeUSZipCode+isValidZipCode(in zip : String) : booleanCAPostalCode+isValidCaPostalCode(in pCode : String) : boolean+isValidZipCode(in zip : String) : boolean+isValidCaPostalCode(in pCode : String) : booleanZipCodeAdapter-usZip : USZipCode-caPostal : CAPostalCode+isValidZipCode(in zip : String) : boolean+isValidCaPostalCode(in pCode : String) : boolean

10. 假如公司需要设计一个特工信息系统。特工的信息被加密并且被存入文本文档或者数据库。

有三种方法加密特工的名字和代码,该加密名字和代码的任务由三个类完成,这三个类是EncryptedInfo1,EncryptedInfo2,EncryptedInfo3。请使用桥接模式设计该特工信息保密系统,画出设计类图。

11. 现需要设计一个可以模拟各种动物行为的机器人。目前,在机器人中已定义了一系列方法:

叫喊方法cry()、移动方法move()。如果希望在不修改已有代码的基础上使得机器人能够像狗一样叫wang(),像狗一样跑run(),使用适配器模式进行设计,绘制设计类图。

<>RobotDog+wang() : void+run() : void11+cry() : void+move() : voidDogAdapter-dog : Dog+cry() : void+move() : void

12.

设计一个飞行员信息管理系统。假设飞行员分为战斗机飞行员和轰炸机飞行员;在性别上又分为男飞行员和女飞行员。请使用桥接模式进行设计,画出设计类图。

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 行为型设计模式

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

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


软件设计与体系结构练习题(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:《计算机组装与维护》实训大纲2

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: