面向对象分析及设计复习题_第1页
面向对象分析及设计复习题_第2页
面向对象分析及设计复习题_第3页
面向对象分析及设计复习题_第4页
面向对象分析及设计复习题_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

1、-. z.面向对象分析与设计习题一、单项选择题1.到20世纪末,面向对象软件工程已经逐渐开展成熟,特别是D的形成和广泛使用,采用面向对象分析与编程的软件开发方法已成为软件开发的主流方法。A.Simula67语言B.Smalltalk语言C.Java语言D.统模语言(UML)的标准2.面向对象的运动产生了多种面向对象的语言,其中C是一种混合性面向对象语言,既支持面向过程的程序设计方法,又支持面向对象的程序设计方法,有广泛应用的根底和丰富开发环境的支持,因而使面向对象的程序设计能得到很快普及。C.C+D.Java3以下不属于面向对象技术的根本特征的是B。A.封装性B.模块性C.多态性D.继承性4.

2、面向对象程序设计将描述事物的数据与(C)封装在一起,作为一个相互依存、不可分割的整体来处理。A.信息B.数据隐藏C.对数据的操作D.数据抽象5.关于面向对象方法的优点,以下不正确的表达是C。A.与人类习惯的思维方法比拟一致B.可重用性好C.以数据操作为中心D.可维护性好6.D是从用户使用系统的角度描述系统功能的图形表达方法。A.类图B.对象图C.序列图D.用例图7.(C)是表达系统类及其相互联系的图示,它是面向对象设计的核心,建立状态图、协作图和其他图的根底。A对象图B.组件图C.类图D.配置图8.D描述了一组交互对象间的动态协作关系,它表示完成*项行为的对象和这些对象之间传递消息的时间顺序。

3、A对象图B.协作图C.状态图D.序列图9.D就是用于表示构成分布式系统的节点集和节点之间的联系的图示,它可以表示系统中软件和硬件的物理架构。A.组件图B.协作图C.状态图D.配置图10.使用UML进展关系数据库的B时,需要设计出表达持久数据的实体类及其联系,并把它们映射成为关系数据库表Table)、视图(View)等。A.业务UseCase模型设计B.逻辑数据模型设计C.物理数据模型设计C.物理实现设计11.一个设计得好的OO系统具有BA.低聚、低耦合的特征B.高聚、低耦合的特征C.高聚、高耦合的特征D.低聚、高耦合的特征12.下面不是UML的根本构成元素。AA.控制语言B.根本构造块C.规则

4、D.公共机制13.面向对象的特点主要概括为C。A.可分解性、可组合性、可分类性B.继承性、封装性、多态性C.抽象性、继承性、封装性、多态性D.封装性、易维护性、可扩展性、可重用性14构成对象的两个主要因素是A。A.属性和效劳B.标识和容C.继承和多态D.消息和封装15.以下关于面向对象方法中描述中错误的选项是C。A.使用设计模式有助于在软件开发中应用面向对象技术B.选择面向对象程序设计语言时需要考虑开发人员对其的熟悉程度C.UML作为一种可视化建模语言需要与RUP开发过程同时使用D.目前在软件生命周期的分析、设计、实现和测试中均可以应用面向对象方法16.顺序图主要可以为设计人员提供A信息。A.

5、消息发送的顺序B.*个方法的执行流程C.类之间关联关系的多重性D.*个对象在不同状态之间的转移17.类和接口的关系类似于下面哪种类型的关系D。A.关联association和聚集aggregationB.关联association和组合positionC.脚本scenario和用例usecaseD.包Package和子系统subsystem18.在类图中,那个类图中的类Order所生成的代码具有PublicclassOrderPublicCustomerrecipient;的形式?AA.B.C.D.19.下面那个图符表示UML中的实现关系?CA.B.C.D.20.一个银行业务系统采用如图琐事的

6、配置图,则错误的选项是DA.与GUI有关的类应该部署在BranchClient上B.这个图表示一个三层的体系构造,不管BranchClient、FinancialAppServer、DatabaseServer是运行在同一台机器上还是在不同机器上C.为了系统的可伸缩性scalability,与业务逻辑有关的对象应该部署在FinancialAppServer上D.为了系统的可伸缩性,与业务逻辑有关的对象应该部署在BranchClient上21.关于用例与类的比照中D是错误的。A都属于模型构造元素B都存在继承关系C类描述系统的局部静态视图,用例描述系统动态的行为视图D类描述的是系统的部构成,用例也

7、可以描述系统的部构成22.Innovation公司正在为Rose开发插入件,使得Rose可以把OOA、OOD模型以各种图形格式导出,如JPEG格式、BMP格式、GIF格式等。在导出时,会根据不同的算法来生成相应的图形文件,这些算法很复杂。为了描述这些算法,在下面这些图中,那个是最适合的?A注:活动图可以用来描述细节A.活动图B.状态图C.类图D.用例图23.计算机puter由中央处理器、存、软盘、硬盘、显示器、键盘、鼠标等组成。则puter类和其他类CPU、RAM、FloppyDrive、HardDisk、Monitor、Keyboard、Mouse之间的关系是:DA.泛化关系Generali

8、zationB.实现关系RealizationC.包含关系InclusionD.聚集关系Aggregation24.在状态图中不能表示下面那些概念?DA.动作actionB.事件eventC.转移transitionD.类class25.在数据库设计的阶段开场考虑具体的数据库管理系统DBMS的特性。CA.需求分析B.概念设计C.逻辑设计.D物理设计26在UML中,有3种根本构造块,分别是A A. 事物、关系和图 B. 注释、关系和图 C. 事物、关系和构造 D. 注释、关系和构造27在UML中,有四种关系,下面哪个不是B A.依赖关系 B.继承关系 C.泛化关系 D.实现关系28下面哪个不是U

9、ML中的静态视图 A.状态图 B.用例图 C.对象图 D.类图 29在用例之间,会有三种不同的关系,以下哪个不是它们之间可能的关系 D A.包含includeB.扩展e*tend C.泛化generalization D.关联connect 30用例Use-case用来描述系统在事件做出响应时所采取的行动。用例之间是具有相关性的。在一个订单输入子系统中,创立新订单和更新订单都需要检查用户是否正确。则,用例创立新订单、更新订单与用例检查用户之间是B关系 A.扩展e*tend B.包含include C.分类classification D.聚集aggregation31UML中类的有三种,下面哪

10、个不是其中之一B A.实体类 B.抽象类 C.控制类 D.边界类32阅读图例,判断以下哪个说法是错误的。c A.读者可以使用系统的还书用例 B.每次执行还书用例都要执行图书查询用例 C.每次执行还书用例都要执行交纳罚金用例 D.执行还书用例有可能既执行图书查询用例,又执行交纳罚金用例 33关于协作图的描述,以下哪个不正确B A.协作图作为一种交互图,强调的是参加交互的对象的组织; B.协作图是顺序图的一种特例 C.协作图中有消息流的顺序号; D.在ROSE工具中,协作图可在顺序图的根底上按F5”键自动生成;34. 设计模式具有的优点a。A适应需求变化 B.程序易于理解C减少开发过程中的代码开发

11、工作量 D.简化软件系统的设计35. 设计模式一般用来解决什么样的问题(a)。A.同一问题的不同表相 B不同问题的同一表相C.不同问题的不同表相 D.以上都不是36. 设计模式的两大主题是(d)。A.系统的维护与开发 B 对象组合与类的继承C.系统架构与系统开发D.系统复用与系统扩展37. 以下哪些问题通过应用设计模式不能够解决 。cA指定对象的接口 B针对接口编程C确定软件的功能都正确实现 D设计应支持变化38. 外观模式的作用是b。A当不能采用生成子类的方法进展扩大时,动态地给一个对象添加一些额外的功能。B为了系统中的一组功能调用提供一个一致的接口,这个接口使得这一子系统更加容易使用。C保

12、证一个类仅有一个实例,并提供一个访问他的全局访问点。D在方法中定义算法的框架,而将算法中的一些操作步骤延迟到子类中实现。39. Faade外观模式的意图是a。A. 希望简化现有系统的使用方法。你需要定义自己的借口。B将一个无法控制的现有对象与一个特定借口相匹配。C. 将一组实现局部从另一组使用它们的对象中别离出来。D你需要为特定的客户或情况提供特定系列的对象。40. Adapter适配器模式的意图是B。A. 希望简化现有系统的使用方法。你需要定义自己的借口。B将一个无法控制的现有对象与一个特定借口相匹配。C. 将一组实现局部从另一组使用它们的对象中别离出来。D你需要为特定的客户或情况提供特定系

13、列的对象。41. 下面不属于创立型模式的有C。A抽象工厂模式 Abstract Factory B工厂方法模式Factory MethodC适配器模式 AdapterD单例模式Singleton42. 将一个类的接口转换成客户希望的另一个接口。这句话是对以下哪种模式的描述C。A. 策略模式StrategiesB桥接模式BridgeC适配器模式AdapterD单例模式Singleton43. 以下关于构造型模式说法不正确的选项是 。BA构造型模式可以在不破坏类封装性的根底上,实现新的功能。B构造型模式主要用于创立一组对象。C构造型模式可以创立一组类的统一访问接口。D构造型模式可以在不破坏类封装性

14、的根底上,使得类可以同不曾估计到的系统进展交互。44. 关于继承表述错误的选项是:D。A.继承是一种通过扩展一个已有对象的实现,从而获得新功能的复用方法。B.泛化类超类可以显式地捕获那些公共的属性和方法。特殊类子类则通过附加属性和方法来进展实现的扩展。C.在一定意义上说破坏了封装性,因为这会将父类的实现细节暴露给子类。D.继承本质上是白盒复用,对父类的修改,不会影响到子类。45. 在不破坏类封装性的根底上,使得类可以同不曾估计到的系统进展交互。主要表达在D 。A外观模式Facade B装饰模式(Decorator)C策略模式Strategies D桥接模式(Bridge)46. 行为类模式使用

15、B在类间分派行为。A接口 B继承机制 C对象组合 D委托47. 下面的类图表示的是哪个设计模式?D。A抽象工厂模式Abstract Factory B观察者模式(Observer)C策略模式Strategies D桥接模式(Bridge)48. Bridge桥接模式的意图是C。A. 希望简化现有系统的使用方法。你需要定义自己的借口。B将一个无法控制的现有对象与一个特定借口相匹配。C. 将一组实现局部从另一组使用它们的对象中别离出来。D你需要为特定的客户或情况提供特定系列的对象。49. 静态工厂的核心角色是A。A.抽象产品B.具体产品C.静态工厂D.消费者50. 以下属于创立型模式的是A。A抽象

16、工厂模式Abstract Factory B 装饰模式(Decorator)C外观模式(Facade) D桥接模式(Bridge)51. 下面的类图表示的是哪个设计模式?A。A抽象工厂模式 B观察者模式C 策略模式 D桥接模式52. Abstract Factory抽象工厂模式的意图是D。A. 希望简化现有系统的使用方法。你需要定义自己的借口。B将一个无法控制的现有对象与一个特定借口相匹配。C. 将一组实现局部从另一组使用它们的对象中别离出来。D提供一个创立一系列相关或相互依赖对象的接口,而无需指定它们具体的类53. 在根据不同的机器选择设备驱动程序的案例中,以下表达不准确的是(D)。A. 可

17、以使用switch语句选择驱动程序.B. 可以使用继承来实现选择驱动程序,但它可能会产生类组合爆炸问题.C. 可以选择抽象工厂模式实现,且能防止组合爆炸问题.D. 使用继承的解决方案要比switch语句有更多的优势.54. 应用设计模式的一个优点是A。A适应需求变化 B.程序易于理解C减少开发过程中的代码开发工作量 D.简化软件系统的设计55. 当我们想创立一个具体的对象而又不希望指定具体的类时,可以使用A模式。A.创立型 B.构造型 C行为型 D.以上都可以56. 在观察者模式中,表述错误的选项是C。A.观察者角色的更新是被动的。B.被观察者可以通知观察者进展更新C.观察者可以改变被观察者的

18、状态,再由被观察者通知所有观察者依据被观察者的状态进展。D.以上表述全部错误。57. 下面的类图表示的是哪个设计模式?D。A 策略模式Strategies B 装饰模式DecoratorC 桥接模式Bridge D 观察者模式Observer58. 当我们想创立一个具体的对象而又不希望指定具体的类时,可以使用A模式。A.创立型 B.构造型C行为型 D.以上都可以59. 以下模式中,属于行为模式的是(B)。A.工厂模式 B观察者C适配器 D 以上都是60. Observer模式不适用于D。A当一个抽象模型存在两个方面,其中一个方面依赖于另一方面,将这二者封装在独立的对象中以使它们可以各自独立的改

19、变和复用。B当对一个对象的改变需要同时改变其他对象,而不知道具体有多少个对象有待改变时。C当一个对象必须通知其它对象,而它又不能假定其它对象是谁,也就是说你不希望这些对象是紧耦合的。D一个对象构造包含很多类对象,它们有不同的接口,而想对这些对象实施一些依赖于其具体类的操作。二、判断题1.一个状态图最多只能由一个初态和一个终态。F2.协作图中的消息必须要有消息顺序号。(T)3.两个参与者actor之间可以有包含include关系、扩展e*tend关系或泛化generalization关系,而包含关系和扩展关系是依赖dependency关系的版型。(F)4.参与者actor和用例usecase之间

20、的关系是关联association关系。T5.类A和类B之间的关系如图1所示,则称类B中的getName()方法是对类A中的getName()方法的重载overload。F图1getName方法之间的关系图2活动图6.如图2所示,活动Gesture和Streamaudio可以并发进展。T7.一个软件系统,如果只有源代码,缺乏其他相应的辅助文档,如缺乏顺序图和类图,则可以利用Rose进展逆向工程得到顺序图和类图,但得到的顺序图和类图会比拟简单。F8.CMM描述了五个级别的软件过程成熟度,即初始级、可重复级、已定义、已管理级、优化级。T9.UML由用例视图、物理视图、组件视图、进度视图和配置视图组

21、成。F10.在设计类图时,可以不用对类图中的每个关联进展命名,但如果需要命名的话,最好用一个动词给关联命名。T11. 适配器模式属于创立型模式。(F)12. 在设计模式中,效果只是指原因和结果。(T)13. 设计模式使代码编制不能真正工程化。(F)14. 设计模式的两大主题是系统复用与系统扩展。(T)15. Faade外观模式不仅可以为方法调用创立更简单的接口,还可以减少客户必须处理的对象数量。(T)16. 外观模式,当不能采用生成子类的方法进展扩大时,动态地给一个对象添加一些额外的功能。(F)17. Faade模式为子系统中的一组接口提供的界面可能不一致。(F)18. Faade外观模式只能

22、为方法调用创立更简单的接口,不能减少客户必须处理的对象数量。F19. 对象适配器模式是合成聚合复用原则的典型应用。(T)20. Adapter模式使原本由于接口不兼容而不能一起工作的那些类可以一起工作。(T)21. Faade模式和Adapter模式是一样类型的包装器。(F)22. Adapter模式不是必须针对*个接口进展设计。(F)23. 继承本质上是白盒复用,对父类的修改,不会影响到子类。(F)24. 继承是一种通过扩展一个已有对象的实现,从而获得新功能的复用方法。(t)25. 抽象工厂模式提供了一系列相关或相互依赖对象的接口且必须指定他们具体的类。F26. Abstract Facto

23、ry抽象工厂模式确保系统总能根据当前的情况获得适宜的对象。T27. 在Abstract Factory抽象工厂模式中,客户对象不需要知道向谁请求需要的对象如何使用这些对象。F28. Decorator装饰模式的意图是为一个对象连接附加的职责。F29. 每个Decorator对象在被装饰的功能之前或之后执行自己的附加功能。T30. Decorator装饰模式适用性是表示对象的局部-整体层次构造。F三、填空题1.面向对象开发方法一改正去传统的以_功能分析_为根底的_面向过程_的构造化分析与设计方法,它模拟人们理解和处理客观世界的方式来分析问题,把系统视为一系列_对象_的集合,其_面向对象的设计_又

24、将分析的结果映射到*种面向对象实现工具的构造上,使映射过程有着比拟直接的对应关系,使分析者、设计者和编程者都可使用一样的_概念_,从而使面向对象的软件开发能比拟自然地模拟客观世界的活动,使问题描述空间与_解空间_在构造上尽可能一致。因此,采用面向对象方法可以更有效地开发大型软件系统。面向对象方法的_封装_、_继承_、_多态_等机制不仅支持软件复用,而且使软件维护工作可靠有效,可实现软件系统的柔性制造,更好地克制_软件危机_。因此,它已成为成熟的广为采用的软件开发方法。2.对象是客观实体的抽象表示,是由_描述对象属性的数据_和_对这些数据进展的操作行为_两局部组成。而_类_是对具有一样属性和行为

25、的一组对象的抽象描述。因此,它可作为一种用户自定义类型和创立对象的样板,而按照这种样板所创立的一个个具体对象就是类的_实例_。通过_继承_关系又可形成一种类层次构造。3.UML中用于描述系统的静态建模的视图称为静态视图,包括_用例图_、_类图_、_对象图_、_包图_和_构件图_。4. UML 从不同的视角为系统架构建模,可产生九种视图:_、_、_、_、_、 _、_、_、_。5. _是用来反映假设干个对象之间动态协作关系的一种交互图。它主要反映对象之间已发送消息的先后次序和对象之间的交互过程。_是用来描述实现*些效劳所涉及的对象及其相互之间的关系(包括消息通信)的动态视图。建模者可以选择_来反映

26、对象之间的协作关系;如果需要强调时间和序列,最好选择_;如果需要强调上下文相关,最好选择_。6. 适配器模式,分为类的适配器和对象的适配器两种实现。其中类的适配器采用的是继承关系,而对象适配器采用的是组合聚合 关系。7. Adapter模式有两种类型有 :对象Adapter模式、类Adapter模式。8. UML是一种用来创立程序模型的图像语言。9. Adapter适配器 模式使原本接口不兼容而不能一起工作的类可以一起工作。10. 适配器模式,分为类的适配器和对象的适配器两种实现。其中类的适配器采用的是继承关系,而对象适配器采用的是组合聚类关系。11. 在存在继承关系的情况下,方法向(超类方向

27、)集中,而数据向子类方向集中。12. 在进展设计以应对变化的过程中,应该遵循两条根本策略:找出变化并封装变化点;优先使用对象组合,而不是类继承。13. 封装性好的代码更容易测试,因为它与其他代码没有耦合。14. 抽象工厂模式提供了一系列相关或相互依赖对象的接口而无需指定他们具体的类。15. 工厂模式分为简单工厂,工厂方法,( 工厂方法)三种类型。四.简答题1.简述面向对象软件开发方法的优点。2.简述面向对象技术的三大机制。答:1封装性(encapsulation)所谓封装就是把对象的属性和行为结合成一个独立的单位,使外界不能直接访问或修改这些数据和代码,外界只能通过对象提供的接口函数来改变或获

28、取对象的属性数据,这就实现了消息隐蔽。2继承性如果在一个已定义的类上,增加一些特殊属性或操作,可以形成一个新的类,这个类不仅继承了前一个类的全部特征,而且具有新的特性,因此可看作前一个类的特例,是对前一个类的继承。前一个类称为父类,新产生的类叫做子类。通过继承关系可形成一种类层次构造,叫做继承构造。3多态性在类层次构造的不同类中,可用一样的函数名实现功能不同的函数。3.简述OOA模型的层次构造。答:OOA模型采用五层次构造,它们分别是:1对象-类层划分待开发系统及其环境信息的根本构造单位,标出反映问题域的对象和类,并用符号进展规的描述,用信息提供者熟悉的术语为对象和类命名。2属性层定义对象和*

29、些构造中的数据单元,继承构造中所有类的公共属性可放于通用类中。标识对象类必需的属性并放在适宜的继承层次上,属性的特殊限制和实例连接关系也应标识出来。3效劳层表示对象的效劳或行为,即是要定义类上的操作。4构造层标识现实世界中对象之间的关系。当一个对象是另一个对象的一局部时,用整体-局部关系表示;当一个类属于另一个类时,用类之间继承关系表示。5主题层可将相关类或对象划分为一个主题。4.简述OOD模型的总体构造,并画图表示。OOD体系构造的各个局部容:(1)问题论域局部,在OOA模型的根底上,细化分析结果,设计一组构成底层应用模型的类和对象。2人机交互局部:设计用户界面模型,该用户界面模型中的类和对

30、象提供实现人机交互操作的接口函数。用户界面设计包括菜单设计、窗口设计、输入/输出界面设计等等。3任务管理局部:建立一些类,用以负责处理操作系统级的并发问题、中断、调度以及其它与特定平台有关的问题。4数据管理局部:提供数据管理系统中存储和检索对象的根本构造,包括对永久性数据的访问和管理。数据管理设计包括:数据存放设计:数据存放设计选择数据存放的方式文件存放、关系数据库表格存放或面向对象的数据库存放。设计相应的操作。为每个需要存储的对象和类增加用于存储管理的属性和操作,在类和对象的定义中加以描述。5.分析下面的类图,画出新的类图,将原图中的多对多关系转换为1:M一对多关系。答案:6信用卡可能处于开

31、放和关闭状态,其中开放状态可以直接进入关闭状态,而从关闭状态必须提供密码验证才能进入开放状态。开放状态又包括透支和正常状态之间的变化,当剩余金额少于零、或者使用额度大于剩余金额、或者结算余额小于零时进入透支状态,反之则为正常状态。画出信用卡的状态图。6分7.请判断以下类图中的类关系是否适宜,并说明理由。1飞机有机翼、机身、驾驶舱2商场里的电器。1台电器可以是1台洗衣机,也可以不是;1台电器可以是1台电视机,也可以不是;1台电器可以是1台空调,也可以不是;3公司的员工很多,包括程序员、分析员、工程经理1飞机有机翼、机身、驾驶舱应改为组合2商场里的电器。1台电器可以是1台洗衣机,也可以不是;1台电

32、器可以是1台电视机,也可以不是;1台电器可以是1台空调,也可以不是;应该为泛化3公司的员工很多,包括程序员、分析员、工程经理应改为泛化8.假设你从垃圾堆里捡到这样一小纸片如以下图所示。根据现有信息尽可能判断:1小车类有哪几个操作?2指挥小车UC类的执行任务操作要做哪些工作?采用伪代码描述图时序图参考答案:1小车类有哪几个操作?返回小车当前位置转向和前进2指挥小车UC类的执行任务操作要做哪些工作?采用伪代码描述移动任务:更新行走断表和目的地移动任务:判断现有信息足以让小车行走小车:放回小车当前位置小车:验证小车尚未到达目的地移动:根据但前位置及断表信息计算出速度、角度小车:转向和前进9. 简述统

33、模语言UML的优点。10. 简述面向对象技术的三大机制。11. 简述面向对象分析的根本步骤。12. 简述OOD模型的总体构造,并画图表示。13. 应用UML进展系统分析和设计所需建立视图有那几种?14.简述开闭原则的根本思想。请举出一个使用了软件开闭原则的软件设计模式,其中何处表达了开闭原则。答:开闭原则:软件实体应当对扩展开放,而对修改关闭,开-闭原则要求软件系统能够在不需要修改原有类的根底上,通过增加类到达扩展功能的目的。Abstract factory表达了这个原则,如果想增加一类新的products,只需在product类体系中增加各个products,然后在factory类体系构造中

34、增加一个concrete factory就可以了,而不需要对现有类做任何修改,The Open-closed principleocp在不改动过模块源代码的情况下扩展模块的行为。软件实体类模块 函数等应该是可以扩展的,但是不可以修改的。15.简述依赖例转原则的根本思想。请举出一个使用了软件依赖原则的软件设计模式,其中何处表达了依赖原则。答:依赖倒置原则的根本思想是:高层模块不应该依赖于低层模块,二者都应该依赖于抽象。抽象不应该依赖于细节,细节应该不依赖于抽象。Tomplate method就表达了这个原则,它定义了一个操作中的算法骨架,而将一些步骤延迟到子类中,template method使

35、得子类不改变一个算法的构造,即可重定义该算法的*些特定步骤。16.什么是单一职责原则?请举出一个使用了单一职责原则的软件设计模式,其中何处表达了单一职责原则。答:根本思想:SRP使得一个类或一个模块承当的责任尽可能的少,使尽可能少的因素或动机影响该类或该模块,即增大类或模块的聚性,减少其耦合度,SRP是所有原则中最简单的之一,也是最难正确运用的之一。MAND模式表达了SRP原则,大多数类都是一组方法和相应的一组变量的结合,而该模式只是封装了一个没有任何变量的函数,它对函数的关注超过了类,将一个请求封装为一个对象,从而可用不同的请求对客户进展参数化。17.软件复用可采用类的继承方式和类的聚合方式

36、,比拟两者的优缺点。答:聚合:一个对象拥有另一个对象或对另一个对象负责即一个对象包含另一个对象或是另一个对象的一局部并且聚合对象和其所有具有一样的生命周期即所谓的同生共死关系。聚合复用优点:容器类仅能通过被包含对象的接口来对其进展访问。黑盒复用,因为被包含对象的部细节对外是不可见。包装性好。实现上的相互依赖性比拟小。每一个类只专注于一项任务。通过获取指定其他的具有一样类型的对象的使用,可以在运行期间动态地定义对象的组合。聚合的缺点:导致系统中的对象过多 为了能将多个不同的对象作为组合块来使用,必须仔细地对接口进展定义。类继承:是一种通过扩展一个已有对象的实现,从而获得新功能的复用方法。继承的优

37、点:容易进展新的实现,因为其大多数可继承而来 易于修改或扩展那些被复用的实现。继承的缺点:破坏了封装性,因为这会将父类的实现细节暴露给子类 白盒复用,因为父类的部细节对于子类而言通常是可见的 当父类的实现更改时,子类也不得不随之更改 从父类继承来的实现将不能在运行期间进展改变。18.画出工厂方法模式的构造图。什么情况下适合使用工厂方发模式?其中product:为工厂模式所要创立的对象类型定义一个接口。Concrete product:实现product接口。Creator:声明工厂方法factory method返回值为product的一个对象。Concrete creator:覆写facto

38、ry Method(),返回值为concrete product 的一个具体实例。在下面情况下你可以考虑使用工厂方法模式: 1) 当客户程序不需要知道要使用对象的创立过程。 2) 客户程序使用的对象存在变动的可能,或者根本就不知道使用哪一个具体的对象。19.画出合成模式posite的构造图。举例说明一个可以应用合成模式的软件设计实例,说明其中各角色的作用。实例:计算机和立体组合音响这样的设备经常被组装成一局部整体层次构造或者是容器层次构造,例如:底盘可以包含驱动装置和平面板,总线含有多个插件,机柜包括底盘、总线等。这样构造很自然的用posite模式进展模拟。Equipment类为在局部整体层次

39、构造中的所有设备定义一个接口。Equipment声明一些操作返回一个设备的属性,例如它的能是消耗和价格。子类为指定的设备实现了这些操作,Equipment还声明了一个Create Iterator 操作,该操作为访问它的零件返回一个Iterator ,这个操作的缺省实现返回一上NullIterator,它在空集上迭代。posite Equipment是包含其它设备的基类,它也是Equipment的子类。20.简述门面模式Facade和中介者模式Mediator的根本思想,两者的差异何在?答:门面模式facade又称外观模式。根本思想:为子系统中的一组接口提供一个一致的界面, Facade模式定

40、义了一个高层接口,这个接口使得这一子系统更加容易使用。中介者模式根本思想:Mediator Pattern 中文译为中介者模式、调停者模式。调停者模式的定义是:用一个调停对象来封装一系列的对象交互。调停者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。简单点来说,将原来两个直接引用或者依赖的对象拆开,在中间参加一个调停对象,使得两头的对象分别和调停对象引用或者依赖。两者的差异: 从目的上看,调停者模式与门面模式有些相似。 但是门面模式是介于客户程序与子系统之间的,而调停者模式是介于子系统与子系统之间的。这也注定了它们有很大的区别:门面模式是将原有的复杂逻辑提取

41、到一个统一的接口,简化客户对逻辑的使用。它是被客户所感知的,而原有的复杂逻辑则被隐藏了起来。而调停者模式的参加并没有改变客户原有的使用习惯,它是隐藏在原有逻辑后面的,使得代码逻辑更加清晰可用。21.简述观察者模式的根本思想,如何实现当目标对象发生变化时多个观察者对象的同步更新?画出他们之间的协作图。1Observer观察者根本思想:对象间的一种一对多的依赖关系。当一个对象的状态发生变化时,所有依赖于它的对象都得到通知并自动更新。2协作:当Concrete Subject发生任何可能导到其参观者与其本身状态不一致的改变时,它将通知它的各个观察者。在得到一个具体的目标改变通知后,Concrete

42、Object对象可向目标对象查询信息,Concrete Object使用这个些信息以使它的状态与目标对象的状态一致。3协作图:22.举一适合使用State模式的例子。与不使用该模式相比,有哪些优点?举例:抽象状态类定义了一个抽象方法写程序与不使用该模式相比优点:State模式将特定的状态相关的行为封装在一个类中,由于所有状态相关的代码都存在于*个concrete state中,所以通过定义新的子类可以很容易的增加新的状态和转换。23.有哪些模式的使用可以使得类的复用性增强?说明你的理由。策略模式strategy 属于对象行为型模式,主要定义一系列的算法,把这些算法一个个封装成拥有共同接口的单独

43、的类,并使他们之间互换,客户端调用他们的时候互不影响。算法使用和算法别离,即将变化的具体算法封装起来,降低了代码的耦合度,算法提取起来,使算法得到重用。中介者模式mediator 用一个调停对象来封装一系列的对象交互。调停者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。即,将原来的两个直接引用或者依赖的对象拆开,在中间参加一个调停对象,使得两头的对象分别和调停对象引用或者依赖。提高了原有系统的可读性,将原有系统的多对多转化为一对多,提高了代码的可复用性。适配器Adapter模式 是的原本由于接口不兼容而不能再一起的那些类可以一起工作。如画图程序中,已实现绘制

44、点,直线等功能。为了让客户程序在使用的时候不用关心不同定义,定义个抽象类规接口,当去实现绘图时,发现系统其它地方已有制图实现,但是系统已有的方法与抽象类中规定方法不一样,这时候用适配器模式可以解决这问题。适配器模式是为了面向接口编程中更好的复用。24.比拟Adapter和Pro*y模式使用上的异同之处。适配器模式(Adapter):将一个类的接口转换成客户希望的另外一个接口。Adapter 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。代理模式有两个英文名字:Pro*y Pattern 和 Surrogate Pattern。代理模式:为其他对象提供一种代理以控制对这个对象的访

45、问。说白了就是,在一些情况下客户不想或者不能直接引用一个对象,而代理对象可以在客户和目标对象之间起到中介作用,去掉客户不能看到的容和效劳或者增添客户需要的额外效劳。两者的主要区别在于代理模式应用的情况是不改变接口命名的,而且是对已有接口功能的一种控制;而适配器模式则强调接口转换。25.说明Observer模式的根本实现方式。如果不用该模式,要到达同样的效果,你会如何做?观察者模式在关于目标角色、观察者角色通信的具体实现中,有两个版本。一种情况便是目标角色在发生变化后,仅仅告诉观察者角色我变化了;观察者角色如果想要知道具体的变化细节,则就要自己从目标角色的接口中得到。这种模式被很形象的称为:拉模

46、式就是说变化的信息是观察者角色主动从目标角色中拉出来的。 还有一种方法,那就是我目标角色效劳一条龙,通知你发生变化的同时,通过一个参数将变化的细节传递到观察者角色中去。这就是推模式管你要不要,先给你啦。 这两种模式的使用,取决于系统设计时的需要。如果目标角色比拟复杂,并且观察者角色进展更新时必须得到一些具体变化的信息,则推模式比拟适宜。如果目标角色比拟简单,则拉模式就很适宜。 如果不使用该模式,可采用策略模式,将不同的情况作为子类封装在一个类中,模拟observer模式中目标角色的不同状态,当外部状态发生变化时,可以选择不同的strategy1、strategy2改变观察者角色,从而到达与观察者模式同样的效果。26.请列举一个使用装饰

温馨提示

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

评论

0/150

提交评论