面向对象技术(答案)

面向对象技术(答案)
面向对象技术(答案)

●下面关于面向对象方法中消息的叙述,不正确的是____(2)__。

(2)A. 键盘、鼠标、通信端口、网络等设备一有变化,就会产生消息

B.操作系统不断向应用程序发送消息,但应用程序不能向操作系统发送消息C. 应用程序之间可以相互发送消息

D.发送与接收消息的通信机制与传统的子程序调用机制不同

正确答案:B

【解析】在系统中既使用对象又使用类和继承等机制,而且对象之间仅能通过传递消息实现彼此的通信,这样的方法才称为"面向对象的方法"。

●面向对象技术中,对象是类的实例。对象有三种成份:____(3)____、属性和方法(或操作)。

(3) A. 标识B. 规则C. 封装D. 消息

正确答案:A

解析:对象有三种成份:标识(对象名)、属性和方法(或操作)。

●在面向对象技术中,类属是一种__(1)__机制。一个类属类是关于一组类的一个特性抽象,它强调的是这些类的成员特征中与__(2)__的那些部分,而用变元来表示与__(3)__的那些部分。

(1)A.包含多态B.参数多态C.过载多态D.强制多态

(2)A.具体对象无关B.具体类型无关C.具体对象相关D.具体类型相关

(3)A.具体对象无关B.具体类型无关C.具体对象相关D.具体类型相关

解析:在面向对象技术中,对象在收到信息后要予以响应。不同的对象收到同一消息可产生完全不同的结果,这一现象称为多态。多态有多种不同的形式,其中参数多态和包含多态称为通用多态,过载多态和强制多态成为特定多态。参数多态应用比较广泛,被称为最纯的多态。这是因为同一对象、函数或过程能以一致的形式用于不同的类型。包含多态最常见的例子就是子类型化,即一个类型是另一类型的子类型。过载多态是同一变量被用来表示不同的功能,通过上下文以决定一个类所代表的功能。即通过语法对不同语义的对象使用相同的名,编译能够消除这一模糊。强制多态是通过语义操作把一个变元的类型加以变换,以符合一个函数的要求,如果不做这一强制性变换将出现类型错误。类型的变换可在编译时完成,通常是隐式地进行,当然也可以在动态运行时来做。类属类(generic class)仅描述了适用于一组类型的通用样板,由于其中所处理对象的数据类型尚未确定,因而程序员不可用类属类直接创建对象实例,即一个类属类并不是一种真正的类类型。类属类必须经过实例化后才能成为可创建对象实例的类类型。类属类的实例化是指用某一数据类型替代类属类的类型参数。类属类定义中给出的类型参数称为形式类属参数,类属类实例化时给出的类型参数称为实际类属参数。如果类属类实例化的实际类属参数可以是任何类型,那么这种类属类称为无约束类属类。然而在某些情况下,类属类可能要求实际类属参数必须具有某些特殊的性质,以使得在类属类中可应用某些特殊操作,这种类属类称为受约束类属类。

●类的实例化过程是一种实例的合成过程,而不仅仅是根据单个类型进行的空间分配、初始化和绑定。指导编译程序进行这种合成的是_(47)_。

(47)A.类层次结构B.实例的个数C.多态的种类D.每个实例的初始状态

●重置的基本思想是通过_(48)_机制的支持,使得子类在继承父类界面定义的前提下,用适合于自己要求的实现去置换父类中的相应实现。

(48)A.静态绑定B.对象引用C.类型匹配D.动态绑定

●OMT 定义了三种模型来描述系统。_(49)_可以用状态图来表示;_(50)_可以用数据流图来表示。_(51)_为上述两种模型提供了基本的框架。

(49)A.对象模型B.功能模型C.动态模型D.类模型

(50)A.对象模型B.功能模型C.动态模型D.类模型

(51)A.对象模型B.功能模型C.动态模型D.类模型

●在UML 提供的图中, ____(31)____用于描述系统与外部系统及用户之间的交互;___(32)___用于按时间顺序描述对象间交互。

(31)A.用例图B.类图C.对象图D.部署图

(32)A.网络图B.状态图C.协作图D.序列图

在关于类的实例化的描述中,正确的是__(45)___。

●在关于类的实例化的描述中,正确的是__(45)___。

(45)A.同一个类的对象具有不同的静态数据成员值

B.不同的类的对象具有相同的静态数据成员值

C.同一个类的对象具有不同的对象自身引用(this)值

D.不同的类的对象具有相同的对象自身引用(this)值

正确答案:C

学过面向对象编程语言的人,应该对this这个关键字并不陌生,它是对象自身引用值。程序当运行时,this相当于当前类产生对象的名称。所以对于同一个类的对象具有不同的对象自身引用(this)值。

●在某个信息系统中,存在如下的业务陈述:①一个客户提交0 个或多个订单;

②一个订单由一个且仅由一个客户提交。系统中存在两个类:“客户”类和“订单”类。对应每个“订单”类的实例,存在___(46)___“客户”类的实例;对应每个“客户”类的实例,存在___(47)___个“订单”类的实例。

(46)A.0 个B.1个C.1 个或多个D.0 个或多个

(47)A.0 个B.1 个C.1 个或多个D.0 个或多个

●下列关于静态多态实现重载的描述中正确的是____(30)___。

(30)A.重载的方法(函数)的方法名(函数名)可以不同

B.重载的方法(函数)必须在返回值类型以及参数类型上有所不同

C.重载的方法(函数)必须在参数顺序或参数类型上有所不同

D.重载的方法(函数)只需在返回值类型上有所不同

试题(30)分析

方法的重载必须保证方法的签名不同,所谓方法的签名是指函数或方法的名字和参数的类型和参数的顺序。重载要求在参数的顺序或者参数的类型上有所不同,对返回值没有要求。参考答案(30)C

●程序设计语言提供了基本类型及其相关的操作,而____(31)____则允许开发者自定义一种新的类型及其相关的操作。

供选择的答案:

(31)A.对象B.实例C.类D.引用

试题(31)分析

类是能够由用户定义的一种新的类型。对象是类的实例。

参考答案(31)C

●___(32)___表示了对象间“is-a”的关系。

供选择的答案:

(32)A.组合B.引用C.聚合D.继承

试题(32)分析

继承表达了子类对象是一种父类对象的关系。

参考答案(32)D

●若对象A 可以给对象B 发送消息,那么___(48)___。

供选择的答案:

(48)A.对象B 可以看见对象A B.对象A 可看见对象B

C.对象A、B 相互不可见

D.对象A、B 相互可见

试题(48)分析

对象A可以给对象B发送消息,那么表明对象A可以调用对象B的方法,那么对象A可以看见对象B。

参考答案(48)B

●类描述了一组对象共同的特性,下列叙述中正确的是____(49)____。

供选择的答案:

(49)A.类本身不能具有变量B.对象具有类定义的所有变量的一份拷贝

C.对象间不能共享类定义的变量

D.可通过类名访问静态变量(类变量)

试题(49)分析

类也可以有变量,所有类的对象都共享此类的变量。参考答

案(49)D

●___(50)___反映了类间的一种层次关系,而___(51)____反映了一种整体与部分的关系。

(50)A.继承B.组合C.封装D.多态

(51)A.继承B.组合C.封装D.多态

试题(50)、(51)分析

继承反映了类间的一种层次关系,而组合反映了一种整体与部分的关系。参考答案

(50)A (51)B 试题(52)

●下列叙述中正确的是___(52)__。

供选择的答案:

(52)A.面向对象程序设计语言都不支持过程化的程序设计

B.面向对象系统只可采用面向对象程序设计语言实现

C.某些过程化程序设计语言也可实现面向对象系统

D.面向对象程序设计语言不支持对成员变量的直接访问

试题(52)分析

某些面向对象的程序设计语言支持过程化的程序设计,过程化的程序设计语言也可实现面向对象系统。参考答案(52)C

●在面向对象软件开发过程中,采用设计模式(37)。

(37)A.允许在非面向对象程序设计语言中使用面向对象的概念

B.以复用成功的设计和体系结构

C.以减少设计过程创建的类的个数

D.以保证程序的运行速度达到最优值

●以下关于单身模式(Singleton)的描述中,正确的是(38)。

(38)A.它描述了只有一个方法的类的集合

B.它能够保证一个类只产生一个唯一的实例

C.它描述了只有一个属性的类的集合

D.它能够保证一个类的方法只能被—个唯一的类调用

正确答案:B

单身模式(Singleton是一种创建型模式。创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建、组合和表示它的对象。对于系统中的某些类而言,只有一个实例是很重要的。单身模式的意图就是保证一个类仅有一个实例,并提供一个访问它的全局访问点。

●下列关于一个类的静态成员的描述中,不正确的是(39)。

(39)A.该类的对象共享其静态成员变量的值

B.静态成员变量可被该类的所有方法访问

C.该类的静态方法只能访问该类的静态成员变量

D.该类的静态数据成员变量的值不可修改

●在MVC(模型/视图/控制器)模式中,视图部分描述的是(40)。(40)A.将应用问题域中包含的抽象领域知识呈现给用户的方式

B.应用问题域中所包含的抽象类

C.用户界面对用户输入的响应方式

D.应用问题域中包含的抽象领域知识

正确答案:A

解析:MVC模式,即模型—视图—控制(Model-View-Controller)模式,它实际上是一种架构

模式,是为那些需要为同样的数据提供多个视图的应用程序而设计的,它很好地体现了数据层与表示层的分离。

MCV把应用程序分为3种对象类型。

. 模型:应用问题域中包含的抽象领域知识;

. 视图:将应用问题域中包含的抽象领域知识呈现给用户的方法:一个模型可以用于多个视图;

. 控制器:用户界面对用户输入的响应方式。

●对于如下所示的UML 类图,正确的描述是(41)。

(41)A.类B 的实例中包含了对类C 的实例的引用

B.类A 的实例中包含了对类B 的实例的引用

C.类A 的实例中包含了对类C 的实例的引用

D.类B 的实例中包含了对类A 的实例的引用

正确答案:B

解析:UML类图一般包含3个组成部分。第一个是类名,第二个是属性,第三个是该类提供的方法(类的性质可以放在第四部分;如果类中含有内部类,则会出现第五个组成部分)。类名部分是不能省略的,其他组成部分可以省略。类名书写规范:正体字说明类是可被实例化的,斜体字说明类为抽象类。属性和方法书写规范:修饰符[描述信息]属性、方法名称[参数][:返回类型|类型]属性和方法之前可附加的可见性修饰符:加号(+)表示public,减号(-)表示private,#号表示protected,省略这些修饰符表示具有package(包)级别的可见性。如果属性或方法具有下画线,则说明它是静态的。类的性质是由一个属性、一个赋值方法和一个取值方法组成的。书写方式和方法类似。常见的关系有一般化关系、实现关系、聚合关系、合成关系和依赖关系。请注意不同关系在图中连线表示的不同。一般化关系表示类与类、接口与接口之间的继承关系。关系中的箭头由子类指向父类。在Java中,用extends关键字来直接表示这种关系。

● UML 中关联的多重度是指(42)。

(42)A.一个类有多少个方法被另一个类调用

B.一个类的实例能够与另一个类的多少个实例相关联

C.一个类的某个方法被另一个类调用的次数

D.两个类所具有的相同的方法和属性

●已知3 个类A、B 和C,其中类A 由类B 的一个实例和类C 的1 个或多个实例构成。能够正确表示类A、B 和C 之间关系的UML 类图是(43)。

正确答案:A

解析:类A由类B的一个实例和类C伪1个或多个实例构成,可见这是整体与部分的关系。在UML中,用聚集来表示“整体与部分”这种关联,在整体一端连接—个空心菱形。再根据上题中重复度的解释,显然选择A。选项B是普通关联,不能准确描述题目要求。[*]

●面向对象分析的第一步是(33).

(33)A.定义服务B.确定附加的系统约束

C.确定问题域D.定义类和对象

●面向对象程序设计语言为(34)提供支持。

(34)A.面向对象用例设计阶段B.面向对象分析阶段

C.面向对象需求分析阶段D.面向对象实现阶段

●下面关于面向对象的描述正确的(35)。

(35)A.针对接口编程,而不是针对实现编程

B.针对实现编程,而不是针对接口编程

C.接口与实现不可分割

D.优先使用继承而非组合

●下面关于UML 文档的叙述中正确的是(36)。

(36)A.UML 文档指导开发人员如何进行面向对象分析

B.UML 文档描述了面向对象分析与设计的结果

C.UML 文档给出了软件的开发过程和设计流程

D.UML 文档指导开发人员如何进行面向对象设计

解析:UML文档仅是设计者与开发人员采用UML语言进行系统分析与设计的结果,并没有给出如何进行系统开发和采用哪种开发流程,它也不指导开发人员如何进行面向对象设计。

● UML 的设计视图包含了类、接口和协作,其中,设计视图的静态方面由(37)和(38)表现;动态方面由交互图、(39)表现。

(37)A.类图B.状态图C.活动图D.用例图

(38)A.状态图B.顺序图C.对象图D.活动图

(39)A.状态图和类图B.类图和活动图

C.对象图和状态图D.状态图和活动图

● UML 中的构件是遵从一组接口并提供一组接口的实现,下列说法错误的是(40)。

(40)A.构件应是可替换的B.构件表示的是逻辑模块而不是物理模块

C.构件应是组成系统的一部分D.构件与类处于不同的抽象层次

正确答案:B

解析:构件应该是物理模块而不是逻辑模块。

●设计模式具有(41)的优点。

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

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

●下面的(42)模式将对象组合成树形结构以表示“部分一整体”的层次结构,并使得用户对单个对象和组合对象的使用具有一致性。

(42)A.组合(Composite) B.桥接(Bridge)

C.修饰(Decorator) D.外观(Facade)

●下图描述了一种设计模式,该设计模式不可以(43)。

(43)A.动态决定由一组对象中某个对象处理该请求

B.动态指定处理一个请求的对象集合,并高效率地处理一个请求

C.使多个对象都有机会处理请求,避免请求的发送者和接收者间的祸合关系D.将对象连成一条链,并沿着该链传递请求

处理一个请求的物件集合可以被动态的指定,但并不见得高效率.

●在面向对象程序设计中,常常将接口的定义与接口的实现相分离,可定义不同的类实现相同的接口。在程序运行过程中,对该接口的调用可根据实际的对象类型调用其相应的实现。为达到上述目的,面向对象语言须提供(44)机制。(44)A.继承和过载(overloading) B.抽象类

C.继承和重置(overriding) D.对象目身引用

超载即为重载,重置是覆盖.(也是动态绑定,多态)

●面向对象分析与设计是面向对象软件开发过程中的两个重要阶段,下列活动中,(36)不属于面向对象分析阶段。

(36)A. 构建分析模型B. 识别分析类C.确定接口规格D. 评估分析模型

●在某大学学生学籍管理信息系统中,假设学生年龄的输入范围为16~40,则根据黑盒测试中的等价类划分技术,下面划分正确的是(37)。

(37)A. 可划分为2 个有效等价类,2 个无效等价类

B. 可划分为1 个有效等价类,2 个无效等价类

C. 可划分为2 个有效等价类,1 个无效等价类

D. 可划分为1 个有效等价类,1 个无效等价类

●面向对象分析需要找出软件需求中客观存在的所有实体对象(概念),然后归纳、抽象出实体类。(38)是寻找实体对象的有效方法之一。

(38)A. 会议调查B. 问卷调查C. 电话调查D. 名词分析

●在“模型-视图-控制器”(MVC)模式中,(39)主要表现用户界面,(40)用来描述核心业务逻辑。

(39)A. 视图B. 模型C. 控制器D. 视图和控制器

(40)A. 视图B. 模型C. 控制器D. 视图和控制器

●在进行面向对象设计时,采用设计模式能够(41)。

(41)A. 复用相似问题的相同解决方案B. 改善代码的平台可移植性

C. 改善代码的可理解性

D. 增强软件的易安装性

●下面给出了四种设计模式的作用:外观(Facade):为子系统中的一组功能调用提供一个一致的接口,这个接口使得这一子系统更加容易使用;装饰(Decorate):当不能采用生成子类的方法进行扩充时,动态地给一个对象添加一些额外的功能;单件(Singleton):保证一个类仅有一个实例,并提供一个访问它的全局访问点;模板方法(Template Method):在方法中定义算法的框架,而将算法中的一些操作步骤延迟到子类中实现。请根据下面叙述的场景选用适当的设计模式。若某面向对象系统中的某些类有且只有一个实例,那么采用(42)设计模式能够有效达到该目的;该系统中的某子模块需要为其它模块提供访问不同数据库系统(Oracle、SQL Server、DB2 UDB 等)的功能,这些数据库系统提供的访问接口有一定的差异,但访问过程却都是相同的,例如,先连接数据库,再打开数据库,最后对数据进行查询,(43)设计模式可抽象出相同的数据库访问过程;系统中的文本显示类( TextView )和图片显示类(PictureView )都继承了组件类(Component),分别显示文本和图片内容,现需要构造带有滚动条、或者带有黑色边框、或者既有滚动条又有黑色边框的文本显示控件和图片显示控件,但希望最多只增加三个类,(44)设计模式可以实现该目的。

(42)A. 外观B.装饰C. 单件D. 模板方法

(43)A. 外观B.装饰C. 单件D. 模板方法

(44)A. 外观B.装饰C. 单件D. 模板方法

●在采用标准UML 构建的用例模型(Use-Case Model)中,参与者(Actor)与用例(Use Case)是模型中的主要元素,其中参与者与用例之间可以具有(45)关系。

(45)A. 包含(include) B. 递归(Recursive)

C. 关联(Association)

D. 组合(Composite)

●当采用标准UML 构建系统类模型(Class Model)时,若类B 除具有类A 的全部特性外,类B 还可定义新的特性以及置换类A 的部分特性,那么类B 与类A 具有(46)关系;若类A 的对象维持类B 对象的引用或指针,并可与类C 的对象共享相同的类B 的对象,那么类A 与类B 具有(47)关系。

(46)A. 聚合B. 泛化C. 传递D. 迭代

(47)A. 聚合B. 泛化C. 传递D. 迭代

●(37)表示了系统与参与者之间的接口。在每一个用例中,该对象从参与者处收集信息,并将之转换为一种被实体对象和控制对象使用的形式。

(37)A. 边界对象B. 可视化对象C. 抽象对象D. 实体对象

●在UML 语言中,下图中的a、b、c 三种图形符号按照顺序分别表示(38)。

(38)A. 边界对象、实体对象、控制对象B. 实体对象、边界对象、控制对象C. 控制对象、实体对象、边界对象D. 边界对象、控制对象、实体对象

正确答案:C

解析:本题考查的是采用UML进行面向对象设计过程中,各种不同对象的图形表示,按照上述的图形顺序,分别表示控制对象、实体对象、边界对象。

●在下面的用例图(UseCase Diagram)中,X1、X2 和X3 表示(39),已知UC3 是抽象用例,那么X1 可通过(40)用例与系统进行交互。并且,用例(41)是UC4 的可选部分,用例(42)是UC4的必须部分。

(39)A. 人B. 系统C. 参与者D. 外部软件

(40)A. UC4、UC1 B. UC5、UC1 C. UC5、UC2 D. UC1、UC2

(41)A. UC1 B. UC2 C. UC3 D. UC5

(42)A. UC1 B. UC2 C. UC3 D. UC5

●(43)设计模式定义了对象间的一种一对多的依赖关系,以便当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动刷新。

(43)A. Adapter(适配器) B. Iterator(迭代器)

C. Prototype(原型)

D. Observer(观察者)

● UML 中有多种类型的图,其中,(44)对系统的使用方式进行分类,(45)显示了类及其相互关系,(46)显示人或对象的活动,其方式类似于流程图,通信图显示在某种情况下对象之间发送的消息,(47)与通信图类似,但强调的是顺序而不是连接。

(44)A. 用例图B. 顺序图C. 类图D. 活动图

(45)A. 用例图B. 顺序图C. 类图D. 活动图

(46)A. 用例图B. 顺序图C. 类图D. 活动图

(47)A. 用例图B. 顺序图C. 类图D. 活动图

●(12)是指把数据以及操作数据的相关方法组合在同一个单元中,使我们可以把类作为软件中的基本复用单元,提高其内聚度,降低其耦合度。面向对象中的(13)机制是对现实世界中遗传现象的模拟,通过该机制,基类的属性和方法被遗传给派生类。

(12)A. 封装B. 多态C. 继承D. 变异

(13)A. 封装B. 多态C. 继承D. 变异

●(14)以静态或动态的连接方式,为应用程序提供一组可使用的类。(15)除了提供可被应用程序调用的类以外,还基本实现了一个可执行的架构。(14)A. 函数库B. 类库C. 框架D. 类属

(15)A. 函数库B. 类库C. 框架D. 类属

正确答案:B

本题考查的是框架和类库的概念与区别。类库为应用程序提供了一组可以被使用的类,而框架除了提供类之外,还基本实现了一个可以执行的架构。函数库提供被调用的函数。

●(16)是一种面向数据流的开发方法,其基本思想是软件功能的分解和抽象。(16)A. 结构化开发方法B. Jackson 系统开发方法

C. Booch 方法

D. UML(统一建模语言)

本题考查软件开发方法基本概念。结构化开发方法是传统的、也是应用较为广发的一种软件开发方法,它基于数据流进行需求分析和软件设计,用抽象模型的概念,按照软件内部数据传递和转换关系,对问题和功能自顶向下逐层分解。Jackson系统开发方法是一种典型的面向数据结构的分析和设计方法,以活动为中心,一连串活动的顺序组合成一个完整的工作进程。Booch方法是一种面向对象的软件开发方法。UML仅仅是一种建模标准语言,规定了构成软件的各个元素和构件的图示规范。

●采用UML 进行软件设计时,可用(17)关系表示两类事物之间存在的特殊/一般关系,用聚集关系表示事物之间存在的整体/部分关系。

(17)A. 依赖B. 聚集C. 泛化D. 实现

本题考查对UML中关系概念的理解。按照面向对象技术的描述,若两类事物之间存在特殊/一般关系,则用继承机制表示该关系,即UML中的泛化关系。

●在面向对象系统中,用(15)关系表示一个较大的“整体”类包含一个或多个较小的“部分”类。

(15)A. 泛化B. 聚合C. 概化D. 合成

●面向对象分析与设计中的(37)是指一个模块在扩展性方面应该是开放的,而在更改性方面应该是封闭的;而(38)是指子类应当可以替换父类并出现在父类能够出现的任何地方。

(37)A. 开闭原则B. 替换原则C. 依赖原则D. 单一职责原则

(38)A. 开闭原则B. 替换原则C. 依赖原则D. 单一职责原则

●在选择某种面向对象语言进行软件开发时,不需要着重考虑的因素是,该语言(39)。

(39)A. 将来是否能够占据市场主导地位B. 类库是否丰富

C. 开发环境是否成熟

D. 是否支持全局变量和全局函数的定义

●(40)限制了创建类的实例数量,而(41)将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

(40)A. 命令模式(Command) B. 适配器模式(Adapter)

C. 策略模式(Strategy)

D. 单例模式(Singleton)

(41)A. 命令模式(Command) B. 适配器模式(Adapter)

C. 策略模式(Strategy)

D. 单例模式(Singleton)

●(42)是指在运行时把过程调用和响应调用所需要执行的代码加以结合。(42)A. 绑定B. 静态绑定C. 动态绑定D. 继承

●(43)设计模式允许一个对象在其内部状态改变时改变它的行为。下图为这种设计模式的类图,已知类State 为抽象类,则类(44)的实例代表了Context 对象的状态。

(43)A. 单件(Singleton) B. 桥接(Bridge) C. 组合(Composite)D. 状态(State)

(44)A. Context B. concreteStateA C. Handle D. State

●在UML 的各种视图中,(45)显示外部参与者观察到的系统功能;(46)从系统的静态结构和动态行为角度显示系统内部如何实现系统的功能;(47)显示的是源代码以及实际执行代码的组织结构。

(45)A. 用例视图B. 进程视图C. 实现视图D. 逻辑视图

(46)A. 用例视图B. 进程视图C. 实现视图D. 逻辑视图

(47)A. 用例视图B. 进程视图C. 实现视图D. 逻辑视图

●在采用面向对象技术构建软件系统时,很多敏捷方法都建议的一种重要的设计活动是(15),它是一种重新组织的技术,可以简化构件的设计而无需改变其功能或行为。

(15)A. 精化B. 设计类C. 重构D. 抽象

正确答案:C

解析:本题考查采用敏捷方法进行软件开发。敏捷方法中,重构是一种重新组织技术,重新审视需求和设计,重新明确地描述它们以符合新的和现有的需求,可以简化构件的设计而无需改变其功能或行为。

●下面关于面向对象分析与面向对象设计的说法中,不正确的是(37)。(37)A. 面向对象分析侧重于理解问题

B. 面向对象设计侧重于理解解决方案

C. 面向对象分析描述软件要做什么

D. 面向对象设计一般不关注技术和实现层面的细节

●在面向对象分析与设计中,(38)是应用领域中的核心类,一般用于保存系统中的信息以及提供针对这些信息的相关处理行为;(39)是系统内对象和系统外参与者的联系媒介;(40)主要是协调上述两种类对象之间的交互。(38)A. 控制类B. 边界类C. 实体类D. 软件类

(39)A. 控制类B. 边界类C. 实体类D. 软件类

(40)A. 控制类B. 边界类C. 实体类D. 软件类

●若类A 仅在其方法Method1 中定义并使用了类B 的一个对象,类A 其它部分的代码都不涉及类B,那么类A 与类B 的关系应为(41);若类A 的某个属性是类B 的一个对象,并且类A 对象消失时,类B 对象也随之消失,则类A 与类B 的关系应为(42)。

(41)A.关联B. 依赖C. 聚合D. 组合

(42)A.关联B. 依赖C. 聚合D. 组合

●当不适合采用生成子类的方法对已有的类进行扩充时,可以采用(43)设计模式动态地给一个对象添加一些额外的职责;当应用程序由于使用大量的对象,造成很大的存储开销时,可以采用(44)设计模式运用共享技术来有效地支持大量细粒度的对象;当想使用一个已经存在的类,但其接口不符合需求时,可以采用(45)设计模式将该类的接口转换成我们希望的接口。

(43)A. 命令(Command) B.适配器(Adapter)

C.装饰(Decorate)

D.享元

(Flyweight)

(44)A. 命令(Command) B.适配器(Adapter)

C.装饰(Decorate)

D.享元

(Flyweight)

(45)A. 命令(Command) B.适配器(Adapter)

C.装饰(Decorate)

D.享元

(Flyweight)

●下图属于UML 中的(46),其中,AccountManagement 需要(47)。

(46)A. 组件图B. 部署图C. 类图D.对象图

(47)A. 实现IdentityVerifier 接口并被CreditCardServices 调用

B. 调用CreditCardServices 实现的IdentityVerifier 接口

C. 实现IdentityVerifier 接口并被Logger 调用

D. 调用Logger 实现的IdentityVerifier 接口

●以下关于类和对象的叙述中,错误的是(37)。

(37)A. 类是具有相同属性和服务的一组对象的集合

B. 类是一个对象模板,用它仅可以产生一个对象

C. 在客观世界中实际存在的是类的实例,即对象

D. 类为属于该类的全部对象提供了统一的抽象描述

试题(37) 分析

本题考查面向对象中类和对象的基本概念。

面向对象中,类是对象的模板,描述了一组对象共有的成员属性和方法。类是一组对象的抽象描述,通过类可以产生一个或多个对象,这些对象具有相同的属性和方法。[参考答案] (37) B

●(38)是把对象的属性和服务结合成一个独立的系统单元,并尽可能隐藏对象的内部细节;(39)是指子类可以自动拥有父类的全部属性和服务;(40)是对象发出的服务请求,一般包含提供服务的对象标识、服务标识、输入信息和应答信息等。

(38)A. 继承B. 多态C. 消息D. 封装

(39)A. 继承B. 多态C. 消息D. 封装

(40)A. 继承B. 多态C. 消息D. 封装

试题(38)~(40) 分析

本题考查面向对象的基本概念。

封装的作用是把属性和服务结合成一个独立的系统单元,并隐藏对象的内部细节;而继承则使得子类可以自动拥有父类的全部属性和服务;消息则是对象发出的服务请求;多态是指面向对象中由重载或过载机制实现的结果。

[参考答案]

(38) D (39) A (40) C

●以下关于面向对象分析的叙述中,错误的是(41)。

(41)A. 面向对象分析着重分析问题域和系统责任

B. 面向对象分析需要考虑系统的测试问题

C. 面向对象分析忽略与系统实现有关的问题

D. 面向对象分析建立独立于实现的系统分析模型

试题(41) 分析

本题考查面向对象分析的基本概念。

面向对象分析主要回答软件系统需要解决什么问题,在面向对象分析阶段,并不考虑系统实现以及系统的测试问题,强调建立独立与系统实现的系统分析模型,其关注点仍然侧重于问题域。[参考答

案] (41) B

●以下关于面向对象设计的叙述中,错误的是(42)。

(42)A. 高层模块不应该依赖于底层模块有 B. 抽象不应该依赖于细节

C. 细节可以依赖于抽象

D. 高层模块无法不依赖于底层模块

试题(42) 分析

本题考查面向对象设计的基本原则。

面向对象设计中存在很多原则,其中高层模块不应该依赖于底层模块就是其中一条。传统的结构化设计中,一般的高层模块需要调用或使用底层模块,导致高层模块必须依赖于底层模块,但借助面向对象中的抽象类、接口等一系列机制,可以使得高层模块仅仅和接口耦合,而和实际的底层模块没有直接关

联。

[参考答案] (42) D

●采用(43)设计模式可保证一个类仅有一个实例;采用(44)设计模式可将对象组合成树形结构以表示“部分-整体”的层次结构,使用户对单个对象和组合对象的使用具有一致性;采用(45)设计模式可动态地给一个对象添加一些额外的职责。

(43)A. 命令(Command) B.单例(Singleton)

C. 装饰(Decorate)

D. 组合(Composite)

(44)A. 命令(Command) B.单例(Singleton)

C. 装饰(Decorate)

D. 组合(Composite)

(45)A. 命令(Command) B.单例(Singleton)

C. 装饰(Decorate)

D. 组合(Composite)

本题考查面向对象设计中的设计模式。

单例设计模式的目的就是保证一个类仅能够生成一个对象:组合设计模式则用于表示“部分-整体”的层次结构,并且对部分和整体的使用具有一致性;装饰设计模式则动态地给一个对象增加一些额外的职责,无须改变类的设计和实现。

[参考答案]

(43) B (44) D (45) C

●下列UML 类图表示的是(46)设计模式。该设计模式中,(47)。

(46)A. 备忘录(Memento) B. 策略(Strategy) C. 状态(State) D. 观察者(Observer)

(47)A. 一个Subject 对象可对应多个Observer 对象

B. Subject 只能有一个ConcreteSubject 子类

C. Observer 只能有一个ConcreteObserver 子类

D. 一个Subject 对象必须至少对应一个Observer 对象

试题(46)、(47) 分析

本题考查面向对象设计中的设计模式。

题中的图标是观察者设计模式,在该设计模式中,一个Subject类可以有多个ConcreteSubiect子类,一个Observer类也可以有多个ConcreteObserver子类;一个Subject对象可以对应多个Observer对

象。[参考答案] (46) D (47) A

面向对象程序设计教程答案

面向对象程序设计教程(C++语言描述)题解与课程设计指导 第1章 面向对象程序设计概论 一、名词解释 抽象封装消息 【问题解答】 面向对象方法中的抽象是指对具体问题(对象)进行概括,抽出一类对象的公共性质并加以描述的过程。 面向对象方法中的封装就是把抽象出来的对象的属性和行为结合成一个独立的单位,并尽可能隐蔽对象的内部细节。 消息是面向对象程序设计用来描述对象之间通信的机制。一个消息就是一个对象要求另一个对象实施某种操作的一个请求。 二、填空题 (1)目前有面向过程的结构化程序设计方法和面向对象的程序设计方法两种重要的程序设计方法。 (2)结构化程序设计方法中的模块由顺序、选择和循环3种基本结构组成。(3)在结构化程序设计方法中,程序可表示为程序=数据结构+算法;而面向对象的程序设计方法,程序可表示为程序=对象+消息。

(4)结构化程序设计方法中的基本模块是过程;而面向对象程序设计方法中的基本模块是类。 (5)面向对象程序设计方法具有抽象性、封装性、继承性和多态性等特点。 三、选择题(至少选一个,可以多选) (1)面向对象程序设计着重于( B )的设计。 A. 对象 B. 类 C. 算法 D. 数据 (2)面向对象程序设计中,把对象的属性和行为组织在同一个模块内的机制叫做(C )。 A. 抽象 B. 继承 C. 封装 D. 多态 (3)在面向对象程序设计中,类通过( D )与外界发生关系。 A. 对象 B. 类 C. 消息 D. 接口 (4)面向对象程序设计中,对象与对象之间的通信机制是(C )。 A. 对象 B. 类 C. 消息 D. 接口 (5)关于C++与C语言的关系的描述中,(D )是错误的。 A. C语言是C++的一个子集 B. C语言与C++是兼容的 C. C++对C语言进行了一些改进 D. C++和C语言都是面向对象的 【结果分析】 C语言是面向过程的。C++语言是一种经过改进的更为优化的C语言,是一种混合型语言,既面向过程也面向对象。 (6)面向对象的程序设计将数据结构与( A )放在一起,作为一个相互依存、不可分割的整体来处理。

面向对象程序设计教程答案

面向对象程序设计教程(C++吾言描述)题解与课程设计指导 面向对象程序设计概论 一、 名词解释 抽象封装消息 【问题解答】 面向对象方法中的抽象是指对具体问题(对象)进行概括,抽出一类对象的公 共性质并加以描述的过程。 面向对象方法中的封装就是把抽象出来的对象的属性和行为结合成一个独立的 单位,并尽可能隐蔽对象的内部细节。 消息是面向对象程序设计用来描述对象之间通信的机制。一个消息就是一个对 象要求另一个对象实施某种操作的一个请求。 二、 填空题 ( 1) 目前有面向过程的结构化程序设计方法和面向对象的程序设计方法两种 重要的程序设计方法。 (2) 结构化程序设计方法中的模块由顺序、选择和循环 3 种基本结构组成。 ( 3) 在结构化程序设计方法中,程序可表示为程序 =数据结构 +算法; 而面向 对象的程序设计方法,程序可表示为程序 =对象 +消息。 ( 4) 结构化程序设计方法中的基本模块是过程; 而面向对象程序设计方法 中的基本模块是类。 ( 5) 面向对象程序设计方法具有抽象性、封装性、继承性和多态性等特点。 三、 选择题(至少选一个,可以多选) ( 1) 面向对象程序设计着重于( B )的设计。 A. 对象 B. 类 C. 算法 D. 数据 ( 2) 面向对象程序设计中,把对象的属性和行为组织在同一个模块内的机制 叫做( C )。 A. 抽象 B. 继承 C. 封装 D. 多态 ( 3) 在面向对象程序设计中,类通过( D )与外界发生关系。 A. 对象 B. 类 C. 消息 D. 接口 ( 4) 面向对象程序设计中,对象与对象之间的通信机制是( C )。 A. 对象 B. 类 C. 消息 D. 接口 (5)关于C++与 C 语言的关系的描述中,(D )是错误的。 A. C 语言是C++勺一个子集 B. C 语言与C++是兼容的 C. C++对C 语言进行了一些改进 D. C++和C 语言都是面向对象的 【结果分析】 C 语言是面向过程的。C++吾言是一种经过改进的更为优化的 C 语言,是一种混 合型语言,既面向过程也面向对象。 ( 6) 面向对象的程序设计将数据结构与( A )放在一起,作为一个相互依 存、不可分割的整体来处理。 A. 算法 B. 信息 C. 数据隐藏 D. 数据抽象 第1

面向对象技术与C++(3)答案

《面向对象技术与C++》试卷答案(3) 第一题填充题(10分,每1个空格1分) 1.当使用带参数的流操纵算子时,程序中必须包含(iomanip)头文件。 2.复合对象中的成员对象是在建立复合对象之(前)建立的。 3.运算符new分配的动态内存要用运算符(delete) 回收。如果在一个类的构造函数中使 用new分配动态内存,则回收操作应在类的(析构)函数中完成。 4.struct成员的默认访问模式是(public),而class成员的默认访问模式是 (private)。 5.关键字(const) 指定了不可修改的对象或变量。关键字(const) 指定一个类的成员不会 修改类中的数据成员。 6.重载赋值运算符operator= 时,应将其声明为类的(成员)函数。 7.C++中的输入/输出是以字节(流) 的形式实现的。 第二题指出下列程序段中的错误,说明错误原因(10分,每1小题5分)1.class Rational { //表示有理数的类声明 public: void Rational (int,int); //第1个参数为分子,第2个参数为分母 // 其他成员函数的原型说明 private: void Rational ( ); //默认的数为0,其分子表示为0,分母表示为1 int a = 0 , b = 1; } 1) void Rational(); 构造函数的访问属性应为public 2) 两个构造函数都不能指定返回类型 3)int a = 0 , b = 1; 不能直接赋初值 4)最后少了一个分号(;) 2.class myClass { public: myClass(char a, int b) { v = a ; si = b ; } void f1(int i = 10) const { v = v + i ; } static int f2() { return v + si; } private: char v; static int si; } ; 1) static函数f2()不能访问非static成员v 2) 构造函数中不能对static数据赋值 3) const成员函数f1不能修改数据成员v 4) static数据si需要在类声明的外面进行初始化

面向对象程序设计完整版

Object- Orien ted Programmi ng C++ 主讲成长生 东华大学计算机科学与技术学院

第一章概述 § 1.1 面向对象程序设计的基本思想 C++是基于C语言发展的,又冲破C语言局限的面向对象的程序设计语言。它与Java 语言都作为当前计算机科学的主流语言, 越来越受到用户的欢迎。 要弄清楚什么是面向对象的程序设计, 首先了解和回顾传统的 ( Pascal(或C))结构化程序设计方法及其设计思想、程序结构及特点。SP(Structure Programming)是60 年代诞生的针对当时爆发的所谓”软件危机” , 为此发展形成了现代软件工程学的基础。 SP的总的设计思想是: . 自顶向下、层次化 . 逐步求精、精细化 程序结构是按功能划分基本模块的树型结构, 使模块间的关系尽可能简单独立。因此SP的程序的基本特点是: . 按层次组织模块(战略上划分战役) . 每一模块只有一个入口, 一个出口 ?代码和数据分离(程序=数据结构+算法) 归纳得到: SP 把数据和过程(代码、函数)分离为相互独立的实体, 用数据代表问题空间中的客体借以表示实际问题中的信 息; 程序代码则用来处理加工这些数据。程序员在编程时 必须时刻考虑所要处理的数据结构和类型。对不同的数据格式即使要作同样

的处理计算, 或者要对相同的数据格式作不同的处理都必须编写不同的程序(如两个整型数和两个浮点数相加)。这样的编程方法,即传统的SP方法设计出来的程序或系统其可重用的成分很少。其次把数据和代码作为不同的分离实体时, 总存在着用错误的数据调用正确的程序模块, 或用正确的数据调用错误的程序模块的危险, 从而使数据与程序始终保持兼容, 已成为程序员 的一个沉重的负担。在开发一个大型软件课题中, 当工程进入到 后期若用户改变了方案要求, 很容易使技术人员的前期工作受到摧毁性的打击,使其前功尽弃。为克服以上的弊端或者该SP方法难以控制处理的矛盾而产生了面向对象程序设计方法, 即Object —Oriented Programming ----------- OOP从二十世纪六十年代提出对象 的雏形, 到七十年代美国国防部的专用语言Ada 语言, 直到当前国际上流行的高品味的Java 和C++(Tc++,Balandc++ 及Vc++), , 应该讲OOP方法与技术吸取了SP的一切优点,同时又正视和顺应现实世界由物质和意识二部分组成。映射到面向对象的解空间就是: 具体事物—对象; 抽象概念—类。 OOP的基本原理是用问题领域的模型来模拟大千世界,从而设计出尽可能直接、自然地表示问题求解方法的软件, 这样的软件由对象组成, 而对象则是完整反映客观世界事物具有不可分割的静态属性(”数据结构” )与动态行为(”方法” )的。而且它们是既有联系又

《面向对象技术》课程教学大纲

《面向对象技术》课程教学大纲 课程编号:20411101 总学时数:48 总学分数:3 课程性质:必修课程 适用专业:计算机科学与技术 一、课程的任务和基本要求 该课程是计算机科学与技术专业的专业基础课程。本课程的基本要求是掌握面向对象程序设计的基本原理、概念和方法;掌握C++语言的基本知识,包括类的定义、继承,对象的创建、使用、销毁等;掌握基本的面向对象程序设计过程和技巧,具备一定的面向对象程序设计能力,为后继课程打下基础。 二、基本内容和要求 1、面向对象技术概要 教学内容:概括地面向对象技术,介绍C++语言和C语言的差异。 基本要求: (1)了解面向对象技术特点 (2)掌握C++ 语言的输入、输出 (3)掌握C++ 语言的空间申请和释放 (4)了解C++ 语言的对象引用的含义 2、类的定义 教学内容:介绍C++语言中最基本的类定义,数据成员和函数成员,三种权限区域。 基本要求: (1)理解类和对象的概念 (2)掌握类构造函数和析构函数的定义方法和作用 (3)掌握对象的定义及初始化方法 (4)掌握类成员函数和内联函数的定义方法 (5)掌握函数重载的方法 (6)熟悉运算符的重载方法 3、类的派生与继承 教学内容:介绍类与类之间的派生关系,派生类的成员继承和存取权限,函数多态基本要求: (1)了解派生类的定义方法 (2)掌握派生类中继承成员的存取关系 (3)掌握派生类构造函数的定义与执行顺序 (4)了解虚函数和抽象类的作用 (5)了解编译多态和运行多态 4、类的友元和聚合 教学内容:不同类间引用的权限,封装与效率的关系,静态数据成员 基本要求:

(1)熟悉类的友元及应用 (2)了解类的封装和聚合 (3)熟悉类静态数据成员的作用与应用 5、面向对象的程序设计 教学内容:面向对象设计的思想、对象的生存期、对象的永久化和对象的传输。 基本要求: (1)熟悉面向对象程序设计的思想 (2)了解对象的创建过程和销毁过程 (3)掌握对象的永久化的操作方法 (4)熟悉对象传输的含义和实现方式 6、模板 教学内容:介绍函数模板和模板函数,类模板和模板类,STL的使用 基本要求: (1)熟悉函数模板 (2)熟悉类模板 (3)了解利用模板的使用方法 (4)熟悉STL的应用 7、异常处理 教学内容:异常处理的内容。 基本要求: (1)了解异常处理的目的 (2)熟悉异常处理的的基本形式 (3)了解异常处理的几种应用方式 三、实践环节和要求 通过由浅入深、循序渐进地练习,使学生通过上机来验证课堂教学的理论,全面了解面向对象技术的基本方法和编程技巧,学会设计一些简单的应用程序。 实验环节类型:上机 实验环节学时:16 1、含有类的C++程序设计(2学时) 上机内容:类的定义与应用。 2、类的继承与派生(2学时) 上机内容:派生类的定义与应用。 3、抽象类与重载(2学时) 上机内容:抽象类与重载。 4、友元与静态数据的应用(2学时) 上机内容:友元与静态数据的应用。 5、面向对象程序设计(4学时) 上机内容:使用面向对象技术设计应用程序。 6、模板的应用(4学时) 上机内容:类模板和类函数的应用。 四、教学时数分配 理论: 32 实验:上机:16 其它:

c第1~3章答案解析

C++习题参考答案 第1xx面向对象程序设计概论 一、名词解释 抽象封装消息 【问题解答】 面向对象方法中的抽象是指对具体问题(对象)进行概括,抽出一类对象的公共性质并加以描述的过程。 面向对象方法中的封装就是把抽象出来的对象的属性和行为结合成一个独立的单位,并尽可能隐蔽对象的内部细节。 消息是面向对象程序设计用来描述对象之间通信的机制。一个消息就是一个对象要求另一个对象实施某种操作的一个请求。 二、填空题 (1)目前有面向过程的结构化程序设计方法和面向对象的程序设计方法两种重要的程序设计方法。 (2)结构化程序设计方法中的模块由顺序、选择和循环3种基本结构组成。 (3)在结构化程序设计方法中,程序可表示为程序=数据结构+算法;而面向对象的程序设计方法,程序可表示为程序=对象+消息。 (4)结构化程序设计方法中的基本模块是过程;而面向对象程序设计方法中的基本模块是类。 (5)面向对象程序设计方法具有抽象性、封装性、继承性和多态性等特点。 三、选择题(至少选一个,可以多选)

(1)面向对象程序设计着重于(B)的设计。 A.对象 B.类 C.算法 D.数据 (2)面向对象程序设计中,把对象的属性和行为组织在同一个模块内的机制叫做(C)。 A.抽象 B.继承 C.封装 D.多态 (3)在面向对象程序设计中,类通过(D)与外界发生关系。 A.对象 B.类 C.消息 D.接口 (4)面向对象程序设计中,对象与对象之间的通信机制是(C)。 A.对象 B.类 C.消息 D.接口 (5)关于C++与C语言的关系的描述中,(D)是错误的。 A. C语言是C++的一个子集 B. C语言与C++是兼容的 C. C++对C语言进行了一些改进 D. C++和C语言都是面向对象的 【结果分析】 C语言是面向过程的。C++语言是一种经过改进的更为优化的C语言,是一种混合型语言,既面向过程也面向对象。 (6)面向对象的程序设计将数据结构与(A)放在一起,作为一个相互依存、不可分割的整体来处理。 A.算法 B.信息 C.数据隐藏 D.数据抽象(7)下面(A)不是面向对象系统所包含的要素。A.重载B.对象C.类D.继承 【结果分析】 面向对象=对象+类+继承+消息+多态 (8)下面说法正确的是(BC)。

2010-2011学年第一学期面向对象技术及应用试卷A卷参考答案

河南大学计算机与信息工程学院2010-2011学年第一学期期末考试面向对象技术及应用试卷A卷参考答案与评分标准 (卷面总分:100分) 一、单项选择题(每个小题2分,共34分) 1.main方法是Java Application程序执行的入口点,以下描述哪项是合法的( B )? A、public static void main() B、public static void main(String args[] ) C、public static int main(String [] arg ) D、public void main(String arg[] ) 2.关于如下程序的描述哪个是正确的?( C ) public class Person{ static int arr[] = new int[5]; public static void main(String a[]){ System.out.println(arr[0]); } } A、编译将产生错误 B、编译时正确,但运行时将产生错误 C、正确,输出0 D、正确,输出 null 3.假设A类有如下定义,设a是A类的一个实例,下列语句调用哪个是错误的?( C ) class A{ int i; static String s; void method1() { } static void method2() { } } A、System.out.println(a.i); B、a.method1(); C、A.method1(); D、A.method2() 4.创建一个标识有“关闭”按钮的语句是( D )。 A、TextField b = new TextField(“关闭”); B、Label b = new Label(“关闭”); C、Checkbox b = new Checkbox(“关闭”); D、Button b = new Button(“关闭”); 5.对于子类的构造函数说明,下列叙述中错误的是( D )。 A、子类不能继承父类的无参构造函数。 B、子类可以在自己的构造函数中使用super关键字来调用父类的含参数构造函数,但这个调用语句必须是子类构造函数的第一个可执行语句。 C、在创建子类的对象时,将先执行继承自父类的无参构造函数,然后再执行自己的构造函数。 D、子类不但可以继承父类的无参构造函数,也可以继承父类的有参构造函数。 6.有以下程序片段,下列哪个选项不能插入到行1。(A) 1. 2.public class A{

三种面向对象方法

三个著名的面向对象开发方法

摘要 主要介绍了3种典型的面向对象开发方法,并对它们进行了比较。面向对象的方法是一种分析方法、设计方法和思维方法。面向对象方法学的出发点和所追求的基本目标是使人们分析、设计与实现一个系统的方法尽可能接近人们认识一个系统的方法。 关键字:面向对象;开发方法;OMT;BOOCH;JACOBSON; 1.引言 面向对象的方法是一种分析方法、设计方法和思维方法。面向对象方法学的出发点和所追求的基本目标是使人们分析、设计与实现一个系统的方法尽可能接近人们认识一个系统的方法。也就是使描述问题的问题空间和解决问题的方法空间在结构上尽可能一致。其基本思想是:对问题空间进行自然分割,以更接近人类思维的方式建立问题域模型,以便对客观实体进行结构模拟和行为模拟,从而使设计出的软件尽可能直接地描述现实世界,构造出模块化的、可重用的、维护性好的软件,同时限制软件的复杂性和降低开发维护费用。 面向对象程序设计方法起源于六十年代末期的simnia语言.Smalltalk语言的出现,进一步发展和完善了面向对象的程序设计语言,从此面向对象与开发方法开始结合,出现 了面向对象的开发方法.自80年代后期以来,相继出现了多种面向对象开发方法,现将其中几种典型的方法作一比较分析. 2.三种典型的面向对象开发方法 2.1 OMT/Rumbaugh OMT(Object Modeling Technique)方法提出于1987年,曾扩展应用于关系数据库设计.1991年Jim Rumbaugh正式把OMT应用于面向对象的分析和设计.这种方法是在 实体关系模型上扩展了类、继承和行为而得到的.OMT覆盖了分析、设计和实现3个阶段,包括一组相互关联的类(class )、对象(object)、一般化(generalization)、继承(inheritance)、链(link)、链属性(link attribute)、聚合(aggregation)、操作(operation)、事件(event)、场景(scene)、属性(attribute)、子系统(subsystem)、模块(module)等概念. OMT方法把分析时收集的信息构造在3种模型中,这些模型贯穿于每个步骤,在每个步骤中被不断地精化和扩充.对象模型用ER图描述问题域中的列象及其相互关系,用类和关系来刻画系统的静态结构,包括系统中的对象、对象之间的关系、类的属性和操作等特征.动态模型用事件和对象状态来刻画系统的动态特性,包括系统对象的事件序列、状态和操作.功能模型按照对象的操作来描述如何从输入给出输出的结果,描述动态模型的动作所定义对象操作的意义。 OMT方法包含分析、系统设计、对象设计和实现4个步骤,它定义了3种模型,这些模型贯穿于每个步骤,在每个步骤中被不断地精化和扩充。这3种模型是:对象模型,用类和关系来刻画系统的静态结构;动态膜型,用事件和对象状态来刻画系统的动态特性;功能模型,按照对象的操作来描述如何从输人给出输出结果。分析的目的是建立可理解的现实世界模型。系统设计确定高层次的开发策略。对象设计的目的是确定对象的细节,包括定义对象的界面、算法和操作。实现对象则在良好的面向对象编程风格的编码原则指导下进行。 开发的四个阶段如下: (1)分析。基于问题和用户需求的描述,建立现实世界的模型。分析阶段的产物有: ●问题描述 ●对象模型=对象图+数据词典 ●动态模型=状态图+全局事件流图 ●功能模型=数据流图+约束 (2)系统设计。结合问题域的知识和目标系统的系统结构(求解域),将目标系统

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

面向对象分析与设计试题B卷 一、单项选择题( 在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。每小题2 分,共20 分) 1.到20世纪末,面向对象软件工程已经逐渐发展成熟,特别是()的 形成和广泛使用,采用面向对象分析与编程的软件开发方法已成为软件开发的主流方法。 A. Simula67语言 B. Smalltalk语言 C. Java语言 D. 统一建模语言(UML)的标准 2. 面向对象的运动产生了多种面向对象的语言, 其中()是一种混合性面向对象语言, 既支持面向过程的程序设计方法,又支持面向对象的程序设计方法,有广泛应用的基础和丰富开发环境的支持,因而使面向对象的程序设计能得到很快普及。 A. Smalltalk B. Eiffel C. C++ D. Java 3.下列不属于面向对象技术的基本特征的是()。 A. 封装性 B. 模块性 C. 多态性 D. 继承性 4. 面向对象程序设计将描述事物的数据与( ) 封装在一起,作为一个相互依存、不可分割的整体来处理。 A. 信息 B. 数据隐藏 C. 对数据的操作 D. 数据抽象 5. 关于面向对象方法的优点,下列不正确的叙述是()。 A. 与人类习惯的思维方法比较一致 B. 可重用性好 C. 以数据操作为中心 D.可维护性好 6. ()是从用户使用系统的角度描述系统功能的图形表达方法。 A. 类图 B. 对象图 C. 序列图 D. 用例图 7. ( ) 是表达系统类及其相互联系的图示,它是面向对象设计的核心,建立状态图、协作图 和其他图的基础。 A.对象图 B. 组件图 C. 类图 D. 配置图 8.()描述了一组交互对象间的动态协作关系,它表示完成某项行为的对象和这些对象之 间传递消息的时间顺序。 A.对象图 B. 协作图 C. 状态图 D. 序列图 9.()就是用于表示构成分布式系统的节点集和节点之间的联系的图示,它可以表示系统 中软件和硬件的物理架构。 A. 组件图 B. 协作图 C. 状态图 D. 配置图 10. 使用UML进行关系数据库的()时,需要设计出表达持久数据的实体类及其联系,并把它们映射成为关系数据库表(Table)、视图(View)等。 A. 业务Use Case模型设计 B. 逻辑数据模型设计 C. 物理数据模型设计 C. 物理实现设计 二、填空题( 每空1 分,共20 分) 1. 面向对象开发方法一改过去传统的以___功能分析___为基础的__面向过程__的结 构化分析与设计方法,它模拟人们理解和处理客观世界的方式来分析问题,把系统视为

传统方法学与面向对象区别

小议传统方法学与面向对象的区别 姓名:戴育兵 学号:G1030510 年级 :大二 班级: .net(2)班

摘要 传统的软件工程方法学曾经给软件产业带来巨大进步,部分地缓解了软件危机,使用这种方法学开发的许多中、小规模软件项目都获得了成功。但是,人们也注意到当把这种方法学应用于大型软件产品的开发时,似乎很少取得成功。 在20世纪60年代后期出现的面向对象编程语言Simdla_67中首次引入了类和对象的概念,自20世纪80年代中期起,人们开始注重面向对象分析和设计的研究,逐步形成了面向对象方法学。到了20世纪90年代,面向对象方法学已经成为人们在开发软件时首选的范型。面向对象技术已成为当前最好的软件开发技术。

软件工程传统方法学 1.传统方法学概述 随着计算机应用领域的不断拓广,各种各样的问题也不断涌现,当问题严重到开发人员无法控制的时候便产生了软件危机。软件危机的出现,促使了软件工程学的形成和发展。随之整合整套技术的软件工程方法学广泛应用,主流之一就是传统方法学。传统方法学在软件开发过程中占据相当大的比重,因为其悠久的历史而为很多软件工程师青睐。如果说自然语言和编程语言之间有一道难以跨越的鸿沟,传统方法学就是跨越这道鸿沟的桥梁。 传统方法学又称生命周期方法学或结构化范型。一个软件从开始计划起,到废弃不用止,称为软件的生命周期。在传统的软件工程方法中,软件的生存周期分为需求分析、总体设计、详细设计、编程和测试几个阶段。 传统方法学使用的是结构化分析技术来完成需求分析阶段的工作。软件工程学中的需求分析具有两方面的意义。在认识事物方面,它具有一整套分析、认识问题域的方法、原则和策略。这些方法、原则和策略使开发人员对问题域的理解比不遵循软件工程方法更为全面、深刻和有效。在描述事物方面,它具有一套表示体系和文档规范。但是,传统的软件工程方法学中的需求分析在上述两方面都存在不足.它在全局范围内以功能、数据或数据流为中心来进行分析。这些方法的分析结果不能直接地映射问题域,而是经过了不同程度的转化和重新组合。因此,传统的分析方法容易隐蔽一些对问题域的理解偏差,与后续开发阶段的衔接也比较困难。 在总体设计阶段,以需求分析的结果作为出发点构造出一个具体的系统设计方案,主要是决定系统的模块结构,以及模块的划分,模块间的数据传送及调用关系。详细设计是在总体设计的基础上考虑每个模块的内部结构及算法,最终将产生每个模块的程序流程图。但是传统的软件工程方法中设计文档很难与分析文档对应,原因是二者的表示体系不一致,所谓从分析到设计的转换,实际上并不存在可靠的转换规则,而是带有人为的随意性,从而很容易因理解上的错误而留下隐患。 编程阶段是利用一种编程语言产生一个能够被机器理解和执行的系统,测试是发现和排除程序中的错误,最终产生一个正确的系统。但是由于分析方法的缺陷很容易产生对问题的错误理解,而分析与设计的差距很容易造成设计人员对分析结果的错误转换,以致在编程时程序员往往需要对分析员和设计人员已经认识过的事物重新进行认识,并产生不同的理解。因此为了使两个阶段之间能够更好的衔接,测试就变得尤为重要。 软件维护阶段的工作,一是对使用中发生的错误进行修改,二是因需求发生了变化而进行修改。前一种情况需要从程序逆向追溯到发生错误的开发阶段。由于程序不能映射问题以及各个阶段的文档不能对应,每一步追溯都存在许多理解障碍。第二种情况是一个从

面向对象程序设计考前复习题及答案

简答题 1、传统的结构化程序设计的优点和缺点是什么? 优点: ( 1) 这种程序设计方法力求算法描述准确。 ( 2) 对每一子过程模块容易进行程序正确性证明。 缺点: ( 1) 这种程序设计方法本质上是面向”过程”的, 而”过程”和”操作”又是不稳定和多变的, 因此不能直接反映人类求解问题的思路。 ( 2) 程序代码可重用性差。程序中除少数标准库函数外, 每设计一个程序时, 程序员几乎从零做起。即使重用代码, 一般也是经过拷贝或编辑重新生成一份。 ( 3) 维护程序的一致性困难。该种方法将数据与对数据进行处理的程序代码分离。 2、什么是对象? 每个对象都具有属性( Attribute) 和方法( Method) 这两方面的特征。对象的属性描述了对象的状态和特征, 对象的方法说明了对象的行为和功能, 而且对象的属性值只应由这个对象的方法来读取和修改, 两者结合在一起就构成了对象的完整描述。 3、什么是消息? 在面向对象的程序设计中, 由于对象描述了客观实体, 它们

之间的联系经过对象间的联系来反映。当一个对象需要另外一个对象提供服务时, 它向对方发出一个服务请求, 而收到请求的对象会响应这个请求并完成指定的服务。这种向对象发出的服务请求就称为消息。 4、什么是多态性? 所谓多态性是指当程序中的其它部分发出同样的消息时, 按照接收消息对象的不同能够自动执行类中相应的方法。其好处是, 用户不必知道某个对象所属的类就能够执行多态行为, 从而为程序设计带来更大方便。 5、什么是面向对象的程序设计方法? 这种方法将设计目标从模拟现实世界的行为转向了模拟现实世界中存在的对象及其各自的行为。 在OOP中, 将”对象”作为系统中最基本的运行实体, 整个程序即由各种不同类型的对象组成, 各对象既是一个独立的实体, 又可经过消息相互作用, 对象中的方法决定要向哪个对象发消息、发什么消息以及收到消息时如何进行处理等。 6、面向对象方法的特点是什么? ( 1) OOP以”对象”或”数据”为中心。由于对象自然地反映了应用领域的模块性, 因此具有相对稳定性, 能够被用作一个组件去构成更复杂的应用, 又由于对象一般封装的是某一实际需求的各种成分, 因此, 某一对象的改变对整个系统几乎没有影响。

成人教育面向对象技术复习题及参考答案

山东师范大学成人高等教育计算机科学与技术专业 (专升本、高起本)科《面向对象技术》课程复习题A 参考答案在试卷后(7月无纸化考试) 一、单项选择题(每小题1分,共20分) 1、假定MyClass为一个类,则执行“” MyClass a[3],*p[2];”语句时,自动调用该类构造函数的次数为() A、2 B、3 C、4 D、5 2、对于类中定义的成员,其隐含访问权限为() A、protected B、private C、public D、static 3、一个类的友元函数或友元类能够通过成员操作符访问该类的() A、私有成员 B、所有成员 C、公用成员 D、保护成员 4、下面说法正确的是() A、构造函数可以重载,析构函数不能重载。 B、构造函数不能重载,析构函数可以重载。 C、构造函数可以重载,析构函数也可以重载。 D、构造函数和析构函数都不可以重载。 5、下列语句的运行结果为() #include srtuct COMPLEX { int x; int y; } cNum[2]={1,3,2,7}; void main() { cout<< cNum[0].y*cNum[1] x<

最新面向对象技术引论(复习题)[参考解答]

《面向对象技术引论》复习题 一、概念与术语 1. 对象: 在现实世界中,对象定义为:问题的概念和抽象的或具有明确边界和意义的事物; 在数据世界中,对象定义为:一组数据以及施加于这组数据上的一组操作; 从系统的观点出发,我们可以给对象作如下定义:对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位(单元),一个对象是由一组属性和对这组属性进行操作的一组服务构成的。 2.持久对象: 生存期可以超越程序的执行时间而长期存在的对象称为持久对象。换句话说:一个对象在程序运行结束后仍继续存在,则称该对象是持久的。 2.主动对象: 主动对象是一组属性和一组操作(服务)的封装体,其中至少有一个操作不需要接收消息就能主动执行(称为主动服务)。 3.被动对象: 被动对象(Passive object)是指其内部的操作需要通过外部消息驱动才能执行的对象。可以看出被动对象必须工作在消息驱动环境中。 4.类: 定义1 一组具有相同性质(属性和操作)的对象的抽象。 定义2 类是对一组具有相同属性、操作、关系和语义的对象的描述。 定义3 具有相同属性和容许操作的一组对象的一般描述称为类。 5.主动类: 主动类的对象至少拥有一个进程或线程,因此它能够自主执行(能够启动控制活动)。注意:主动类的对象所描述的元素的行为与其他元素的行为并发,这是它与一般类的唯一区别。6.接口: 接口是描述一个类或构件的一个服务的操作集。因此,接口描述元素的外部可见行为。接口描述了一组操作的规格,而不是操作的实现。图形上,用一个带有名称的圆表示接口。7.用况: 用况是对一组动作序列的描述,系统执行这些动作将产生一个对特定的参与者有价值而且可观察的结果。用况用于对系统语境和系统需求建模。图形上,用一个包含名称的实线椭圆表示用况。 8.协作: 协作定义了一个交互,它是由一组共同工作以提供某协作行为的角色和其他元素构成的一个群体,这些协作行为大于所有元素的各自行为的综合。因此协作有结构、行为和维度。图形上,用一个仅包含名称(协作名)的虚线椭圆表示协作。 9.构件: 构件是系统中物理的、可替代的部件,它遵循且提供一组接口的实现。构件是物理的、可替代的部件。 10.节点: 节点也是物理的,是在系统运行时存在的物理元素,它表示了一种可计算的资源,通常至少有一些记忆能力和处理能力。 11.一般类/ 12. 特殊类: 如果类A具有类B的全部属性和服务,而且具有自己特有的某些属性和服务,则类A叫做类B的特殊类,类B叫做的类A的一般类。两者之间的关系称为“泛化”。可以看出一般

面向对象方法与结构化方法的比较

课程名称: 系统分析与设计 结构化方法和面向对象方法的比较结构化方法是结构化分析,结构化设计和结构化编程的总称,是最早最传统的软件开发方法,也是迄今为止信息系统中应用最普遍、最成熟的一种,它引入了工程思想和结构化思想,使大型软件的开发和编程都得到了极大的改善。 面向对象方法它不仅仅是一些具体的软件开发技术与策略,而且是一整套关于如何看待软件系统与现实世界的关系,用什么观点来研究问题并进行问题求解,以及如何进行软件系统构造的软件方法学。人们普遍认为面向对象方法是一种运用对象、类、继承、封装、聚合、关联、消息和多态性等概念和原则来构造系统的软件开发方法。 结构化方法和面向对象方法二者的比较如下。 一、基本思想的比较 结构化方法的基本思想主要体现在三个方面。 一、"自顶向下,逐步求精: 把程序看成是一个逐步演化的过程。把一个系统与程序看成是一层的。例如: 户籍管理系统可以划分为: 户籍迁入迁出,人员迁入迁出,户籍注销,人员注销等几个子系统,而每个子系统又划分为接收用户信息,实施处理,提供返回信息等等部分。 二、"模块化: 即将几个系统分成几个模块,每个模块实现特定的功能,最终整个系统由这些模块组成。模块跟模块之间通过接口传递信息,模块最重要的特点就是独立性,模块之间还有上下层的关系,上层模块调用下层模块来实现一些功能。

三、"语句结构化: 顺序结构、分支结构、循环结构,都是常用的语句结构。 面向对象方法的基本思想主要有: 一、客观世界中的事物都是对象,对象之间存在一定的关系,并且复杂对象由简单对象构成。 二、"具有相同属性和操作的对象属于一个类,对象是类的一个实例。 三、"类之间可以有层次结构,即类可以有子类,其中,子类继承父类的全部属性和操作,而且子类有自己的属性和操作。 四、"类具有封装性,把类内部的属性和一些操作隐藏起来,只有公共的操作对外是可见的,对象只可通过消息来请求其他对象的操作或自己的操作。 五、"强调充分运用人在日常逻辑思维中经常采用的思想方法与原则。例如: 抽象,分类,继承,聚合,封装,关联等。 二、基本原则的比较 结构化方法遵循基本原则有: 一、抽象原则: 是一切系统科学方法都必须遵循的基本原则,它注重把握系统的本质内容,而忽略与系统当前目标无关的内容,它是一种基本的认知过程和思维方式。 二、"分解原则: 是结构化方法中最基本的原则,它是一种先总体后局部的思想原则,在构造信息系统模型时,它采用自顶向下、分层解决的方法。 三、"模块化原则:

面向对象编程技术作业题

面向对象编程技术作业题 ——聊天系统 一、问题分析 创建一个聊天系统,该系统由服务器程序和客户端程序两部分构成。其工作原理是:当服务器程序运行时,首先启动一个监听器,负责监听服务器的某个端口,当客户端要进行聊天时,首先要对服务器的特定端口进行连接请求,即客户端试图连接服务器被监听的端口时,服务器的监听器可以选择接受或拒绝连接请求。如果接受客户端的连接请求,则由监听器为客户端分配一个对应的“套接字”对象,这样在服务器和某个客户端之间就建立了一条数据管道,可以聊天了。本聊天室主要采用Socket(套接字)编写,套接字可以支持TCP和UDP协议。 本聊天室采用TCP/IP协议,在完成基本的建立通信连接,显示,发送,退出,服务器管理客户端用户连接与否的基础上,还添加了私聊,屏蔽,和两个客户端传送文件的功能。 二、算法设计 本次作业没有涉及复杂的算法,主要是基于Win Socket的原理实现的。在完成保证基本的通信功能的前提下,又加入了能动态显示在线用户退出和在线功能,并且能够选择某一在线用户进行私聊的功能,客户端可以禁止某一用户在线的功能,以及简单的传输文件功能。其中涉及了简单的逻辑算法,也在本节中予以体现。 首先介绍一下WinSocket的基本原理,这是程序的算法核心。Windows Sockets (简称WinSock),即Windows下网络编程的规范,为应用程序提供了开放的、支持多种协议的网络编程接口,它已成为Windows网络编程的真正标准。Windows Sockets 定义了如何通过API实现与Internet 协议族(通常指的是TCP/IP)的连接。应用程序通过调用Windows Sockets的API实现相互之间的通信。 Socket的通信方式有两种方式。第一种方式是有连接的流方式,即需要在通信的两个应用程序之间建立一条连接链路,即利用TCP协议;第二种方式是采用无连接的数据报方式,也即UDP协议。本系统是采用有连接的流方式。在这种方式下,两个通信的程序之间首先要建立一条链路,然后数据才能被正确地接收和发送。这种方式对应的是TCP(传输控制协议)协议,通过TCP协议可以与指定IP地址的主机建立连接,并利用建立的连接双向地交换数据。有连接的流的特点是通信可靠,对数据有重发和校验机制。 利用CSocket进行有连接的数据通信需要建立一个全关联,同时要求通信的双方必须有一方扮演服务器的角色,等待另一方(Client)的连接请求。在服务

c++面向对象复习题答案版

一、填空题 ++中有两种数据类型:( char)和( int long )可以使用signed修饰符。 在C++中,用数组、指针、和( 引用)作为函数参数,能够将参数值带回。 2.为了降低函数调用的时间开销,建议将小的调用频繁的函数定义为(内联函数),方法是在函数类型前加上(inline)关键字。 3.面向对象的程序设计有四大特征,它们是抽象、封装、( 继承)、( 多态)。 4.拷贝构造函数是在用一个对象初始化另一个对象时被调用,系统缺省的拷贝构造函数的工作方法是( 把对象的每个数据成员的值都复制到新建立的对象中)。 5.用new申请某一个类的动态对象数组时,在该类中必须能够匹配到(该类的)构造函数,否则应用程序会产生一个编译错误。 6.静态数据成员必须在类外进行初始化,且静态数据成员的一个拷贝被类的所有对象( 共享)。 7.在C++中,定义重载函数时,应至少使重载函数的参数个数或参数类型( 不同)。 8.在C++中,虽然友元提供了类之间数据进行访问的一种方式,但它破坏了面向对象程序设计的( 封装)特性。 9.预编译指令由三种,它们是:文件包含、( 宏定义)和( 条件编译)。 10.静态的成员函数没有隐含的( this),所以,它们只能直接访问类的静态的数据成员。 11.在C++中,函数的参数有两种传递方式,它们是值传递和( 地址)。 12.当非静态成员函数被调用时,该成员函数的( this)指向调用它的对象。 13.拷贝构造函数使用( 引用)作为参数初始化创建中的对象。 14.在公有继承的情况下,基类数据成员在派生类中的访问权限( 不变)。 15.在C++中,构造派生类对象时,总是先从( 基类)的初始化开始的。 16.当需要统计程序中某个类创建对象的个数时,需要给该类定义(静态数据)成员。 17.在多个类之间有重复继承时,为避免被重复继承的基类数据成员在内存中有多个拷贝,应将该基类定义为(虚基类)。 18.在C++类中,有一种不能定义对象的类,这样的类只能被继承,称之为( 抽象类),定义该类至少具有一个( 纯虚函数)。 19.在C++中构造一个对象时,其数据成员在构造函数中初始化。对于内嵌的对象、( 常量)、( 引用)数据成员需要在构造函数的成员初始化列表中初始化。 20.在类的定义中,说明为protected的数据成员称为保护成员。保护数据成员具有双重作用:对于其派生类而言,( 可以访问);而对于其外部的程序而言,( 不可以访问)。 21.控制格式输出的 操纵符中,(setprecision)是设置数据精度的,(hex)是设置十六进制的。 22.如果s是int型变量,且s=6,则下面s%2+(s+1)%2表达式的值为__0_ _。 23.已知字母a的ASCII码为十进制数97,且设ch为字符型变量,则表达式ch=’a’+4’的值为_e___。 24.数组与函数参数联系密切,当用数组元素作函数参数时,这是属于值传递;当数组名作为参数时,这是属于地址传递,对形参的改变可影响到实参。

《面向对象技术与方法》实验:案例分

中山大学软件学院软件工程硕士研究生 《面向对象技术与方法》课程实践环节 实验题目:案例分析(开源项目JHotDraw) 基本要求:阅读和分析开源(Open Source)项目JHotDraw的文档和源程序,并撰写一份分析报告评价JHotDraw在设计与实现方面的特点,特别是其中设计模式的运用。

背景知识 开源项目为软件开发人员提供了丰富的学习素材。通过开源项目的案例分析,既可能学到一个优秀作品的设计思想与实现风格,也可能从中吸取一些有缺陷作品的经验与教训。 JHotDraw是采用Java语言书写的、运用面向对象设计模式的一个典型案例,最初由设计模式领军人物Erich Gamma等人设计开发(1996),后来陆续改进并发布了多个版本,并逐步演化为一个著名的二维图形编辑器的应用框架(Application Framework)。由于在JHotDraw的设计中有机地组合运用了许多经典的设计模式,该二维图形编辑器框架具有良好的可复用性和可扩展性。 面向对象技术(特别是面向对象设计)的初学者非常值得深入学习该案例,从中理解如何有效地运用设计模式去解决软件设计中一些实际问题。可从以下URL: https://www.360docs.net/doc/b88594578.html,/或 https://www.360docs.net/doc/b88594578.html,/projects/jhotdraw 下载各个版本的JHotDraw文档与源代码。本实验要求针对JHotDraw 5.2进行案例分析。 在深入学习JHotDraw项目的源代码之前,建议先仔细阅读JavaWorld上关于JHotDraw 5.2的入门短文Become a Programming Picasso with JHotDraw,参见以下URL:https://www.360docs.net/doc/b88594578.html,/javaworld/jw-02-2001/jw-0216-jhotdraw.html 该文扼要介绍了JHotDraw的基本概况、程序包组织、基于JHotDraw框架的应用开发、JHotDraw中设计模式运用等。

相关文档
最新文档