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

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

(二) chapter 3 结构型设计模式

6. 使用组合模式设计一款使用不同国家的语言做为问候语的软件,需要一个用于用户输入的用

户图形界面。在该用户图形界面上,有各个主要国家的列表。用户可以选择一个国家,然后,单击产生问候语的按钮,程序将显示该国家见面时所使用的问候语。①使用安全形式设计,画出设计类图。②使用透明形式设计,画出设计类图。 答:①参见图 4 ②参见图 5

图 4 组合模式设计-安全形式

图 5 组合模式设计-透明模式

7. 下图所示为一个整数排序的Java程序设计类图。该设计使用类适配器模式。

问题:

(1) 请说明使用该设计有什么问题?

Java是单继承语言,不支持多继承

(2) 画出新的设计类图。

答:参见图 6

<>SortingAlgorithmsBubbleSort+bubbleSort() : int[]1..1BinarySort+binarySort() : int[]+bubbleSort() : int[]+binarySort() : int[]+superQuickSort() : int[]1..1Adapter-bubbleSorter : BubbleSort-binarySorter : BinarySort+bubbleSort() : int[]+binarySort() : int[]+superQuickSort() : int[]11

图 6 对象适配器解决多继承问题

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.

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

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