面向对象分析与及设计习题及答案

面向对象分析与及设计习题及答案
面向对象分析与及设计习题及答案

面向对象分析与及设计习题及答案

一、单项选择题

1.到20世纪末,面向对象软件工程已经逐渐发展成熟,特别是(D)的

形成和广泛使用,采用面向对象分析与编程的软件开发方法已成为软件开发的主流方法。

A. Simula67语言

B. Smalltalk语言

C. Java语言

D. 统一建模语言(UML)的标准

2. 面向对象的运动产生了多种面向对象的语言, 其中(C)是一种混合性面向对象语言, 既支持面向过程的程序设计方法,又支持面向对象的程序设计方法,有广泛应用的基础和丰富开发环境的支持,因而使面向对象的程序设计能得到很快普及。

A. Smalltalk

B. Eiffel

C. C++

D. Java

3.下列不属于面向对象技术的基本特征的是(B)。

A. 封装性

B. 模块性

C. 多态性

D. 继承性

4. 面向对象程序设计将描述事物的数据与(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)描述了一组交互对象间的动态协作关系,它表示完成某项行为的对象和这些对象之

间传递消息的时间顺序。

A.对象图 B. 协作图 C. 状态图 D. 序列图

9.(D)就是用于表示构成分布式系统的节点集和节点之间的联系的图示,它可以表示系统

中软件和硬件的物理架构。

A. 组件图

B. 协作图

C. 状态图

D. 配置图

10. 使用UML进行关系数据库的(B)时,需要设计出表达持久数据的实体类及其联系,并把它们映射成为关系数据库表(Table)、视图(View)等。

A. 业务Use Case模型设计

B. 逻辑数据模型设计

C. 物理数据模型设计 C. 物理实现设计

11.一个设计得好的OO系统具有(B)

A. 低内聚、低耦合的特征

B. 高内聚、低耦合的特征

C. 高内聚、高耦合的特征

D. 低内聚、高耦合的特征

12.下面()不是UML的基本构成元素。(A)

A. 控制语言

B. 基本构造块

C. 规则

D. 公共机制

13. 面向对象的特点主要概括为(C)。

A. 可分解性、可组合性、可分类性

B. 继承性、封装性、多态性

C. 抽象性、继承性、封装性、多态性

D. 封装性、易维护性、可扩展性、可重用性14.构成对象的两个主要因素是(A)。

A. 属性和服务

B. 标识和内容

C. 继承和多态

D. 消息和封装

15.下列关于面向对象方法中描述中错误的是(C)。

A. 使用设计模式有助于在软件开发中应用面向对象技术

B. 选择面向对象程序设计语言时需要考虑开发人员对其的熟悉程度

C. UML作为一种可视化建模语言需要与RUP开发过程同时使用

D. 目前在软件生命周期的分析、设计、实现和测试中均可以应用面向对象方法

16. 顺序图主要可以为设计人员提供(A)信息。

A. 消息发送的顺序

B. 某个方法的执行流程

C. 类之间关联关系的多重性

D. 某个对象在不同状态之间的转移

17. 类和接口的关系类似于下面哪种类型的关系(D)。

A. 关联(association)和聚集(aggregation)

B. 关联(association)和组合(composition)

C. 脚本(scenario)和用例(use case)

D. 包(Package)和子系统(subsystem)

18. 在类图中,那个类图中的类Order所生成的代码具有

Public class Order

{

Public Customer recipient;

}

的形式?(A)

A. B.

C. D.

19. 下面那个图符表示UML中的实现关系?(C)

A. B.

C. D.

20. 一个银行业务系统采用如图琐事的配置图,则错误的是(D)

A. 与GUI有关的类应该部署在Branch Client上

B. 这个图表示一个三层的体系结构,不管Branch Client、Financial App Server、Database

Server是运行在同一台机器上还是在不同机器上

C. 为了系统的可伸缩性(scalability),与业务逻辑有关的对象应该部署在Financial App

Server上

D. 为了系统的可伸缩性,与业务逻辑有关的对象应该部署在Branch Client上

21. 关于用例与类的对比中(D)是错误的。

A 都属于模型结构元素

B 都存在继承关系

C 类描述系统的部分静态视图,用例描述系统动态的行为视图

D 类描述的是系统的内部构成,用例也可以描述系统的内部构成

22. Innovation公司正在为Rose开发插入件,使得Rose可以把OOA、OOD模型以各种图形格式导出,如JPEG格式、BMP格式、GIF格式等。在导出时,会根据不同的算法来生成相应的图形文件,这些算法很复杂。为了描述这些算法,在下面这些图中,那个是最适合的?(A)(注:活动图可以用来描述细节)

A. 活动图

B. 状态图

C. 类图

D. 用例图

23. 计算机(Computer)由中央处理器、内存、软盘、硬盘、显示器、键盘、鼠标等组成。那么Computer类和其他类(CPU、RAM、FloppyDrive、HardDisk、Monitor、Keyboard、Mouse)之间的关系是:(D)

A. 泛化关系(Generalization)

B. 实现关系(Realization)

C. 包含关系(Inclusion)

D. 聚集关系(Aggregation)

24. 在状态图中不能表示下面那些概念?(D)

A. 动作(action)

B. 事件(event)

C. 转移(transition)

D. 类(class)

25.在数据库设计的 C 阶段开始考虑具体的数据库管理系统(DBMS)的特性。(C)

A. 需求分析

B. 概念设计

C. 逻辑设计.D 物理设计

26.在UML中,有3种基本构造块,分别是(A)

A. 事物、关系和图

B. 注释、关系和图

C. 事物、关系和结构

D. 注释、关系和结构

27.在UML中,有四种关系,下面哪个不是(B)

A.依赖关系

B.继承关系

C.泛化关系

D.实现关系

28.下面哪个不是UML中的静态视图(B)

A.状态图

B.用例图

C.对象图

D.类图

29.在用例之间,会有三种不同的关系,下列哪个不是它们之间可能的关系(D)

A.包含(include)

B.扩展(extend)

C.泛化(generalization)

D.关联(connect)

30.用例(Use-case)用来描述系统在事件做出响应时所采取的行动。用例之间是具有相关性的。在一个“订单输入子系统”中,创建新订单和更新订单都需要检查用户帐号是否正确。那么,用例“创建新订单”、“更新订单”与用例“检查用户帐号”之间是(B)关系

A.扩展(extend)

B.包含(include)

C.分类(classification)

D.聚集(aggregation)

31.UML中类的有三种,下面哪个不是其中之一(B)

A.实体类

B.抽象类

C.控制类

D.边界类

32.阅读图例,判断下列哪个说法是错误的。(c)

A.读者可以使用系统的还书用例

B.每次执行还书用例都要执行图书查询用例

C.每次执行还书用例都要执行交纳罚金用例

D.执行还书用例有可能既执行图书查询用例,又执行交纳罚金用例

33.关于协作图的描述,下列哪个不正确(B)

A.协作图作为一种交互图,强调的是参加交互的对象的组织;

B.协作图是顺序图的一种特例

C.协作图中有消息流的顺序号;

D.在ROSE工具中,协作图可在顺序图的基础上按“F5”键自动生成;

34. 设计模式具有的优点(a)。

A.适应需求变化

B.程序易于理解

C.减少开发过程中的代码开发工作量 D.简化软件系统的设计

35. 设计模式一般用来解决什么样的问题(a)。

A.同一问题的不同表相B不同问题的同一表相

C.不同问题的不同表相

D.以上都不是

36. 设计模式的两大主题是(d)。

A.系统的维护与开发 B 对象组合与类的继承

C.系统架构与系统开发

D.系统复用与系统扩展

37. 以下哪些问题通过应用设计模式不能够解决。(c)

A)指定对象的接口B)针对接口编程

C)确定软件的功能都正确实现D)设计应支持变化

38. 外观模式的作用是(b)。

A.当不能采用生成子类的方法进行扩充时,动态地给一个对象添加一些额外的功能。B.为了系统中的一组功能调用提供一个一致的接口,这个接口使得这一子系统更加容易使用。

C.保证一个类仅有一个实例,并提供一个访问他的全局访问点。

D.在方法中定义算法的框架,而将算法中的一些操作步骤延迟到子类中实现。

39. Fa?ade(外观)模式的意图是(a)。

A. 希望简化现有系统的使用方法。你需要定义自己的借口。

B.将一个无法控制的现有对象与一个特定借口相匹配。

C. 将一组实现部分从另一组使用它们的对象中分离出来。

D.你需要为特定的客户(或情况)提供特定系列的对象。

40. Adapter(适配器)模式的意图是(B)。

A. 希望简化现有系统的使用方法。你需要定义自己的接口。

B.将一个无法控制的现有对象与一个特定接口相匹配。

C. 将一组实现部分从另一组使用它们的对象中分离出来。

D.你需要为特定的客户(或情况)提供特定系列的对象。

41. 下面不属于创建型模式的有(C)。

A.抽象工厂模式(Abstract Factory )

B.工厂方法模式(Factory Method)

C.适配器模式(Adapter)

D.单例模式(Singleton)

42. 将一个类的接口转换成客户希望的另一个接口。这句话是对下列哪种模式的描述(C)。

A. 策略模式(Strategies)

B.桥接模式(Bridge)

C.适配器模式(Adapter)

D.单例模式(Singleton)

43. 以下关于结构型模式说法不正确的是。(B)

A)结构型模式可以在不破坏类封装性的基础上,实现新的功能。

B)结构型模式主要用于创建一组对象。

C)结构型模式可以创建一组类的统一访问接口。

D)结构型模式可以在不破坏类封装性的基础上,

使得类可以同不曾估计到的系统进行交互。

44. 关于继承表述错误的是:(D)。

A.继承是一种通过扩展一个已有对象的实现,从而获得新功能的复用方法。

B.泛化类(超类)可以显式地捕获那些公共的属性和方法。特殊类(子类)则通过附加属性和方法来进行实现的扩展。

C.在一定意义上说破坏了封装性,因为这会将父类的实现细节暴露给子类。

D.继承本质上是“白盒复用”,对父类的修改,不会影响到子类。

45.在不破坏类封装性的基础上,使得类可以同不曾估计到的系统进行交互。主要体现在(D)。

A外观模式(Facade)B装饰模式(Decorator)

C策略模式(Strategies)D桥接模式(Bridge)

46. 行为类模式使用(B)在类间分派行为。

A接口B继承机制C对象组合D委托

47. 下面的类图表示的是哪个设计模式?(D)。

A抽象工厂模式(Abstract Factory)B观察者模式(Observer)

C策略模式(Strategies)D桥接模式(Bridge)

51. 下面的类图表示的是哪个设计模式?(A)。

A抽象工厂模式B观察者模式

C 策略模式D桥接模式

57. 下面的类图表示的是哪个设计模式?(D)。

A 策略模式(Strategies)

B 装饰模式(Decorator)

C 桥接模式(Bridge)

D 观察者模式(Observer)

48. Bridge(桥接)模式的意图是(C)。

A. 希望简化现有系统的使用方法。你需要定义自己的借口。

B.将一个无法控制的现有对象与一个特定借口相匹配。

C. 将一组实现部分从另一组使用它们的对象中分离出来。

D.你需要为特定的客户(或情况)提供特定系列的对象。

49. 静态工厂的核心角色是(A)。

A.抽象产品

B.具体产品

C.静态工厂

D.消费者

50. 以下属于创建型模式的是(A)。

A抽象工厂模式(Abstract Factory) B 装饰模式(Decorator)

C外观模式(Facade) D桥接模式(Bridge)

52. Abstract Factory(抽象工厂)模式的意图是(D)。

A. 希望简化现有系统的使用方法。你需要定义自己的借口。

B.将一个无法控制的现有对象与一个特定借口相匹配。

C. 将一组实现部分从另一组使用它们的对象中分离出来。

D.提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类

53. 在根据不同的机器选择设备驱动程序的案例中,以下叙述不准确的是(D)。

A. 可以使用switch语句选择驱动程序.

B. 可以使用继承来实现选择驱动程序,但它可能会产生类组合爆炸问题..

C. 可以选择抽象工厂模式实现,且能避免组合爆炸问题.

D. 使用继承的解决方案要比switch语句有更多的优势.

54. 应用设计模式的一个优点是(A)。

A.适应需求变化 B.程序易于理解

C.减少开发过程中的代码开发工作量 D.简化软件系统的设计

55. 当我们想创建一个具体的对象而又不希望指定具体的类时,可以使用(A)模式。

A.创建型

B.结构型C行为型 D.以上都可以

56. 在观察者模式中,表述错误的是(C)。

A.观察者角色的更新是被动的。

B.被观察者可以通知观察者进行更新

C.观察者可以改变被观察者的状态再由被观察者通知所有观察者依据被观察者的状态进行。

D.以上表述全部错误。

58. 当我们想创建一个具体的对象而又不希望指定具体的类时,可以使用(A)模式。

A.创建型

B.结构型

C行为型 D.以上都可以

59. 下列模式中,属于行为模式的是(B)。

A.工厂模式B观察者

C适配器 D 以上都是

60. Observer模式不适用于(D)。

A当一个抽象模型存在两个方面,其中一个方面依赖于另一方面,将这二者封装在独立的

对象中以使它们可以各自独立的改变和复用。

B当对一个对象的改变需要同时改变其他对象,而不知道具体有多少个对象有待改变时。

C当一个对象必须通知其它对象,而它又不能假定其它对象是谁,也就是说你不希望这些

对象是紧耦合的。

D一个对象结构包含很多类对象,它们有不同的接口,而想对这些对象实施一些依赖于其具体类的操作。

二、判断题

1. 一个状态图最多只能由一个初态和一个终态。(F)

2. 协作图中的消息必须要有消息顺序号。(T)

3. 两个参与者(actor)之间可以有包含(include)关系、扩展(extend)关系或泛化

(generalization)关系,而包含关系和扩展关系是依赖(dependency)关系的版型。(F)

4. 参与者(actor)和用例(use case)之间的关系是关联(association)关系。(T)

5. 类A和类B之间的关系如图1所示,则称类B中的getName()方法是对类A中的 getName()方法的重载(overload)。(F)

图1 getName()方法之间的关系图2 活动图

6. 如图2所示,活动Gesture和Stream audio可以并发进行。(T)

7. 一个软件系统,如果只有源代码,缺乏其他相应的辅助文档,如缺乏顺序图和类图,则可以利用Rose进行逆向工程得到顺序图和类图,但得到的顺序图和类图会比较简单。(F)8. CMM描述了五个级别的软件过程成熟度,即初始级、可重复级、已定义、已管理级、优化级。(T)

9. UML由用例视图、物理视图、组件视图、进度视图和配置视图组成。(F)

10. 在设计类图时,可以不用对类图中的每个关联进行命名,但如果需要命名的话,最好用一个“动词”给关联命名。(T)

11. 适配器模式属于创建型模式。(F)

12. 在设计模式中,“效果”只是指“原因和结果”。(T)

13. 设计模式使代码编制不能真正工程化。(F)

14. 设计模式的两大主题是系统复用与系统扩展。(T)

15. Fa?ade(外观)模式不仅可以为方法调用创建更简单的接口,还可以减少客户必须处理的对象数量。(T)

16. 外观模式,当不能采用生成子类的方法进行扩充时,动态地给一个对象添加一些额外的功能。(F)

17. Fa?ade模式为子系统中的一组接口提供的界面可能不一致。(F)

18. Fa?ade外观模式只能为方法调用创建更简单的接口,不能减少客户必须处理的对象数量。(F)

19. 对象适配器模式是合成聚合复用原则的典型应用。(T)

20. Adapter模式使原本由于接口不兼容而不能一起工作的那些类可以一起工作。(T)

21. Fa?ade模式和Adapter模式是相同类型的包装器。(F)

22. Adapter模式不是必须针对某个接口进行设计。(F)

23. 继承本质上是“白盒复用”,对父类的修改,不会影响到子类。(F)

24. 继承是一种通过扩展一个已有对象的实现,从而获得新功能的复用方法。(t)

25. 抽象工厂模式提供了一系列相关或相互依赖对象的接口且必须指定他们具体的类。(F)

26. Abstract Factory(抽象工厂)模式确保系统总能根据当前的情况获得合适的对象。(T)

27. 在Abstract Factory(抽象工厂)模式中,客户对象不需要知道“向谁请求需要的对象”“如何使用这些对象”。(F)

28. Decorator(装饰)模式的意图是为一个对象连接附加的职责。(F)

29. 每个Decorator对象在被装饰的功能之前或之后执行自己的附加功能。(T)

30. Decorator(装饰)模式适用性是表示对象的部分-整体层次结构。(F)

三、填空题

1. 面向对象开发方法一改过去传统的以___(功能分析)___为基础的__(面向过程)__的结构化分析与设计方法,它模拟人们理解和处理客观世界的方式来分析问题,把系统视为一系列__(对象)_的集合,其__(面向对象的设计__又将分析的结果映射到某种面向对象实现工具的结构上,使映射过程有着比较直接的对应关系,使分析者、设计者和编程者都可使用相同的_概念_,从而使面向对象的软件开发能比较自然地模拟客观世界的活动,使问题描述空间与_解空间__在结构上尽可能一致。因此,采用面向对象方法可以更有效地开发大型软件系统。面向对象方法的_封装_、_继承_、__多态_等机制不仅支持软件复用,而且使软件维护工作可靠有效,可实现软件系统的柔性制造,更好地克服_软件危机__。因此,它已成为成熟的广为采用的软件开发方法。

2. 对象是客观实体的抽象表示,是由__描述对象属性的数据__和_对这些数据进行的操作行为__两部分组成。而_类_是对具有相同属性和行为的一组对象的抽象描述。因此,它可作为一种用户自定义类型和创建对象的样板,而按照这种样板所创建的一个个具体对象就是类的__实例__。通过_继承__关系又可形成一种类层次结构。

3. UML中用于描述系统的静态建模的视图称为静态视图,包括_用例图__、

_类图__、_对象图__、__包图__和__构件图_。

4. UML 从不同的视角为系统架构建模,可产生九种视图:

_____用例图_____、_____类图______、____对象图______、

_____配置图______、____组件图______、_ 协作图_____、

____活动图______、____序列图_______、___状态图________。

5. ____序列图____是用来反映若干个对象之间动态协作关系的一种交互图。它主要反映对象之间已发送消息的先后次序和对象之间的交互过程。_____协作图____是用来描述实现某些服务所涉及的对象及其相互之间的关系(包括消息通信)的动态视图。建模者可以选择

_______协作图________来反映对象之间的协作关系;如果需要强调时间和序列,最好选择________序列图_____;如果需要强调上下文相关,最好选择____协作图_____。

6. 适配器模式,分为类的适配器和对象的适配器两种实现。其中类的适配器采用的是继承关系,而对象适配器采用的是(组合聚合)关系。

7. Adapter模式有两种类型有:对象Adapter模式、(类Adapter模式)。

8. UML是一种用来创建(程序模型)的图像语言。

9. (Adapter适配器)模式使原本接口不兼容而不能一起工作的类可以一起工作。

10. 适配器模式,分为类的适配器和对象的适配器两种实现。其中类的适配器采用的是(继承

)关系,而对象适配器采用的是组合聚类关系。

11. 在存在继承关系的情况下,方法向超类方向集中,而数据向(子类)方向集中。

12. 在进行设计以应对变化的过程中,应该遵循两条基本策略:找出变化并(封装变化点);

优先使用对象组合,而不是类继承。

13. 封装性好的代码更容易测试,因为它与其他代码没有(耦合)。

14. (抽象工厂)模式提供了一系列相关或相互依赖对象的接口而无需指定他们具体的类。

15. 工厂模式分为简单工厂,工厂方法,( 工厂方法)三种类型。

四. 简答题

1. 简述面向对象软件开发方法的优点。

面向对象开发方法一改过去传统的以功能分析和功能分解为基础的面向过程的结构化分析与设计方法,面向对象开发方法模拟人们理解和处理客观世界的方式来分析问题,把系统视为一系列对象的集合,其面向对象的设计又将分析的结果映射到某种面向对象实现工具的结构上,使映射过程有着比较直接的对应关系,使分析者、设计者和编程者都可使用相同的概念,从而使面向对象的软件开发能比较自然地模拟客观世界的活动,使问题描述空间与解空间在结构上尽可能一致。因此,采用面向对象方法可以更有效地开发大型软件系统。面向对象方法的封装、继承、多态等机制不仅支持软件复用,而且使软件维护工作可靠有效,可实现软件系统的柔性制造,更好地克服软件危机。因此,它已成为成熟的广为采用的软件开发方法。到20世纪末,面向对象软件工程逐渐发展成熟,特别是统一建模语言(UML)标准的形成和广泛使用,使面向对象软件开发方法已成为软件开发的主流技术。

2. 简述面向对象技术的三大机制。

答:(1)封装性(encapsulation)

所谓封装就是把对象的属性和行为结合成一个独立的单位,使外界不能直接访问或修改这些数据和代码,外界只能通过对象提供的接口函数来改变或获取对象的属性数据,这就实现了消息隐蔽。

(2)继承性

如果在一个已定义的类上,增加一些特殊属性或操作,可以形成一个新的类,这个类不仅继承了前一个类的全部特征,而且具有新的特性,因此可看作前一个类的特例,是对前一个类的继承。前一个类称为父类,新产生的类叫做子类。通过继承关系可形成一种类层次结构,叫做继承结构。

(3)多态性

在类层次结构的不同类中,可用相同的函数名实现功能不同的函数。

3. 简述OOA模型的层次结构。

答:OOA模型采用五层次结构,它们分别是:

(1)对象-类层

划分待开发系统及其环境信息的基本构造单位,标出反映问题域的对象和类,并用符号进行规范的描述,用信息提供者熟悉的术语为对象和类命名。

(2)属性层

定义对象和某些结构中的数据单元,继承结构中所有类的公共属性可放于通用类中。标识对象类必需的属性并放在合适的继承层次上,属性的特殊限制和实例连接关系也应标识出来。

(3)服务层

表示对象的服务或行为,即是要定义类上的操作。

(4)结构层

标识现实世界中对象之间的关系。当一个对象是另一个对象的一部分时,用"整体-部分"关系表示;当一个类属于另一个类时,用类之间继承关系表示。

(5)主题层

可将相关类或对象划分为一个主题。

4. 简述OOD 模型的总体结构,并画图表示。

OOD 体系结构的各个部分内容:

(1)问题论域部分,在OOA 模型的基础上,细化分析结果,设计一组构成底层应用模型的类和对象。

(2)人机交互部分:设计用户界面模型,该用户界面模型中的类和对象提供实现人机交互操作的接口函数。用户界面设计包括 菜单设计、窗口设计、输入/输出界面设计等等。

(3)任务管理部分:建立一些类,用以负责处理操作系统级的并发问题、中断、调度以及其它与特定平台有关的问题。

(4)数据管理部分:提供数据管理系统中存储和检索对象的基本结构,包括对永久性数据的访问和管理。数据管理设计包括:

— 数据存放设计:数据存放设计选择数据存放的方式(文件存放、关系数据库表格存放或面向对象的数据库存放)。

— 设计相应的操作。为每个需要存储的对象和类增加用于存储管理的属性和操作,在类和对象的定义中加以描述。

5. 分析下面的类图,画出新的类图,将原图中的多对多关系转换为1:M (一对多)关系。

答案:

class & object layer (类及对象层)attribute layer (类及对象层)service layer (服务层)struct layer (结构层)subject layer (主题层)图1.5 OOD 模型的总体结构

6.信用卡可能处于“开放”和“关闭”状态,其中“开放”状态可以直接进入“关闭”状态,而从“关闭”状态必须提供密码验证才能进入“开放”状态。“开放”状态又包括“透支”和“正常”状态之间的变化,当剩余金额少于零、或者使用额度大于剩余金额、或者结算余额小于零时进入透支状态,反之则为正常状态。画出信用卡的状态图。(6分)

7. 请判断以下类图中的类关系是否合适,并说明理由。

(1)飞机有机翼、机身、驾驶舱

(2)商场里的电器。1台电器可以

是1台洗衣机,也可以不是;1台

电器可以是1台电视机,也可以不是;1台电器可以是1台空调,也可以不是;

(3)公司的员工很多,包括程序员、分析员、项目经

理……

(1)飞机有机翼、机身、驾驶舱

应改为“组合”

(2)商场里的电器。1台电器可以是1台洗衣机,也可以不是;1台电器可以是1台电视机,也可以不是;1台电器可以是1台空调,也可以不是;

应该为“泛化”

(3)公司的员工很多,包括程序员、分析员、项目经理……

应改为“泛化”

8. 假设你从垃圾堆里捡到这样一张小纸片(如下图所示)。

根据现有信息尽可能判断:

(1)“小车”类有哪几个操作?

(2)“指挥小车UC”类的“执行任务”操作要做哪些工作?(采用伪代码描述)

图时序图

参考答案:

(1)“小车”类有哪几个操作?

返回小车当前位置()

转向和前进()

(2)“指挥小车UC”类的“执行任务”操作要做哪些工作?(采用伪代码描述)

移动任务:更新行走断表和目的地()

移动任务:判断现有信息足以让小车行走()

小车:放回小车当前位置()

小车:验证小车尚未到达目的地()

移动:根据但前位置及断表信息计算出速度、角度()

小车:转向和前进()

9. 简述统一建模语言UML的优点。

10. 简述面向对象技术的三大机制。

11. 简述面向对象分析的基本步骤。

12. 简述OOD模型的总体结构,并画图表示。

13. 应用UML进行系统分析和设计所需建立视图有那几种?

14.简述“开—闭”原则的基本思想。请举出一个使用了软件“开—闭”原则的软件设计模式,其中何处体现了“开—闭”原则。

答:“开—闭”原则:软件实体应当对扩展开放,而对修改关闭,“开-闭”原则要求软件系统能够在不需要修改原有类的基础上,通过增加类达到扩展功能的目的。

Abstract factory体现了这个原则,如果想增加一类新的products,只需在product类体系中增加各个products,然后在factory类体系结构中增加一个concrete factory就可以了,而不需要对现有类做任何修改,The Open-closed principle[ocp]在不改动过模块源代码的情况下扩展模块的行为。

软件实体(类模块函数等)应该是可以扩展的,但是不可以修改的。

15.简述依赖例转原则的基本思想。请举出一个使用了软件依赖原则的软件设计模式,其中何处体现了依赖原则。

答:依赖倒置原则的基本思想是:①高层模块不应该依赖于低层模块,二者都应该依赖于抽象。②抽象不应该依赖于细节,细节应该不依赖于抽象。Tomplate method就体现了这个原则,它定义了一个操作中的算法骨架,而将一些步骤延迟到子类中,template method 使得子类不改变一个算法的结构,即可重定义该算法的某些特定步骤。

16.什么是单一职责原则?请举出一个使用了单一职责原则的软件设计模式,其中何处体现了单一职责原则。

答:基本思想:SRP使得一个类或一个模块承担的责任尽可能的少,使尽可能少的因素或动机影响该类或该模块,即增大类或模块的内聚性,减少其耦合度,SRP是所有原则中最简单的之一,也是最难正确运用的之一。

COMMAND模式体现了SRP原则,大多数类都是一组方法和相应的一组变量的结合,而该模式只是封装了一个没有任何变量的函数,它对函数的关注超过了类,将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化。

17.软件复用可采用类的继承方式和类的聚合方式,比较两者的优缺点。

答:聚合:一个对象拥有另一个对象或对另一个对象负责(即一个对象包含另一个对象或是另一个对象的一部分)并且聚合对象和其所有具有相同的生命周期(即所谓的“同生共死”关系)。

聚合复用优点:①容器类仅能通过被包含对象的接口来对其进行访问。②“黑盒”复用,因为被包含对象的内部细节对外是不可见。③包装性好。④实现上的相互依赖性比较小。⑤每一个类只专注于一项任务。⑥通过获取指定其他的具有相同类型的对象的使用,可以在运行期间动态地定义(对象的)组合。

聚合的缺点:①导致系统中的对象过多②为了能将多个不同的对象作为组合块来使用,必须仔细地对接口进行定义。

类继承:是一种通过扩展(一个已有对象的)实现,从而获得新功能的复用方法。

继承的优点:①容易进行新的实现,因为其大多数可继承而来②易于修改或扩展那些被复用的实现。

继承的缺点:①破坏了封装性,因为这会将父类的实现细节暴露给子类②“白盒”复用,因为父类的内部细节对于子类而言通常是可见的③当父类的实现更改时,子类也不得

不随之更改④从父类继承来的实现将不能在运行期间进行改变。

18.画出工厂方法模式的结构图。什么情况下适合使用工厂方发模式?

其中product:为工厂模式所要创建的对象类型定义一个接口。

Concrete product:实现product接口。

Creator:声明工厂方法(factory method)返回值为product的一个对象。

Concrete creator:覆写factory Method(),返回值为concrete product 的一个具体实例。

在下面情况下你可以考虑使用工厂方法模式:

1) 当客户程序不需要知道要使用对象的创建过程。

2) 客户程序使用的对象存在变动的可能,或者根本就不知道使用哪一个具体的对象。

19.画出合成模式(Composite)的结构图。举例说明一个可以应用合成模式的软件设计实例,说明其中各角色的作用。

实例:计算机和立体组合音响这样的设备经常被组装成一部分整体层次结构或者是容器层次结构,例如:底盘可以包含驱动装置和平面板,总线含有多个插件,机柜包括底盘、总线等。这样结构很自然的用composite模式进行模拟。

Equipment类为在部分——整体层次结构中的所有设备定义一个接口。Equipment声明一些操作返回一个设备的属性,例如它的能是消耗和价格。子类为指定的设备实现了这些操作,Equipment还声明了一个Create Iterator 操作,该操作为访问它的零件返回一个Iterator ,这个操作的缺省实现返回一上NullIterator,它在空集上迭代。

Composite Equipment是包含其它设备的基类,它也是Equipment的子类。

20.简述门面模式(Facade)和中介者模式(Mediator)的基本思想,两者的差异何在?

答:门面模式(facade)又称外观模式。基本思想:为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

“中介者模式”基本思想:Mediator Pattern 中文译为“中介者模式”、“调停者模式”。调停者模式的定义是:用一个调停对象来封装一系列的对象交互。调停者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。简单点来说,将原来两个直接引用或者依赖的对象拆开,在中间加入一个“调停”对象,使得两头的对象分别和“调停”对象引用或者依赖。

两者的差异:从目的上看,调停者模式与门面模式有些相似。但是门面模式是介于客户程序与子系统之间的,而调停者模式是介于子系统与子系统之间的。这也注定了它们有很大的区别:门面模式是将原有的复杂逻辑提取到一个统一的接口,简化客户对逻辑的使用。它是被客户所感知的,而原有的复杂逻辑则被隐藏了起来。而调停者模式的加入并没有改变客户原有的使用习惯,它是隐藏在原有逻辑后面的,使得代码逻辑更加清晰可用。

21.简述观察者模式的基本思想,如何实现当目标对象发生变化时多个观察者对象的同步更新?画出他们之间的协作图。

(1)Observer(观察者)基本思想:对象间的一种一对多的依赖关系。当一个对象的状态发生变化时,所有依赖于它的对象都得到通知并自动更新。

(2)协作:当Concrete Subject发生任何可能导到其参观者与其本身状态不一致的改变时,它将通知它的各个观察者。在得到一个具体的目标改变通知后,Concrete Object对象可向目标对象查询信息,Concrete Object使用这个些信息以使它的状态与目标对象的状态一致。

(3)协作图:

22.举一适合使用State模式的例子。与不使用该模式相比,有哪些优点?

举例:抽象状态类定义了一个抽象方法“写程序”

与不使用该模式相比优点:

State模式将特定的状态相关的行为封装在一个类中,由于所有状态相关的代码都存在于某个concrete state中,所以通过定义新的子类可以很容易的增加新的状态和转换。

23.有哪些模式的使用可以使得类的复用性增强?说明你的理由。

策略模式(strategy)属于对象行为型模式,主要定义一系列的算法,把这些算法一个个封装成拥有共同接口的单独的类,并使他们之间互换,客户端调用他们的时候互不影响。算法使用和算法分离,即将变化的具体算法封装起来,降低了代码的耦合度,算法提取起来,使算法得到重用。

中介者模式(mediator)用一个调停对象来封装一系列的对象交互。调停者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。即,将原来的两个直接引用或者依赖的对象拆开,在中间加入一个“调停”对象,使得两头的对象分别和“调停”对象引用或者依赖。提高了原有系统的可读性,将原有系统的多对多转化为一对多,提高了代码的可复用性。

适配器(Adapter)模式是的原本由于接口不兼容而不能再一起的那些类可以一起工作。如画图程序中,已实现绘制点,直线等功能。为了让客户程序在使用的时候不用关心不同定义,定义个抽象类规范接口,当去实现绘图时,发现系统其它地方已有制图实现,但是系统已有的方法与抽象类中规定方法不一样,这时候用适配器模式可以解决这问题。适配器模式是为了面向接口编程中更好的复用。

24.比较Adapter和Proxy模式使用上的异同之处。

适配器模式(Adapter):将一个类的接口转换成客户希望的另外一个接口。Adapter 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

代理模式有两个英文名字:Proxy Pattern 和Surrogate Pattern。代理模式:为其他对象提供一种代理以控制对这个对象的访问。说白了就是,在一些情况下客户不想或者不能直接引用一个对象,而代理对象可以在客户和目标对象之间起到中介作用,去掉客户不能看到的内容和服务或者增添客户需要的额外服务。

两者的主要区别在于代理模式应用的情况是不改变接口命名的,而且是对已有接口功能的一种控制;而适配器模式则强调接口转换。

25.说明Observer模式的基本实现方式。如果不用该模式,要达到同样的效果,你会如何做?

观察者模式在关于目标角色、观察者角色通信的具体实现中,有两个版本。

一种情况便是目标角色在发生变化后,仅仅告诉观察者角色“我变化了”;观察者角色

如果想要知道具体的变化细节,则就要自己从目标角色的接口中得到。这种模式被很形象的称为:拉模式——就是说变化的信息是观察者角色主动从目标角色中“拉”出来的。

还有一种方法,那就是我目标角色“服务一条龙”,通知你发生变化的同时,通过一个参数将变化的细节传递到观察者角色中去。这就是“推模式”——管你要不要,先给你啦。

这两种模式的使用,取决于系统设计时的需要。如果目标角色比较复杂,并且观察者角色进行更新时必须得到一些具体变化的信息,则“推模式”比较合适。如果目标角色比较简单,则“拉模式”就很合适。

如果不使用该模式,可采用策略模式,将不同的情况作为子类封装在一个类中,模拟observer模式中目标角色的不同状态,当外部状态发生变化时,可以选择不同的strategy1、strategy2…改变观察者角色,从而达到与观察者模式同样的效果。

26.请列举一个使用装饰模式的例子。画出你的例子的类图结构。

JUnit 中的装饰模式:在JUnit 中,TestCase 是一个很重要的类,允许对其进行功能扩展。在junit.extensions 包中,TestDecorator、RepeatedTest 便是对TestCase 的装饰模式扩展。下面我们将它们和上面的角色对号入座。

27.列举两个可以使我们在程序中不必使用if…else结构的软件设计模式。使用软件设计模式是如何做到这一点的?

策略模式(strategy)和状态模式(state)

策略模式是将不同算法(处理方法)封装到stategy类中,状态模式是将不同状态封装到state类中。二者都是通过,类中的子类,实现不同情况的调用,从而有效的替换充满在程序中的if else 语句。

28.你认为在Linux平台上直接运行WIN32程序有可能吗?如认为不可能请说明理由;如认为可能应如何实现这一目标?

(1)两个OS内部实现有很大差别,甚至连路径的分隔符都不一样,一个WIN32程序无论如何到了最后也要调用Window api,而这些api在linux上根本没有实现(2)例如:就用户界面来说,有些windows的控件,在Linux上根本连对应的具有类似功能的控件都没有怎么执行?如果再涉及进程,线程就更复杂了,差距也更大,如果想用一个win32程序在linux上执行,必须有一个间接层来缓和二者差距,然后要求WIN32程序只能调用这个间接层里面的库函数

29. Java是一个跨平台的软件语言。为了实现跨平台,你认为采用哪种软件模式来实现跨平台部分更合理?说明你的理由。

答:abstract factory实现跨平台比较合适。用abstract factory提供一个高层接口,来建造每个所需的Product,当然具体的实现要用Concrete factory来实现,然后让每个os 对应一个Concrete factory,这样当其它的Java类库需要平台支持时,只需调用abstract

factory 的相应函数即可,而无需关系它所在是什么平台。

例如:用户界面awt 这个类体系,它是跨平台的,它本身不能有绘制图形界面的代码,因为这涉及具体的平台。所以它肯定要调用一个抽象工厂模式类的相应函数,具体实现就由concrete factory 来负责。

Bridge 模式可以分离接口及其实现部分,使接口部分和实现部分可以独立变化,同时可以对客户隐藏实现细节,实现bridge 实现跨平台部分就有可能对不同的平台编写不同的具体实现,而同时又保持接口部分java 语言可以独立变化。

30. 在一个国际电子零售系统中,需要考虑为不同的国家的消费者的定单计算税费问题,请 用模式的方法考虑如何解决该问题。画出该模式的类图。

通过策略Strategy 模式,可以将这些规则封装在一个抽象类中,然后派生出一系列的具体类

。通过从一个抽象派生类执行算法的所有不同方式,主模块就无需再操心实际使用的是哪一 个,这样能够允许发生新的变化。

五. 试用UML 对教学管理系统及相关的数据库系统进行分析和设计。学生选课系统一般包括(1)选课管理功能;(2) 成绩管理功能。试完成下列工作:

(1)建立系统静态结构模型—画出系统用例图和类图;(10分)

(2) 建立系统动态结构模型—画出系统序列图和协作图;(10分)

(3)建立关系数据库逻辑模型。(10分)

(1) 系统用例图如下

(a

)选课管理的用例图(b )成绩管理的用例图

对象类图如下:

(a )选课对象类图

(b )成绩管理对象类图

面向对象程序设计—文本编辑器的设计与实现

课程设计报告书 课程名称面向对象程序设计 设计题目文本编辑器的设计与实现 专业班级 学号 姓名 指导教师 年月

目录 1 设计时间 (1) 2 设计目的 (1) 3设计任务 (1) 4 设计内容 (1) 4.1需求分析 (1) 4.2概要设计 (1) 4.2.1功能结构图 (1) 4.3详细设计 (2) 4.3.1流程图 (3) 4.4系统的功能实现 (4) 4.4.1类或包的加载 (5) 4.4.2设计一个主类,变量的定义 (5) 4.4.3文件操作功能的实现 (6) 4.5运行测试 (25) 4.5.1文本编辑器界面 (25) 4.5.2各功能菜单界面 (25) 5 总结与展望 (26) 参考文献 (26) 成绩评定 (27)

1 设计时间 2011年12月19日~2011年12月25日 2 设计目的 本次设计是学习完《java6程序设计》课程后进行的一次全面的综合练习,目的是加深对本学期课程的理解,通过设计文本编辑器并实现其功能来熟练掌握java语言基础,初步掌握软件开发的基本方法与技术将理论课程中学到的知识运用到实践中,实现有一定规模的Java应用。 3设计任务 本次设计的主要任务是文本编辑器的设计与实现,要求设计一个类似于Windows记事本(Notepad)的Java程序。可以打开、新建、保存一个文本文件;对选中的文本进行各种编辑操作(设置字体、字号、字型、对齐方式、背景、前景色、复制、粘贴、剪切、查找、替换等);在文本中能够插入对象。 4 设计内容 4.1需求分析 现在网络上各种文本编辑器数不胜数,有EmEditor ,UEStudio ,GridinSoft Notepad ,Notepad++,win32pad ,SkimEdit,UniRed,xint 。功能也是应有尽有,有能改变字体的,有能改变文字颜色的。但是,这些软件又存在各种各样的瑕疵或问题:有的文件体积相对于一般文字编辑来说太大;有的功能太繁杂,使初级使用者一时难以掌握。仅从日常应用方面来说,一个文本编辑器只需一些简单实用的功能就够了。本程序设计就是依照这样一种使用需要设计了一个简单的文本编辑器程序。 4.2概要设计 4.2.1功能结构图

面向对象分析与设计简答题

1、什么面向对象? 面向对象不仅是以些具体的软件开发技术与策略,而且以一套关于如何看待软件系统与现实世界的关系,以什么观点来研究问题并进行求解,以及如何进行系统构造的软件方法学。 2、软件开发方法学的基本方法有哪些? 1)软件工程和瀑布方法学2)新方法学:螺旋式、迭代式、递增式、合并式3)面向对象方法学:UML、RUP、XP 3、为什么需要OOA、OOD。 OOA就是运用面向对象的方法进行需求分析,OOA加强了对问题域和系统责任的理解,有利于人员之间的交流,对需求变化的适应性较强,很好的支持软件复用。 OOD就是运用面向对象的方法进行系统设计,OOD.符合人们习惯的思维方法,便于分解大型的复杂多变的问题;易于软件的维护和功能的增减;可重用性好;与可视化技术相结合,改善了工作界面。 4、从概念层次、规格层次、实现层次三个角度如何理解对象的概念? 从概念层次来看,一个对象就是一系列的责任; 从规格层次来看,一个对象是一系列可以被其他对象或该对象自己调用的方法;从实现层次来看,一个对象是一些代码和数据。 5、如何绘制类图和对象图?简述其步骤。 类图绘制:1发现类,找到备选类,确定候选类2关联分析,确定关联关系,多重性分析3职责分析4限定与修改,导航性分析,约束,限定符; 对象图绘制:1发现类和对象2对其细化,分析,确定关系。 6、简述重定义方法与重载的区别。 重定义:1参数列表必须完全与被重写的方法相同2返回类型必须一直域被重写的方法的类型相同3访问修饰符的限制一定要大于被重写方法的访问修饰符4重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查性异常:重载:1必须有不同参数列表2可以有不同的返回类型,只要参数列表不同即可3可有不同访问修饰符4可抛出不同的异常。 7.简述抽象方法与虚方法的联系与区别 虚方法有一个实现部分可以为子类实现有共同的方法,并为派生提供了覆盖该方法的选,抽象方法只是强制派生覆盖方法;抽象方法只能在抽象类中声明,而虚方法不是;抽象方法不能声明方法实体,虚方法可以;包含抽象方法的类不能实例化,但虚方法可以。 8、简述使用继承的规则。 1)、不要过度使用;2)、子类应是超类的一个类型;3)、子类应是超类的扩展; 4)、尽量少从具体类继承,最好继承接或抽象类。

面向对象系统的分析与设计

面向对象系统的分析与设计》学习报告 面向对象系统的分析与设计课程是本专业的一门重要的专业课。通过本课程的学习,使我在已有的计算机软硬件基础知识、程序设计知识、数据库和网络通信知识的基础上系统掌握了面向对象系统的分析与设计方法和技术,并初步具备了针对特定环境下的应用问题进行信息系统开发(包括系统分析、设计与实现)的能力。现将学习情况作以下汇报。 一、面向对象概述 在 20 世纪 60 年代以前,软件开发者构造的软件系统大多都是较小的,且相对简单。编程语言及编程环境也相对简单,随着软件复杂性的增长,为了更好地维护代码,软件开发也需要方法来进行约束。传统的方法中,结构化方法和基于建模方法是典型的软件开发方法。结构化方法是结构化分析、结构化设计和结构化编程的总称。结构化方法的思想萌发于20世纪60年代,是在70年代由TomDe Macro和 Ed Yourdon 等人被系统地进出来。其目的在于,提供一个有序的机制,通过抽象来理解待开发的系统,试图产生结构良好的软件系统。但对于较复杂的系统而言,容易导致模块的低内聚和模块间的高耦合,从面使得系统缺乏灵活性和可维护性。基于建模方法在 20 世纪 70年代末提出,即Peter Chen的实体一一关系法与Ed Codd的关系数据库理论相结合提出的一种新的软件开发方法。其强调对信息实体建模,而不是对象建模。结构化方法和基于建模方法都没有较强地描述系统的动态行为的能力。随着计算机技术的飞速发展,计算

机管理系统应用的普及,企业信息化势在必行。传统开发方法结构化开发的软件存在很多问题,其有稳定性、可修改性和可重用性都比较差,生产效率低等缺陷,这是因为传统的软件开发是面向过程的。然而,用户需求的变化大部分是针对功能的,采用面向对象方法开发可以满足用户的需求,因为面向对象有以下优点:能够比较自然地反映现实事物,可重用性、可维护性和可扩展性比较强。 什么是面向对象呢?“面向对象”本身没有任何意义。“对象” 大概是英语中最普通的一个单词。它在字典中的定义是这样的。对象:能感觉到或能够被感觉到的东西。换句话说,对象可以是任何东西! “面向”也没有任何特别的含义,它的定义是“指向” 。在这种定义下,“面向对象”被理解为形容词。因此,面向对象可以定义成这样,面向对象:指向你可以想到的任何东西。 毫无疑问,软件工业无法为“面向对象”下一个统一的定义。这种模糊性使得任何一个软件零售商都声称他们的商品是“面向对象” 的。 1 面向对象的基本概念 尽管权威人士对面向对象的概念没有达成一致的意见,但从程序设计方法的角度来看,面向对象是一种新的程序设计范型。其基本思想是使用对象、类、封装、继承、关联、聚合、消息、多态性等基本 概念来进行程序设计。 1.1 对象 (Object)

面向对象系统分析与设计试卷与答案

面向对象分析与设计试题B卷 一、单项选择题( 在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号。每小题1 分,共20 分) 3.下列不属于面向对象技术的基本特征的是()。 A. 封装性 B. 模块性 C. 多态性 D. 继承性 4. 面向对象程序设计将描述事物的数据与( ) 封装在一起,作为一个相互依存、不可分割的整体来处理。 A. 信息 B. 数据隐藏 C. 对数据的操作 D. 数据抽象 5. 关于面向对象方法的优点,下列不正确的叙述是()。 A. 与人类习惯的思维方法比较一致 B. 可重用性好 C. 以数据操作为中心 D.可维护性好 8. 下列不属于类的成员函数的是( )。 A. 构造函数 B. 析构函数 C. 友元函数 D. 拷贝构造函数 9. 继承机制的作用是( )。 A. 信息隐藏 B. 数据封装 C. 派生新类 D. 数据抽象 14. ()是从用户使用系统的角度描述系统功能的图形表达方法。 A. 类图 B. 对象图 C. 序列图 D. 用例图 15. ( ) 是表达系统类及其相互联系的图示,它是面向对象设计的核心,建立状态图、协作图 和其他图的基础。 A.对象图 B. 组件图 C. 类图 D. 配置图 16.()描述了一组交互对象间的动态协作关系,它表示完成某项行为的对象和这些对象 之间传递消息的时间顺序。 A.对象图 B. 协作图 C. 状态图 D. 序列图 17.()就是用于表示构成分布式系统的节点集和节点之间的联系的图示,它可以表示系 统中软件和硬件的物理架构。 A. 组件图 B. 协作图 C. 状态图 D. 配置图 18. 在用UML进行数据库的分析与设计过程中,( ) 就是进行数据库的需求分析,使用用 例图、类图、顺序图、活动图等建立业务模型。 A. 逻辑数据模型设计 B 业务Use Case模型设计 C. 物理数据模型设计 D. 物理实现设计 19. 使用UML进行关系数据库的()时,需要设计出表达持久数据的实体类及其联系,并把它们映射成为关系数据库表(Table)、视图(View)等。 A. 业务Use Case模型设计 B. 逻辑数据模型设计 .

uml《面向对象的分析与设计》考题与答案

《面向对象的分析与设计》练习题 一、选择题 1.UML 语言不支持的建模方式有(D )。 A. 静态建模 B.动态建模 C. 模块化建模 D. 功能建模 2.一个设计得好的OO系统具有( B )。 A. 低内聚、低耦合的特征 B.高内聚、低耦合的特征 C. 高内聚、高耦合的特征 D.低内聚、高耦合的特征 3.下列不属于面向对象技术的基本特征的是(B)。 A. 封装性 B. 模块性 C. 多态性 D. 继承性 4. 面向对象程序设计将描述事物的数据与( C ) 封装在一起,作为一个相互依存、不可分割的整体来处理。 A. 信息 B. 数据隐藏 C. 对数据的操作 D. 数据抽象 5. 关于面向对象方法的优点,下列不正确的叙述是(C )。 A. 与人类习惯的思维方法比较一致 B. 可重用性好 C. 以数据操作为中心 D.可维护性好 6.用例之间的关系不包括以下哪种关系?D A.泛化 B.包含 C. 扩展 D. 聚集和组合 7.顺序图中不包括以下哪种元素?(A) A.用例 B. 对象 C. 生命线 D. 消息 8. 用例图中不包括以下哪种元素?(B) A. 用例 B. 类 C. 参与者 D. 关联 9. 继承机制的作用是( C )。 A. 信息隐藏 B. 数据封装 C. 派生新类 D. 数据抽象 10. 面向对象方法学中,对象之间仅能通过(C)相联系。 A. 类 B.抽象 C. 消息 D. 封装 11. 脚本与用例之间的关系类似与(A)之间的关系。

A. 对象与类 B. 参与者与用例 C. 顺序图和抽象类 D. 消息和对象 12. 下列元素中,(D )不属于消息的组成。 A. 提供服务的对象 B. 服务 C. 输入信息 D. 事件 13. (D )描述了一组交互对象间的动态协作关系,它表示完成某项行为的对象和这些对象之间传递消息的时间顺序。 A.对象图 B. 协作图 C. 状态图 D. 顺序图 14. (D)是从用户使用系统的角度描述系统功能的图形表达方法。 A. 类图 B. 对象图 C. 序列图 D. 用例图 15. ( C ) 是表达系统的类及其相互联系的图示,它是面向对象设计的核心,建立状态图、协作图和其他图的基础。 A.对象图 B. 组件图 C. 类图 D. 配置图 二、简答题 1.简答控制软件复杂性的基本方法,面向对象技术如何体现这些方法的。 基本方法:分解,抽象,模块化,信息隐蔽。面向对象的软件开放方法在描述和理解问题域时采用的方法是:对问题域进行自然分割,以更接近人类的思维方式建立问题域模型,从而使设计出的软件尽可能直接地描述现实世界,具有更好的可维护性,能适应用户需求的变化。 2.举例说明类中覆盖和重载的区别。 public class A{ String name; public String getValue();{ return”getValue is”+name;} } public class B extend A { String address; public String getValue();{

面向对象设计与分析 图书管理系统

华北电力大学科技学院 实验报告 实验名称图书馆管理系统的分析与设计课程名称面向对象技术 专业班级:学生姓名: 学号:成绩: 指导教师:实验日期:

一、图书管理系统需求描述 图书馆里有多种书目,每种书有多个副本,每个副本有唯一的编号。每本图书借阅期限为60天,超期罚款,按天计算,每天0.1元。 每个借阅者在系统中建立一个账户,并发放借阅证,账户中有用户名、证号、单位、存的现金数额,用于超期罚款,用户可以续费。 持借阅证的用户可以借书、还书,但这些操作要通过图书馆馆员来实现,每个借阅者可借10本书。每次借阅会将特定的借阅者和书籍副本联系起来。 图书管理员还负责图书的书目管理,书籍副本管理,借阅者管理。如果借阅证丢失,借阅证持有者应到图书馆前台挂失。 借阅证持有者可以预约图书,最多可预约3本(可以设定预约有效的期限),并在图书到达后得到电话通知,图书馆为其保留图书,3日内有效。还可以取消预约。 二、需求分析 系统的功能需求主要包括以下几个方面: 1.这是一个图书馆管理系统。 2.借阅者需预先建立一个账户(账户中有用户名、证号、单位、存的现金数额),并 领取借阅证,借阅者可以续费。 3.各种书目需预先注册。每种书目有多个副本且每个副本有唯一的编号。 3.借阅者能够通过图书馆馆员借书、还书(每个借阅者可借10本书),每次借阅或 归还都更新数据库信息。 4.借阅者可以通过网络查询书籍信息。 5.借阅者可以预约图书。当他所预约的图书归还或购进时,就通知预定人。图书馆为 其保留3日预约书籍。当预定某书的借书者借阅该书后,系统取消预约。 6.如果借阅者还书超过期限(60天),需扣款,按天计算,每天0.1元。 7.图书馆馆员在软件系统的支持下处理借阅者的借书和还书请求。 8.系统管理员可以对系统的数据进行维护,如增加、删除和更新书目,增加和删除书 籍,增加、删除和更新借阅者帐户,挂失借阅证等。 7.系统能够运行在流行的技术环境中,并应有一个良好的人机交互图形用户界面。 8.系统容易扩展新功能。 系统将通过计算机来处理图书、副本、借阅者和借书。借阅者要求借书,出示借阅证,查询该借阅者提供的借阅证是否满足借书要求。如果满足,给出要借图书的名称,系统查找所借的图书是否存在副本,如果有,则办理借书手续(登记借阅信息)。 图书是存放在图书馆中的书的名称,副本是一个图书的具体实例。一个图书可能有多个副本,一个副本一定会对应一个图书。一次借阅必须记录一个图书的副本和一个借阅证信息。一个副本可以被借阅,也可以不被借阅。一个借阅证可以借多本书,也可以

UML面向对象分析与设计

UML面向对象分析与设计 大作业 前言 “UML面向对象分析与设计”是计算机专业和软件工程等相关专业的一门重要课程,也是其他理工科专业的热门选修课程。“程序设计语言”、“计算机网络”、“数据库原理”和“数据机构”等是它的前导课程,学好本课程对学生毕业后从事软件开发有着极为重要的作用。 要学好这门课,仅仅通过课堂教学或自学掌握理论知识是远远不够的,还必须加强实践。特在学期末引入uml的综合分析与设计,从实际项目出发,使学生学会运用软件工程基本理论知识,UML建模语言和rose建模环境,去解决软件开发中的实际问题,达到学以致用的目的。

面向对象软件开发技术 项目的引入及需求 简易教学管理系统的分析、设计与实现 一、设计的目的 1.初步了解UML语言的概念、结构、语义与表示方法; 2.掌握UML建模工具Rational Rose的使用方法; 3.给出某个简单系统的模型,能够熟练地使用Rose工具表达; 二、设计理论基础 1. 面向对象的程序设计C++或JAVA程序设计课程; 2.数据结构或算法课程 2.SQLServer或mysql数据库系统; 3. 熟悉传统软件工程以及软件测试技术。 三、设计内容与步骤 需求陈述:简易教学管理系统主要提供两个方面的服务: 选课管理,负责新学期的课程选课注册。 成绩管理,负责学生成绩管理。 (1)简易教学管理系统---选课管理应提供的服务如下: 1.录入与生成新学期课程表 教学管理人员在新学期开学前录入新学期的课程,打印将开设的课程目录表,供师 生参考选择。如果某门课实际选课的学生少于10人,则停开该课程,把该课程从 课程表中删除;如某课程选课学生多于60人,则停止选课。 2.学生选课注册 新学期开始前一周为学生选课注册时间,在此期间学生可以选课注册,并且允许改 变或取消注册申请。 每个学生选课可不允许超过4门,每门课最多允许60名学生选课注册。 3.查询 可以查询课程信息、学生选课信息和学生、教师信息。

面向对象分析与设计

面向对象提纲 需求分析:了解用户的需求,对现实问题进行分析,确定用户需求 一、用例模型:业务用例、业务场景、系统用例、用例规约(用例描述) 根据不同的情况,用例描述可以有三个级别:1)简单描述2)中间描述3)完全展开描述系统分析:将需求分析的结果确定系统的范围和主要功能。 二、分析模型 1)静态视图(类图) 2)动态视图(系统顺序图) 1.1建立静态视图(问题域建模) 定义这些系统需求而建立的类图称为域模型类图或简称域模型 类之间的关系:依赖、泛化、关联(聚合、组合) 2.1动态视图(系统顺序图)

三、OO模型的集成 OO需求模型中的关系 依赖性通常从顶部流到底部,双向箭头表示在两个方向都产生影响。 四、面向对象分析步骤: 第一步域模型 A、分析域模型得到静态视图(类图) B、画出实体对应的类及其之间的关系,注意此阶段强调的是静态关系 第二步基于用例的需求分析 通过对需求的调查,业务用例的构建和活动图的绘制,最终得到系统用例图 在用例图的下方,应附上每个用例的用例描述 第三步输入和输出:系统顺序图 域模型类图:

用例图:系统顺序图: 从分析到设计

五、面向对象设计 OO程序是由一系列协同完成某一任务的程序对象组成 OO设计目标:识别并确定所有对象,并生成每个用例,比如用户界面对象、问题域对象及DB访问对象 六、OO设计过程和模型 设计步骤:⑴创建设计类图的基础版本,或初步模型 ⑵开发交互图 ⑶根据开发交互图时得到的信息,返回设计类图并开发方法名称 ⑷用包图将设计类图分割成相关的功能 输入的模型: 交互图:用例图、用例描述、活动图、系统顺序图、设计类图 设计类图:域模型类图、交互图 包图:设计类图 七、设计类和设计类图 7.1 设计类图符号:1. 构造型 2. 标准的构造型 构造型:按照模型元素的特征进行归类的一种方式,用《》符号描述 2. 标准的构造型 (0)设计模型中的标准构造型 ⑴实体类 ⑵边界类 ⑶控制类 ⑷数据访问类 设计模型中的标准构造型:

面向对象分析与及设计习题及答案

面向对象分析与及设计习题及答案 一、单项选择题 1.到20世纪末,面向对象软件工程已经逐渐发展成熟,特别是(D)的 形成和广泛使用,采用面向对象分析与编程的软件开发方法已成为软件开发的主流方法。 A. Simula67语言 B. Smalltalk语言 C. Java语言 D. 统一建模语言(UML)的标准 2. 面向对象的运动产生了多种面向对象的语言, 其中(C)是一种混合性面向对象语言, 既支持面向过程的程序设计方法,又支持面向对象的程序设计方法,有广泛应用的基础和丰富开发环境的支持,因而使面向对象的程序设计能得到很快普及。 A. Smalltalk B. Eiffel C. C++ D. Java 3.下列不属于面向对象技术的基本特征的是(B)。 A. 封装性 B. 模块性 C. 多态性 D. 继承性 4. 面向对象程序设计将描述事物的数据与(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)描述了一组交互对象间的动态协作关系,它表示完成某项行为的对象和这些对象之 间传递消息的时间顺序。 A.对象图 B. 协作图 C. 状态图 D. 序列图 9.(D)就是用于表示构成分布式系统的节点集和节点之间的联系的图示,它可以表示系统 中软件和硬件的物理架构。 A. 组件图 B. 协作图 C. 状态图 D. 配置图 10. 使用UML进行关系数据库的(B)时,需要设计出表达持久数据的实体类及其联系,并把它们映射成为关系数据库表(Table)、视图(View)等。 A. 业务Use Case模型设计 B. 逻辑数据模型设计 C. 物理数据模型设计 C. 物理实现设计 11.一个设计得好的OO系统具有(B) A. 低内聚、低耦合的特征 B. 高内聚、低耦合的特征 C. 高内聚、高耦合的特征 D. 低内聚、高耦合的特征 12.下面()不是UML的基本构成元素。(A) A. 控制语言 B. 基本构造块 C. 规则 D. 公共机制

面向对象的分析与设计大作业文档

面向对象的分析与设计课程结课大作业 学号______________ 学生姓名___________ 专业______________ 班级______________ 塔里木大学教务处制

《面向对象的分析与设计》课程结课作业\ 题 分\号 值\—— 一 二三四五六七总结总分 总分5 020100 得分 提示:1、请将答案写在此文档的相应位置,图形需在Rational Rose下绘制,大小可以根据个人需求定制(宽不超过页面1/3);2、请将相关的文档,包括程序的相关文档进行压缩,并将压缩文档上传到“大作业电子版文档”文件夹下命名为“班级-学号-姓名”,纸质版于2015年6月12日上午10:00 —13:00交到逸夫楼109。 一、选题(此题5分) 请根据你抽中的题号,请将其所对应的题目写到下方,并将你要描述的界面进行截图。 题目:照相(即手机的“相机”软件) XPERIA Z系列手机的自带相机软件。图中第五行第 该相机软件为SONY 二列 的软件。 相机

用例图用到的界面:A D E F 类图用到的界面:B C D E F 序列图和协作图用到的界面:A C 状态图用到的界面:A C 活动图用到的界面:AB C D E F 部署图用到的界面:A DEF ./ * 1SVf 九—X IJ .鈕 EuH o StiilE 拍 untflimhwiiBMiiriifn Qi -A 1 i a口X nt^tt帕.9* 自怕 笑Kt*n 关闻寸慎毛连拍JI 人■注册 O Q ? O■□Q :9 c口X 快走总谕 填理杯记? ?D 将害?瞳用朴 isn^g C? 内序科11诬? 4k a C3 Q)gv> W BF \j o Q ! A ◎ a o X 白拘Jt 笑隘快门(鞭牆)X nn-:? nt窒恙 (>o ■ U K>Qi A B 手动 创息啟 JR

面向对象分析与设计_期末复习_2017-2018-2

《面向对象分析与设计》期末复习 2017-2018学年-第2学期 1、题型介绍: 选择题20 * 1分= 20分 填空题5* 2分= 10分 简答题 4 * 7分= 28分 建模分析论述题4题(第1题10分,第2题8分,第3题8分,第4题16分,共42分)= 40分 2、选择题 1、()不是对象具有的特性。 A.标识 B.继承 C.顺序 D.多态性 2、封装是把对象的()结合在一起,组成一个独立的对象。 A.属性和操作 B.信息流 C.消息和事件 D.数据的集合 3、()不是面向对象的典型方法。 A.Coad& Yourdon 方法 B.维也纳方法 C.OMT方法 D.Booch方法 4、UML中有4种关系,分别是依赖、泛化、关联和() A.集成 B.合作 C.实现 D 抽象 5、下列关于状态图的说法中,正确的是() A.状态图是UML中对系统的静态方面进行建模的5种图之一。 B.状态图是活动图的一个特例,状态图中的多数状态是活动状态。 C.状态图是对一个对象的生命周期进行建模,描述对象在其生存期间的动态行为。 D.状态图强调对有几个对象参与的活动过程建模,而活动图更强调对单个反应型对象建模。 6、UML的()模型图由类图、对象图、包图、组件图、和部署图组成。 A.用例 B.静态 C.动态 D.系统。 7、UML的()模型图活动图、顺序图、状态图、写协作图组成。 A.用例 B.静态 C.动态 D.系统。 8、UML的最终产物就是最后提交的可执行的软件系统和() A.用户手册 B.类图 C.动态图 D.相应的软件文档资料

9、在UML的需求分析建模中,()模型图必须与用户反复交流并加以确认。 A.配置 B.用例 C.包 D.动态 10、下面不是用例之间主要关系的是() A.扩展 B.包含 C.依赖 D.泛化 11、对于一个电子商务网站而言,以下不适合作为用例的选项是() A.登录 B.预定商品 C.购物车 D.结账 12、UML的客户需求分析模型包括()模型、类图、对象图和活动图。 A.用例 B.静态 C.动态 D.系统 13、UML客户需求分析产生的用例模型描述了系统的() A.状态 B.体系结构 C.静态模型 D.功能要求 14、在UML的需求分析模型中,用例建模必须与()反复交流并加以确认。 A.软件生产商 B.用户 C.软件开发人员 D.问题领域的专家 15、在UML的需求分析建模中,对用例模型中的用例进行细化说明应使用() A.活动图 B.状态图 C.配置图 D.组件图 16、类图应该画在Rational Rose的()视图中。 A、Use Case View B、Login View C、Component View D、Deployment View 17、类通常可以分为实体类、()和边界类。 A 、父类B、子类C、控制类D、祖先类 18、对象特征的要素是()。 A、状态 B、行为 C、标识 D、属性 19、下列关于接口的关系说法不正确的是()。 A、接口是一种特殊的类 B、所有接口都是有构造型<>的类 C、一个类可以通过实现接口从而支持接口所指定的行为 D、在程序运行的时候,其他对象不仅需要依赖于此接口,还需要知道该类对接口实现的其他信息 20、下列关于类方法的声明,不正确的是()。 A、方法定义了类所许可的行动 B、从一个类创建的所有对象可以使用同一组属性和方法 C、每个方法应该有一个参数 D、如果在同一个类中定义了类似的操作,则它们的行为应该是类似的 21、UML的系统分析进一步要确立的3个系统模型是()、对象动态模型和系统功能模型。 A、数据模型 B、对象静态模型 C、对象关系模型 D、体系结构模型 22、UML的客户需求分析、系统分析和系统设计阶段产生的模型,其描述图符()。 A、完全相同 B、完全不同 C、不可以通用 D、稍有差异 23、类和对象都有属性,它们的差别是:类描述了属性的类型,而对象的属性必有()。 A、正负号 B、动作 C、具体值 D、私有成员 24、UML系统设计的一般步骤包括系统对象设计、系统体系结构设计和系统设计的()和审查等 A、建模 B、完善 C、优化 D、迭代 25、顺序图和协作图主要用于对用例图中()的建模,用它们来描述用例图的行为。

面向对象的分析设计实现--图书管理系统

实验报告面向对象的分析设计实现—图书管理系统 一.需求分析 1.1系统需求描述 一般图书馆管理系统主要用于对图书馆日常工作的管理,主要任务是用计算机对读者、图书等各种信息进行日常管理,如查询、修改、增加、删除、图书借阅和归还的管理等。本系统实现了图书馆的信息化管理,完成了图书馆管理系统的基本功能。 一般图书馆管理系统主要包括用户登录子系统、用户管理子系统、图书管理子系统、图书借阅与归还、图书和用户信息查询子系统四个部分,各部分主要功能如下: 用户登录子系统:用于数据库的连接,主界面的设计和不同身份用户的登录管理。 用户管理子系统:用于用户信息的管理,如用户添加、用户信息修改、用户删除。 图书管理子系统:用于图书信息的管理,如新书入库、图书信息修改、图书信息删除。 图书借阅与归还子系统:用于用户借阅和归还图书。 图书和用户信息查询:图书和用户信息的查询。 1.2系统功能结构图

图 1.1 图书管理系统分析系统流程图 1.3 系统解决方案 以上述一般的图书管理系统分析为构思原型。为简化系统,忽略掉其他复杂琐碎的功能需求,仅保留图书信息的录入、修改和读者借、续借、还的功能。读者与管理员通过界面对象调用控制类对象,控制对象进行各种操作并把信息写入数据库。 二.系统设计 2.1 系统E-R图 图 1.2 用户实体图

图1.3 书籍实体图 图 1.4 实体属性图 2.2数据库表结构 表2.1 图书信息表

表2.2 用户借阅表 表2.3用户信息表 2.3用例文档 本系统共设置四个活动者。分别是TT_People、TT_Registrar、TT_Reader 和TT_Database。其中TT_People泛指与系统发生关系的人;TT_Registrar为系统管理员,负责添加、修改图书信息;TT_Reader为所有读者,读者可能发生借书、续借、还书的行为;TT_Database为存储各种信息的数据库对象。另:考虑到现实图书馆中还存在“图书馆管理员”这一角色,但其所起的作用仅为代替读者完成各种系统操作,故没有设置此活动者。 系统中共有五个用例。TT_Addinfo、TT_Modifyinfo、TT_Borrow、TT_Renew 和TT_Return。TT_Addinfo表示管理员添加图书信息;TT_Modifyinfo表示修改图书信息;TT_Borrow表示读者借阅图书;TT_Renew表示读者续借图书;TT_Return表示读者归还图书。

最新面向对象分析与设计课程总结

面向对象分析与设计 课程总结 0923010208 指导老师:庄育飞 这学期学院开设了面向对象分析与设计(UML)这门课,通过老师的讲解,自己一些相关书籍的阅读和实践作业的完成,逐步对课程有了由浅及深的认识。我觉得学习这门课还是受益匪浅的。 面向对象(Object Oriented,OO)是一门以实践为主课程,课程中可以分开两块OOA(面向对象系统分析)和OOD(面向对象系统设计)。 OOA(面向对象系统分析)主要内容: 研究问题域和用户需求,运用面向对象的观点和原则发现问题域中与系统责任有关的对象,以及对象的特征和相互关系.OOA不涉及针对具体实现采取的设计决策和有关细节,独立于具体实现的系统模型。是一个完整确切反映问题域和用户需求的系统模型。OOA的优势:复

用、可扩展、可维护性、弹性。 OOD(面向对象系统设计):以OOA模型为基础,按照实现的要求进行设计决策,包括全局性的决策和局部细节的设计,与具体的实现条件相关。OOD的步骤:细化重组类→细化和实现类之间的关系,明确其可见性→增加属性,指定属性的类型和可见性→分配职责,定义执行每个职责的方法→对消息驱动的系统,明确消息传递的方式→利用设计模式进行局部设计→画出详细的类图和时序图。 面向对象的分析与设计方法将致力于解决传统软件研发过程中由于软件模块化结构化程度不高带来的软件重用性差、软件可维护性差、开发出的软件不能满足用户需要等方面问题。面向对象的概念包括:对象、对象的状态和行为、类、类的结构、消息和方法。对象概念将包含对象唯一性、抽象性、继承性、多态性的重要特征。面向对象的要素包含:抽象、封装性、共享性三方面。 在设计模式的研究过程中,我们组选择的是迭代器(Iterator)的设计模式研究。完成设计研究后,我对迭代器的设计模式有了更为深刻的理解。迭代器(Iterator)提供一个方法顺序访问一个聚合对象的各个元素,而又不暴露该对象的内部表示。并了解到迭代器设计模式一般在以下三类场合使用较多。 ●访问一个聚合对象的内容而无需暴露它的内部表示。 ●支持对聚合对象的多种遍历。因为遍历状态是保存在每一个迭代器对象 中的。

(完整版)面向对象程序设计与面向过程程序设计的区别(2)

面向过程程序设计和面向对象程序设计的区别 面向过程程序设计我个人的理解简单来说,他考虑问题的方式是面向流程的,一个程序的设计思路就是解决一个问题的流程。就好比游戏先登入界面,再输入密码,然后选择角色,在然后进入游戏玩耍,结束... .... 这把这些步样就是面向过程。面向过程就是分析出解决问题所需要的步骤,然后用函数骤一步调用就可以了一步实现,使用的时候一个一个依次。可以看出面向过程化程序设计是先确定算法,再确定数据结构。而面向对象程序设计是面向问题中的各种独立个体的,程序的析设分计过程就是将程序分解成不同对象(不同概念体)之间的交互的过程。这就好比在针对某个工程或游戏设计程序时先不考虑,游戏是怎么玩的,工作是怎么做的,而先会去找,游戏或工程中有哪些人或事物参与(一般选择:用户,玩家,角色等等),然后再看他们都有什么用,都干了些什么,针对这个区设计方法。最后在通过这些千丝万缕的联系把他们分门别类的,组装在一起。可以看出面向过程化程序设计是先确定数据结构再确定算法。 从上面很容易看出,面向过程的程序上一步和下一步环环相扣,他只考虑实现客户的需求不考虑以后扩展,如果以后客户的需求有变化那代码量要改变非常大耗费的时间也相当多。从本质上说,面向过程基本上是一种状态机,不利于修改,当新状态出现的时候,甚至可能需要重设每一个状态解决实现。所以说面向过

程是一种直接的编程方法,它是按照编程语言的思路考虑问题。尤其是想C语言这种过程式语言,它就是通过顺序执行一组语句来实现一个功能,这些语句的执行过程就是整个程序。不同的语言解决同一个问题的过程是不一样的。 而面向对象的程序设计很多东西都是独立的,每个对象都可以重复使用。而面向对象程序设计强调“封装”,“继承“和“多态”。数据和与数据相关的操作被包装成对象(严格的说是“类”),每一种对象是相对完整和独立的。对象可以有派生的类型,派生的类型可以覆盖(或重载)原本已有的操作。所有的这些,是为了达成更好的内聚性,即一种对象做好一件(或者一类相关的)事情,对象内部的细节外面世界不关心也看不到;以及降低耦合性,即不同种类的对象之间相互的依赖尽可能降低。而所有的这些,都有助于达成一个崇高的目标,就是可复用性。 下面举个例子来说明面向过程的程序和面向对象的程序设计的区别: 用面向过程的思想去考虑它应该是这样的:如何启动汽车、如何起步、加速、刹车、熄火等一个个操作。面向过程是把所有的功能全部在一个大的类里定义出来,当系统庞大时,功能多了,各种操作之间的调用关系也很复杂,当需要修改一个功能时就可能引发一连串的改动,使修改和维护成本增加,而不利于修改。 而面向对象则以汽车为对象,一切由汽车开始,以上的可用操

面向对象三维图形引擎的设计与实现

第39卷 第1期 电 子 科 技 大 学 学 报 V ol.39 No.1 2010年1月 Journal of University of Electronic Science and Technology of China Jan. 2010 面向对象三维图形引擎的设计与实现 邱 航,陈雷霆 (电子科技大学计算机科学与工程学院 成都 610054) 【摘要】提出并实现了一种面向对象的三维图形渲染引擎Gingko ,对引擎的体系结构、各模块之间的关系以及关键技术进行了分析说明。该引擎提供可扩展的软件体系结构、高效的场景处理方法、方便易用的应用程序接口,为三维图形应用的快速开发和高效运行提供了支撑。实验证明,该引擎具有运行稳定、渲染速度快的特点,对于大规模室外场景的渲染速度能保持在20 fps 以上。 关 键 词 图形引擎; 插件; 实时渲染; 真实感渲染 中图分类号 TP391.41 文献标识码 A doi:10.3969/j.issn.1001-0548.2010.01.028 Design and Implementation of Object-Oriented 3D Graphics Engine QIU Hang and CHEN Lei-ting (School of Computer Science and Engineering, University of Electronic Science and Technology of China Chengdu 610054) Abstract An object-oriented 3D graphics engine is presented and implemented. The general architecture, the relationships of every module, and the key techniques of the engine are discussed. This engine can support extendable software architectures, and provide high efficient scene rendering method and convenient application programming interfaces. It can greatly accelerate the development of 3D graphics and provide supports for its efficient running. Experimental results show that this engine has high stability and high rendering speed, for rendering large-scale out-door scene, the speed is still above 20 fps. Key words graphics engine; plug-in; real time rendering; realistic rendering 收稿日期:2008 ? 06 ? 25; 修回日期:2009 ? 04 ? 28 基金项目:国家863高技术研究发展计划项目(2006AA01Z335);总装“十一五”预研项目 作者简介:邱 航(1978 ? ),男,在职博士生,讲师,主要从事计算机图形学、数字媒体技术方面的研究. 实时真实感图形生成是计算机科学技术的重要 研究方向,目标是使计算机可以产生与真实世界相 同或高度近似的视觉环境,从而使用户获得身临其 境的视觉感受[1-2],其应用范围覆盖大众娱乐、视景 仿真、城市规划及文化教育等诸多领域。 近年来,随着计算机图形软、硬件的不断发展, 人们对实时真实感渲染以及场景复杂度提出了更高 的要求。传统的直接使用底层图形接口如OpenGL 、 DirectX 开发图形应用的模式越来越暴露出开发复 杂性大、周期长、维护困难的缺陷。鉴于以上原因, 三维图形引擎相关技术受到了广泛的关注。目前, 国外已有众多商用或开源三维图形引擎,如 OGRE [3]、OSG [4]等。 OGRE(object-oriented graphics rendering engine) 是一种用C++实现的跨平台开源三维图形引擎。该 引擎底层对DirectX 、OpenGL 进行完全封装,采用 了基于插件的体系结构,方便用户使用和功能扩展。 但OGRE 过于庞大和复杂,使用户感觉掌握困难。此外,由于底层对DirectX 和OpenGL 的完全封装,用户无法对基本图形API 进行直接操作。 OSG(open scene graph)是一款著名的3D 图形引擎,主要用于虚拟现实、仿真和游戏等领域。OSG 底层只提供了对OpenGL 的封装,与其他图形引擎一样,拥有诸如场景管理、地形管理和底层API 封装等功能。但OSG 的渲染管理比较特殊,它不是采用渲染队列进行渲染管理,而是采用渲染树,更为高效。 Irrlicht 引擎是一款开源、跨平台的3D 引擎,底层封装了DirectX 和OpenGL ,并提供基于GLSL 和HLSL 的可编程渲染管道。该引擎结构简单、速度快。但Irrlicht 以牺牲渲染质量达到高速的目的,在光照等真实感方面比较薄弱。 纵观目前国内外三维图形引擎的发展格局,开发具有自主知识产权、融入新方法、新技术的三维图形引擎是我国在信息技术领域的一项重要目标。 本文提出并实现了一种面向对象的三维图形引擎Gingko ,该引擎不仅能提高用户的开发速度,而

uml面向对象的分析与设计考题与答案

u m l面向对象的分析与设计考题与答案 集团文件版本号:(M928-T898-M248-WU2669-I2896-

《面向对象的分析与设计》练习题 一、选择题 1.UML 语言不支持的建模方式有(D )。 A. 静态建模 B.动态建模 C. 模块化建模 D. 功能建模 2.一个设计得好的OO系统具有( B )。 A. 低内聚、低耦合的特征 B.高内聚、低耦合的特征 C. 高内聚、高耦合的特征 D.低内聚、高耦合的特征 3.下列不属于面向对象技术的基本特征的是( B)。 A. 封装性 B. 模块性 C. 多态性 D. 继承性 4. 面向对象程序设计将描述事物的数据与 ( C ) 封装在一起,作为一个相互依存、不可分割的整体来处理。 A. 信息 B. 数据隐藏 C. 对数据的操作 D. 数据抽象 5. 关于面向对象方法的优点,下列不正确的叙述是(C )。 A. 与人类习惯的思维方法比较一致 B. 可重用性好 C. 以数据操作为中心 D.可维护性好 6.用例之间的关系不包括以下哪种关系?D A.泛化 B.包含 C. 扩展 D. 聚集和组合 7.顺序图中不包括以下哪种元素?(A) A.用例 B. 对象 C. 生命线 D. 消息

8. 用例图中不包括以下哪种元素?(B) A. 用例 B. 类 C. 参与者 D. 关联 9. 继承机制的作用是 ( C )。 A. 信息隐藏 B. 数据封装 C. 派生新类 D. 数据抽象 10. 面向对象方法学中,对象之间仅能通过(C )相联系。 A. 类 B.抽象 C. 消息 D. 封装 11. 脚本与用例之间的关系类似与(A)之间的关系。 A. 对象与类 B. 参与者与用例 C. 顺序图和抽象类 D. 消息和对象 12. 下列元素中,(D )不属于消息的组成。 A. 提供服务的对象 B. 服务 C. 输入信息 D. 事件 13. ( D )描述了一组交互对象间的动态协作关系,它表示完成某项行为的对象和这些对象之间传递消息的时间顺序。 A.对象图 B. 协作图 C. 状态图 D. 顺序图 14. ( D)是从用户使用系统的角度描述系统功能的图形表达方法。 A. 类图 B. 对象图 C. 序列图 D. 用例图 15. ( C ) 是表达系统的类及其相互联系的图示,它是面向对象设计的核心,建立状态图、协作图和其他图的基础。

相关文档
最新文档