软件设计及体系结构练习题_第1页
软件设计及体系结构练习题_第2页
软件设计及体系结构练习题_第3页
软件设计及体系结构练习题_第4页
软件设计及体系结构练习题_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、-. z.软件设计与体系构造复习填空题Chapter 11.软件设计模式通常包含4个根本要素:模式名称、问题、解决方案以及效果。2.软件设计模式可以分为三个层次:架构模式、设计模式、习惯用法。3.软件设计模式是对软件设计经历的总结,是对软件设计中特定环境下反复出现的设计问题的、经过验证的、成功解决方案的描述。chapter 51.早在1968年,计算机领域的大师Dijstra指出:工程规模越大,其整体架构就越重要。2. 软件体系构造的三个根本要素是:构件、连接件、约束3. 对软件质量的关注正是软件架构师与一般的软件设计师的不同之处,一般的软件设计师主要关注软件功能的设计,并要遵循架构师给出的设

2、计准则。4. IEEE 1471-2000标准定义软件体系构造是系统的根本组织构造,包括系统构成要素、这些构成要素相互之间以及运行环境之间的关系,还包括系统设计及演化时应遵循的原则。chapter 21.创立型软件设计模式是解决_对象创立机制_的设计模式。2.创立型软件设计模式的两个主导思想:封装了系统使用的具体类的知识,隐藏这些具体类的实例被创立与结合的细节。3.简单工厂方法模式的特点是仅仅有一个具体的创立者类,并且在此类中包含一个_静态工厂_方法。4.生成器模式是一步一步创立一个复杂的对象,允许用户通过制定复杂对象的类型和内容就可以构建它们,用户不知道内部的具体构建细节5. 单例模式是指确

3、保一个仅有一个唯一的实例,并提供一个全局的访问点。6. 在单例模式中,为了防止客户程序利用构造方法创立多个对象,要将构造方法声明为private(或私有)类型。chapter 31. 构造型软件设计模式的主要目的是将不同的类和对象组合在一起,形成更大或者更复杂的构造体。2. 组合模式指将对象组合成树形构造,以表示局部-整体的层次构造。该模式使得对单个对象和组合对象的使用具有一致性。3.适配器模式可以分为两种:类适配器和对象适配器4. 类适配器模式通过继承的方式改变已经存在的接口而形成新的接口,使之适合客户类调用的需要;对象适配器模式使用调用或者聚合的方式选择调用多个类中的方法,形成新的接口。5

4、. 适配器模式与外观模式都是为了设计新的接口而存在。它们的区别在于:适配器模式是转换接口,外观模式是简化接口。chapter 41. 行为型软件设计模式解释对象之间是怎样进展交互的。2. 迭代器模式能够提供一种方法按照顺序访问一个聚合对象中的所有元素,而又不需要暴露该对象的内部表示。3. 中介者模式的要点是将所有对象之间的交互细节抽象到一个独立的类中,这个类叫做中介者类。4. 访问者模式封装了分布于多个类之间的行为。Chapter 61. 利用调用-返回风格软件体系构造设计的软件系统使用的是_分而治之_策略,其主要思想是将一个复杂的大系统分解为一些子系统,以便降低复杂度,并且增加可修改性。2.

5、 在管道-过滤器软件体系构造中,每个组件都有一组输入和输出,组件读入数据流,经过数据处理,然后产生输出数据流。3. 顺序批处理软件体系构造是数据流风格体系构造的一个子类型。在该系统种,组件为独立的程序,并且这些组件按照先后顺序处理,即只有当一个组件运行彻底完毕以后,下一个组件才能开场执行。4. 主程序-子程序软件体系构造特别关注功能的实现。面向对象软件体系构造特别关注数据与功能的封装。简答题Chapter1软件体系构造为什么重要?答:软件体系构造: 是软件相关人员进展交流的手段;(2分) 是一种高层次的设计复用手段;2分 是早期关键设计决策的表达。1分软件体系构造与软件框架的区别?答:呈现形式

6、不同:体系构造的呈现形式是一个设计规约,而框架则是程序代码。2分目的不同:体系构造的首要目的大多是指导一个软件系统的实施与开发;而框架的首要目的是为复用因此,一个框架可有其体系构造,用于指导该框架的开发,反之不然3分解释开闭原则、Liskov替换原则、依赖倒置原则答:开闭原则:构件应该对扩展具有开放性,对修改具有封闭性。(2分)Liskov替换原则:子类可以替换它们的父类。(2分)依赖倒置原则:依赖于抽象,而非具体实现。(1分)chapter2说明工厂方法、简单工厂模式、抽象工厂模式三个模式的主要区别。答:简单工厂模式只有一个工厂类,该工厂类的静态工厂方法负责所有产品的创立。(1分)工厂方法模

7、式中,一个产品类层次对应一个工厂类层次,每个具体工厂负责创立一个具体的产品。2分抽象工厂模式中,一个工厂类层次对应多个产品类层次,每个具体工厂负责一个产品簇中产品的创立。2分实现单例模式的三个关键要点是什么?答:将构造方法私有化;(1分)定义一个静态实例;2分提供一个可以返回静态实例的静态方法。2分简述生成器模式与抽象工厂模式的区别。答:前者按照步骤创立一个复杂的对象,而后者强调一类产品对象,创立一个产品族中的*个产品对象简单或复杂。3分前者将所建造的产品通常建造一个复合体最后一次性返回,而不是一点一点返回,而抽象工厂所创立的产品对象立即被返回。2分Chapter3简述外观模式与适配器模式的区

8、别?答:外观模式简化接口是为了更好地使用*个类库适配器模式转换接口的目的是将一个不适合使用的接口转换为可以被使用的接口,或者将一些接口不同但功能一样或相近的接口加以转换,以便统一使用。简述构造型模式的分类。答:分为两类:构造型类模式:关心类的组合,使用继承来组合接口或类,提供了类之间的关联方式。(2分)构造型对象模式:关心类和对象的组合,描述了如何对一些对象进展组合,从而实现新功能的一些方法。具体来说,通过关联关系,可以在一个类中定义另一个类的对象,然后通过该对象调用其方法。3分Chapter 4简述迭代器模式的主要功能?答:提供对聚合对象的迭代访问:以不同的方式遍历聚合对象,如向前、向后对同

9、一聚合同时进展多个遍历以不同的遍历策略遍历聚合多态迭代:为不同的聚合构造提供统一的迭代接口,即,通过一个迭代接口访问不同的聚合构造。简述访问者模式中形成的回调访问通路?答:visit()与accept()方法构成一个调用通路。1分visit(*):访问者类告知具体元素*类,我要访问你,即调用它的方法。2分accept(Visitor):具体元素*类告知Visitor,我承受你的访问。Visitor访问具体元素*类的目的是什么,具体元素*类不管。2分策略模式和状态模式的区别。答:策略模式用来处理一组具有一样目的但是实现方法不同的算法,这些算法方案之间一般来说没有状态变迁。2分状态模式则有所不同,

10、它实现的一个概念可以叫做动态继承,也就是继承的子类都可以发生变化。状态的变化可以由一个状态迁移图表示。2分一般来说,实现状态模式更复杂一点,用户需要仔细考虑由谁来负责状态转换问题,是由Conte*t类负责还是由状态类的超类负责,还是由状态类的子类负责。(2分)Chapter 6简述面向对象体系构造,并画出面向对象体系构造图?答:面向对象体系构造中,把系统看作是由一些对象的集合组成而不是由函数或方法组成,消息从一个对象发送到另外一个对象。每个对象都有其相关功能。一个对象是数据以对数据操作的封装体,外界通过接口与其进展交互。3分面向对象体系构造图如下:2分,下面这幅图不需要一模一样,表达清楚意思即

11、可简述主程序-子程序软件体系构造与面向对象体系构造的不同之处。答:在设计思想上的区别:主程序-子程序关注功能的实现,即系统是由一个个过程构成。面向对象体系构造关注数据与功能的封装对象。系统是由一系列对象构成,这些对象按一定规则通信,完成具体功能。3分在系统分析设计方面的区别。前者采用构造化分析设计方法如数据流图、面向数据流的设计,后者采用面向对象分析设计,使用用例图、类图、时序图等模型。2分画出MVC体系构造的一般形式的构造类图。画出应用了观察者机制的MVC体系构造设计类图。设计题chapter 2创立型设计模式一个房屋销售查询系统,以便查询不同类型的房屋的介绍、价格和地址等。为简单起见,只考

12、虑两种类型的房屋:别墅(House)和公寓(Condo),并假设每种房屋类型都包含:豪华(Super)、中等(Medium)两个等级。要求能够查看房屋信息和房屋价格,请使用创立型设计模式解决该问题,画出设计类图。答:参考REF _Ref0 h图 1图 SEQ 图 * ARABIC1 抽象工厂模式参考图假设有一个web托管公司,该公司在Windows和UNI*平台上托管效劳。该Web托管公司在这两种平台上提供三种不同类型的托管包:根本Basic、高级Senior和更高级Super。使用抽象工厂模式设计一个应用,查询该托管公司提供的不同类型的托管包功能,画出设计类图。答:参考REF _Ref8 h

13、图 2图 SEQ 图 * ARABIC2 抽象工厂模式解决win、Uni*效劳创立问题生成器模式可以用于描述肯德基KFC如何创立套餐:套餐是一个复杂对象,它一般包含主食如汉堡、牛肉饭等、配餐如新奥尔良烤翅、香辣鸡翅、吮指原味鸡等和饮料如果汁、可乐等等三个组成局部,不同的套餐有不同的组成局部,而KFC的效劳员可以根据顾客的要求,一步一步装配这些组成局部,构造一份完整的套餐,然后返回给顾客。套餐假设目前有如下几个套餐:午餐套餐(Lunch Suit)、晚餐套餐(Supper Suit)、豪华套餐(Lu*ury Suit)。请用生成器模式设计该应用,画出其设计类图。答:参见REF _Ref4 h图

14、3图 SEQ 图 * ARABIC3 生成器模式KFC套餐构造下列图所示设计类图是关于游戏软件的设计。在该设计中,SlowGameFactory类负责创立SlowFighter对象与SlowMonster对象,并且将创立完的对象以其超类类型返回给ClientGUI对象。然后,ClientGUI对象将操纵SlowFighter对象与SlowMonster对象,使得它们互相打斗。(1) 上述设计使用了什么设计模式?抽象工厂(2) 请在以上设计中添加SuperFighter和SuperMonster,SuperFighter与SuperMonster是对应的,请绘制新的设计类图。修正一下该答案*公司

15、要设计一个房屋选购系统,系统内的房屋分为三种类型:经济型Economic House、普通型Normal House与豪华型Lu*ury House。不同房型的区别表达在面积大小Area以及卧室Bedroom、卫生间Bathroom、车库Garage、花园Garden、游泳池Swimming Pool的数量上。请用生成器模式设计该选购系统,画出设计类图。chapter 3 构造型设计模式使用组合模式设计一款使用不同国家的语言做为问候语的软件,需要一个用于用户输入的用户图形界面。在该用户图形界面上,有各个主要国家的列表。用户可以选择一个国家,然后,单击产生问候语的按钮,程序将显示该国家见面时所使

16、用的问候语。使用平安形式设计,画出设计类图。使用透明形式设计,画出设计类图。答:参见REF _Ref3 h图 4参见REF _Ref8 h图 5图 SEQ 图 * ARABIC4 组合模式设计-平安形式图 SEQ 图 * ARABIC5 组合模式设计-透明模式下列图所示为一个整数排序的Java程序设计类图。该设计使用类适配器模式。问题:请说明使用该设计有什么问题?Java是单继承语言,不支持多继承画出新的设计类图。答:参见REF _Ref8 h图 5图 SEQ 图 * ARABIC6 对象适配器解决多继承问题考察一个电源总开关的例子。为了使用方便,一个电源总开关可以控制四盏灯、一个风扇、一台空

17、调和一台电视机的启动和关闭。通过该电源总开关可以同时控制上述所有电器设备。请使用外观模式设计该系统,画出设计类图。答:参见 REF _Ref5 h 图 7图 SEQ 图 * ARABIC7 电源开关的例子美国和加拿大的邮政编码有不同的格式,美国的邮政编码由5位阿拉伯数字组成加破折号,再加4位阿拉伯数字组成,即美国的邮政编码形状为ddddd-dddd,其中d是介于0与9之间的整数。加拿大的邮政编码是由6位字母与数字混合组成,格式为:cdc dcd,其中第1,3,5位是英语字母,第2,4,6位是阿拉伯数字,如:M4B 1G5。假设有一个网上贸易软件,原来的客户是美国公民,但是,随着业务的扩展,将要

18、允许加拿大公民使用该系统。假设已经有两个经过充分测试的类,一个是USZipCode,另外一个是CAPostalCode。这两个类中分别有一个方法,isValidZipCode(zip:String), 和isValidCaPostalCode(pcode: String),用于确认用户输入的邮政编码是否正确。虽然这两个接口方法的参数都是String类型的,但是方法名字是不同的,而且,它们的具体确实认算法是不同的。现在要写一个网上邮政编码确认程序,该程序使用一个统一的接口,允许客户程序使用该接口的时候,既可以使用美国的邮政编码又可以使用加拿大的邮政编码。请使用适配器模式进展设计,画出设计类图。

19、假设公司需要设计一个特工信息系统。特工的信息被加密并且被存入文本文档或者数据库。有三种方法加密特工的名字和代码,该加密名字和代码的任务由三个类完成,这三个类是EncryptedInfo1,EncryptedInfo2,EncryptedInfo3。请使用桥接模式设计该特工信息*系统,画出设计类图。 现需要设计一个可以模拟各种动物行为的机器人。目前,在机器人中已定义了一系列方法:叫喊方法cry()、移动方法move()。如果希望在不修改已有代码的根底上使得机器人能够像狗一样叫wang(),像狗一样跑run(),使用适配器模式进展设计,绘制设计类图。设计一个飞行员信息管理系统。假设飞行员分为战斗机

20、飞行员和轰炸机飞行员;在性别上又分为男飞行员和女飞行员。请使用桥接模式进展设计,画出设计类图。 假设有一个设计类图如下所示。此类图中包含了几个动物类,Tiger、Dog和Cat,它们都包含各自的功能,三个类相互协作并严密耦合,以便完成类似于动物世界的游戏功能。请用中介者模式重新设计,保持功能不变,画出设计类图。可将updateAll()方法修改为doGame(),在doGame()定义游戏规则。 针对如下已经存在的*程序设计图,使用桥接模式重新设计该程序,并画出设计类图 文件系统中的文件有不同类型,不同类型的文件其浏览方式有所区别,如文本文件和图片文件、视频文件的浏览方式就不一样。对文件夹的浏

21、览实际上就是对其中所包含文件的浏览,而客户端可以一致地对文件和文件夹进展操作,无须关心它们的区别。请使用组合模式来模拟文件的浏览操作(display),画出设计类图。 chapter 4 行为型设计模式一个计算手机缴费的软件设计如下列图所示:类中的type变量代表不同的客户群体,因此有不同的缴费率。因为对应于不同的客户群体,有不同的优惠收费包,例如FamilyPackage、FriendPackage和FamerPackage。方法puteFare(String num, String type)需要经常改变,原因是每个包都有不同的打折率,并且对于每个包计算费用的算法是不同的。这说明在方法pu

22、teFare(String num, String type)中,存在许多条件语句。很明显,本设计不符合开闭原则,请利用策略模式对以上的类进展重新设计,画出设计类图。答:使用状态模式设计软件。在一个面向儿童的人/机对抗游戏中有两个角色,mood_guy代表计算机游戏软件,玩家为儿童。玩家可以容易地影响mood_guy。mood_guy有三个状态:愉快、恼怒和疯狂。当它在愉快的状态时,它将唱歌;当它在恼怒的状态时,它将告诉它的朋友,抱怨*事;当它在疯狂的状态时,它将成心损坏一些东西。mood_guy可以自动改变心情状态:如果玩家忽略它超过20秒,无论处于何种状态,mood_guy将自动进入愉快状

23、态。mood_guy的状态也可以由玩家的行为而改变:如果它处于愉快状态,玩家给它一个酸梨,则它进入恼怒状态;如果它处于恼怒状态,玩家给它一个辣椒,它将进入疯狂状态;如果它处于疯狂状态,玩家给它一个香蕉,它将进入愉快状态。要求使用状态模式设计该问题,并且:1画出状态图;2画出设计类图,该类图中应该包含两个方法:act( )和changeMood( )。设计一个使用几种排序算法对整数进展排序的程序。该程序可以计算出每种排序算法的执行时间,以便比拟各种排序算法的速度。该程序可以支持插入排序InsertionSort、快速排序QuickSort、冒泡排序BubbleSort、堆排序HeapSort。请

24、使用策略模式进展设计,画出设计类图。 利用状态模式设计的Weather State的实例。在本例中,考虑天气状态。天气状态可以分为:晴天状态(Sunny State),下雨状态(Rainy State),刮风状态(Windy State),下雪Snowing State。在晴天状态,阳光普照;在雨天状态乌云密布,下雨不停;在刮风状态,大风刮得天昏地暗;在下雪状态,大雪纷飞。用状态模式封装天气状态。为了表达天有不测风云的思想,假设天气状态是随机改变的,即在四种状态之间的切换是根本没有规律可循的,因此,考虑在抽象类WeatherState中的方法changeState(Conte*t c*t)的实

25、现中,使用能产生随机整数的Random类。因此,具体状态的改变,由抽象类WeatherState负责实现。请采用常规的状态模式进展设计,画出设计类图。Conte*tConte*t-state: WeatherState+getState()+doAction():voidstateSunnyState+action():String+changeState()+setState():StringWeatherState+createStateObj()+changeState(Conte*t c*t ):void+setState():String+getCurrentState():Stri

26、ng+action(): String-ct*: Conte*tWindyState+action(): String+changeState()+setState():StringRainyState+act(): String+changeState()+setState():StringSnowingState+act(): String+changeState()+setState():String随机生成一个整数矩阵,矩阵可以看做是聚合类型的数据。使用迭代器模式设计,对该矩阵进展不同的遍历:1奇数遍历(OddIterator),访问并统计矩阵中的所有奇数。2偶数遍历(EvenIterator),访问并统计矩阵中的所有偶数。3斜对角线遍历(DiagonalIterator), 按照斜对角线迭代遍历矩阵。请应用迭代器模式进展设计,画出设计类图。室内温度控制软件设计。室内温度控制需要具备窗户、风扇、空调的自动开启与关闭功能。因此,该应用需要设计三个类,分别用于封装窗户、风扇、空调。请利用命令模式设计该应用,画出设计类图。 下列图所示是一个调用排序算法的设计图。在实现时,调用者Invoker通过条件判断语句调用相应的排序算法,调用者Invoker和接收者Receiver之间是紧耦合的。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论