搜档网
当前位置:搜档网 › 第9章 面向对象方法学

第9章 面向对象方法学

第9章 面向对象方法学
第9章 面向对象方法学

第9章面向对象方法学

一、填空题(10小题)

1、对象具有状态,描述对象的状态用它的()。

答案:属性值

2、类具有属性,描述类的属性用()。

答案:数据结构

3、子类自动共享父类的属性和操作的机制称为()。

答案:继承

4、封装性是指所有软件部件内部都有明确的()以及清楚的()。每个软件部件都有友好的(),软件部件的()与()分离。

答案:范围、外部边界、界面接口、内部实现、外部可访问性

5、结构化方法的本质是(),其()、可修改性和可重用性都比较差。答案:功能分解、稳定性

6、动态模型描述了系统的()。

答案:动态行为

7、类具有属性,它是对象的()的抽象,用()来描述类的属性。

答案:状态、数据结构

8、动态模型描述了系统的()结构。

答案:控制

9、对象具有状态,对象用()来描述它的状态。

答案:数据值

10、在C++和C中有一个()函数,可以使用这个过程来说明构成系统主要对象的那些类的实例。

答案:main()

二、单项选择题(20小题)

1、在确定类时,所有()是候选的类。

A、名词

B、形容词

C、动词

D、代词

答案:A

2、面向对象软件技术的许多强有力的功能和突出的优点,都来源于把类组织成一个层次结构的系统,一个类的上层可以有父类,下层可以有子类,这种层次结构系统的一个重要性质是(),一个类获得其父类的全部描述(数据和操作)。

A、传递性

B、继承性

C、复用性

D、并行性

答案:B

3、对象是面向对象开发方法的基本成分,每个对象可用它本身的一组()和它可以执行的一组操作来定义。

A、服务

B、参数

C、属性

D、调用

答案:C

4、面向对象开发方法子概念和表示上的一致性保证了分析和设计的()过渡。

A、困难

B、不容易

C、平滑

D、顺序

答案:C

5、以下说法正确的是()。

A、组装结构可用来描述现实世界中的一般的抽象关系

B、分类结构可用来描述现实世界中的类的组成的抽象关系

C、面向对象的继承性是子类自动共享父类数据结构和方法的机制

D、面向对象的唯一性是指将具有一致性的数据结构(属性)和行为(操作)的对象抽象成类

答案:C

6、与事件联系在一起的瞬时操作是()。

A、处理

B、动作

C、活动

答案:B

7、以下说法正确的是()。

A、角色说明类在关联中的作用,它位于关联的端点

B、不同类的关联角色不能省略

C、同类的关联角色可有可无

D、在一个类层次结构中,若有多重继承,则该类层次结构是树状层次结构

E、在一个类层次结构中,若有单重继承,则该类层次结构是网状层次结构

答案:A

8、以下说法错误的是()。

A、数据流图中的处理用来改变数据值

B、在一个计算中,用数据流来表示一中间数据值,数据流不能改变数据值

C、动作对象是一种主动对象,它通过生成或者使用数据值来驱动数据流图

D、数据流图中的数据存储是被动对象,它用来存储数据

E、存储和动作对象可以用文件或外部设备来实现

答案:E

9、Rumbangh等人提出的对象模型技术OMT把分析时收集的信息构造在三类模型中,即对象模型、动态模型和()。

A、信息模型

B、控制模型

C、功能模型

D、行为模型

答案:C

10、()模型表示了对象的相互行为。

A、对象

B、动态

C、功能

D、分析

答案:B

11、在开发废弃型类时,在软件生存期中最花费时间的部分应当是软件的()。

A、实现

B、测试

C、设计

D、求精和维护

答案:D

12、通过执行对象的操作改变该对象的属性,但它必须通过()的传递。

A、接口

B、消息

C、信息

D、操作

13、在考察系统的一些涉及时序和改变的状况时,要用动态模型来表示。动态模型着

重于系统的控制逻辑,它包括两个图:一个是事件追踪图,另一个是()。

A、数据流图

B、状态图

C、系统结构图

D、时序图

答案:B

14、在确定属性时,所有()是候选的属性。

A、动词

B、名词

C、修饰性名次词组

D、词组

答案:C

15、一个面向对象系统的体系结构通过它的成分对象和对象间的关系确定,与传统的面向数据流的结构化开发方法相比,它具有()优点。

A、设计稳定

B、变换分析

C、事务分析

D、模块独立性

答案:A

16、以下说法错误的是()。

A、多态性防止了程序相互依赖性而带来的变动影响

B、多态性是指相同的操作或函数、过程可作用于多种类型的对象上并获得不同结果

C、多态性与继承性相结合使软件具有更广泛的重用性和可扩充性

D、封装性是保证软件部件具有优良的模块性的基础

答案:A

17、以下说法正确的是()。

A、对象模型指出发生了什么

B、动态模型确定什么时候发生

C、功能模型确定发生的客体

D、功能模型描述了系统的所有计算,它考虑所计算的次序

答案:B

18、面向对象的主要特征除对象唯一性、封装、继承外,还有()。

A、多态性

B、完整性

C、可移植性

D、兼容性

答案:A

19、动态模型的描述工具是()。

B、结构图

C、状态图

D、设计图

答案:C

20、软件部分的内部实现与外部可访问性分离,这是指软件的()。

A、继承性

B、共享性

C、封装性

D、抽象性

答案:C

三、简答题(5小题)

1、传统开发方法存在的问题是什么?

答案:传统开发方法存在的问题是:

(1)软件重用性差。传统的开发方法,例如结构化方法等,虽然给软件产业带来了巨大进步,但是并没有解决软件重用的问题。同类型的项目,只要需求有一些变化,都要从头开始,原来的系统很难重用。

(2)软件可维护性差。用传统方法开发出来的软件,维护时其费用和成本仍然很高,其原因是可修改性差,维护困难,导致可维护性差。

(3)开发出的软件不能满足用户需要。用传统的结构化方法开发大型软件系统涉及各种不同领域知识,在开发需求模糊或需求动态变化的系统时,所开发出的软件系统往往不能真正满足用户的需要。其原因是开发人员不能完全获得或不能彻底理解用户的需求,以致开发出的软件系统与用户预期的系统不一致,不能满足用户的需要。另一种原因是所开发的软件系统不能适应用户经常变化的情况,系统的稳定性差和可扩充性不能满足用户的需求。

2、试述面向对象方法有哪些特征。

答案:面向对象的特征为:

(l)对象唯一性。每个对象都有自身的唯一的标识,通过这种标识,可找到相应的对象。在对象的整个生命期中,它的标识都不改变,不同的对象不能有相同的标识。在对象建立时,有系统授予新对象以唯一的对象标识符,它在历史版本管理中又起巨大作用。

(2)分类性。分类性是指具有一致的数据结构(属性)和行为(操作)的对象抽象成类。每个类是具有相同性质的个体对象的集合,而每个对象是相关类的实例。

(3)继承性。继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。在定义和实现一个类的时候,可以在一个已经存在的类的基础上来进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。

继承性是面向对象程序设计语言不同于其他语言的最主要的特点,是其他语言所没有的。在类层次中,子类只继承一个父类的数据结构和方法,则称为“单重继承”。在类层次中,子类继承了多个父类的数据结构和方法,则称为“多重继承”。

(4)多态性(多形性)。多态性是指允许不同类的对象对同一消息作出响应。不同的对象,收到同一消息可以产生不同的结果,这种现象称为“动态性”。如MOVE操作,可以是窗口对象的移动操作,也可以是国际象棋子移动的操作。

多态性允许每个对象以适合自身的方式去响应共同的消息。这样就增强了操作的透明性、可理解性和可维护性。用户不必为相同的功能操作但作用于不同类型的对象而费心去识别。

3、为什么说用结构化方法开发的软件,其稳定性、可修改性和可重用性都比较差?

答案:这是因为结构化方法的本质是功能分解,从代表目标系统状态功能的单个处理着手,自顶向下不断把复杂的处理分解为子处理,这样一层一层地分解下去,直到仅剩下若干个容易实现的子处理为止,然后用相应的工具来描述各个最底层的处理。因此,结构化方法是围绕实现处理功能的“过程”来构造系统的。然而,用户需求的变化大部分是针对功能的。用这种方法设计出来的系统结构常常是不稳定的,用户需求的变化往往造成系统结构

的较大变化,从而需要花费很大代价才能实现这种变化。

4、简述对象、类、类结构、消息、方法的基本概念。

答案:它们的基本概念如下。

(1)对象。对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。

主要有如下的对象类型:有形实体、作用、事件、性能说明。

对象具有状态。一个对象用数据来描述它的状态,对象还有操作,用于改变对象的状态,对象及其操作就是对象的行为。

对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中。对象内的数据具有自己的操作。从而可灵活地专门描述对象的独特行为,具有较强的独立性和自治性,其内部状态不受或很少受外界的影响,具有很好的模块化特点。为软件重用奠定了坚实的基础。(2)类。类是具有相同属性和服务的一组对象的集合。因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象。

(3)类结构。在客观世界中有若干类,这些类之间有一定的结构关系。通常有两种主要的结构关系,即一般一具体结构关系,整体一部分结构关系。

①一般一具体结构关系称为“分类关系”,也可以说是“或”关系,或者是“isa”关系。类的这种层次结构可用来描述现实世界中的一般化的关系,通常越在上层的类越具有一般性和共性,越在下层的类越具体、越细化。

②整体一部分结构称为“组装结构”,它们之间的关系是一种“与”关系,或者是“hasa”关系。类的这种层次关系可用来描述现实世界中的类的组成的抽象关系。上层的类具有整体性,下层的类具有成员性。在类的层次结构中,通常上层类称为“父类”或“超类”,下层类称为“子类”。

(4)消息。对象之间进行通信的构造叫做消息。在对象的操作中,当一个消息发送到某个对象时,消息包含接收对象去执行某种操作的信息。接收信息的对象经过解释,然后给予响应。这种通信机制称为“信息传递”。发送一条信息至少要包含说明接收消息的对象名、发送给该对象的消息名(即对象名,方法名),一般还要对参数加以说明,参数可以是认识该消息的对象所知道的变量名,或者是所有对象都知道的全局变量名。

(5)方法。类中操作的实现过程叫做“方法”,一个方法有方法名、参数、方法体。当一个对象接收一条消息后,它所包含的方法决定对象怎样动作。方法也可以发送消息给其他对象,请求执行某一动作或提供信息。由于对象的内部对用户是密封的,所以消息只是对象同外部世界连接的管道。对象内部的数据只能被自己的方法所操纵。

5、试述面向对象方法的开发过程是怎样的?

答案:面向对象开发方法包括以下几个过程:

(1)面向对象的分析。面向对象分析的目的是对客观世界的系统建立对象模型、动态模型、功能模型。在建立模型之前,设计者必须了解需求以及问题所处的环境,必须调查所有需求,分析所有需求的实质含义。在理解系统需求的基础上,按照上述建立模型的过程进行建模工作。建立模型的工作不是一次就可建好的,复杂问题的模型需要反复构造,先构造模型的子集,然后扩展到整个模型。

(2)面向对象的设计。面向对象的设计是把分析阶段得到的分析模型,经过逐步扩充和完善,转变为设计模型。将分析模型的问题域的概念转变为设计模型的实现概念上来。面

向对象的设计也可以细分为系统设计和对象设计。系统设计确定实现系统的策略和目标系统的高层结构,如人机界面的设计。数据管理的设计、软件控制的实现、系统的体系结构等。对象设计确定实现用到的类、关联的完整定义、接口形式及实现操作方法的算法,可以增加实现所必须的内部对象,对数据结构和算法进行优化。

面向对象的设计所遵循的基本原理和启发规则与结构化设计方法类似,但是增加了一些面向对象的新特点。

尽管面向对象分析和面向对象设计是两个阶段,但是在实际的软件开发中二者的界限是很模糊的,许多分析结果可以映射为设计结果,而在设计过程中又往往会加深和补充对系统需求的理解,从而进一步完善分析结果。因此,分析和设计是一个多次反复迭代的过程。(3)面向对象的实现。面向对象的实现包含两方面的工作,把面向对象的设计结果翻译成用某种程序设计语言书写的面向对象程序,然后进行测试并调试面向对象的程序。面向对象程序设计的质量基本上由面向对象的设计的质量决定。.但是与程序设计语言的特点和程序设计风格有关系。

软件测试仍然是保证软件可靠性的主要措施,但是面向对象的软件也给测试带来了一些新的特点和新问题,如继承性就给测试带来了困难,面向对象程序的执行与面向过程的程序的执行也大不相同,它是事件驱动的,对象彼此之间通过消息传递启动相应操作,但是对象并没有明显的规定用什么次序启动它的操作才是合法的。因此传统的测试方法也不再完全适用了。

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

面向对象程序设计教程(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

第10章面向对象讲解

第10章面向对象分析 10.1面向对象分析的基本过程 不论采用哪种软件工程方法开发软件,需求分析的主要工作都是:理解需求、表达需求和验证需求,下面的图概括地表示了参照当前系统建立目标系统的过程。 图:参照当前系统建立目标系统 面向对象分析(Object-Oriented Analysis,简称OOA)的关键就是识别出对象与类,并分析它们之间的关系,最终建立对象模型、动态模型和功能模型。

10.1.1 概述 系统分析员要善于学习、勇于实践,更重要的是一切从实际出发。 [[注注]]“OOA 就是抽取和整理用户需求并建立问题域精精确确模模型型的过程。”(P231)——这在一开始能做到吗?——扯蛋 10.1.2 3个子模型与5个层次 面向对象建模需建立包含系统的三个要素:1)静态结构(对象模型)、2)交互次序(动态模型)、3)数据交换(功能模型)。 建立系统模型的过程是一个迭代(iterations )式的自顶向下的求精过程。对于一个大型复杂系统来说对对象象模模型型一般由下述5个层次组成:

图10.2 复杂问题的对象模型的5个层次 其中主题层是指从一个更高(高于“类”)的抽象层次来描述对象模型(即从一个相当高的层次上描述总体模型),通过划分“主题”把一个复杂系统的对象模型分解成几个不同的概念范畴。 其实上述5个层次就是OOA中建立对象模型的5项主要工作:找出类和对象,识别结构(类或对象之间的关系),识别主题、定义属性、定义服务。我们知道动态模型和功能模型中都包含了对象模型中的操作,因此人们在定义每个类中的服务前,往往先建立起动态模型和功能模型,这样说来OOA大体上可按下列顺序进行: (1)确定类和对象 (2)确定关联 (3)划分主题 (4)定义属性 (5)确定继承关系 (6)建立动态模型

面向对象方法

面向对象方法 1、对象:是系统中用来描述客观事务的一个实体,是构成系统的一个基本单位。三个要素:对象标志(供系统内部唯一的识别对象);属性(状态、数据、用来描述对象的静态特征);服务(操作、行为或方法,用来描述对象的动态特征) 2、面向对象=对象(objects)+类(classes)+继承(inheritance)+消息通信(communication with messages) 3、封装是对象的一个重要原则。有2 个含义:对象是全部属性和全部服务紧结合而形成的一个不可分隔的整体;对象是一个不透明的黑盒子,表示对象状态的数据和实现操作的代码都被封装在黑盒子里面。 4、类和类库:类是对象的抽象定义,是一组具有相同数据结构和相同操作的对象的集合。类与对象是抽象描述与具体实例的关系,一个具体的对象被称为类的一个实例(instance)。 5、继承:使用已存在的定义作为基础建立新定义的技术。父类、子类要了解。 6、多态性:可以分为四类:过载多态(重载多态),强制多态,包含多态,参数多态。前两种统称为专用多态(特定多态),后两种称为通用多态。 7、消息:指向对象发出的服务请求,它应该含有下述

信息:提供服务的对象标志、消息名、输入信息和回答信息 8、消息通信:封装使对象成为一些各司其职、互不干扰的独立单位;消息通信为他们提供了唯一的合法的动态联系途径,使他们的行为能够相互配合,构成一个有机的系统。只有同时使用对象、类、继承与消息通信,才是真正面向对象的方法。 9、统一建模语言UML---是一种语言;是一种可视化语言;是一种可用于详细描述的语言;是一种构造语言;是一种文档化语言 10、UML 结构:构造块(建模元素、关系、图);公共机制(规格说明、修饰、公共分类、扩展机制);构架(逻辑视图、进程视图、实现视图(构建)、布署视图、用例视图)裸狗不用进 11、UML 视图:系统静态结构的静态模型(包括类图、构件图、部署图),系统动态结构的动态模型(包括对象图、用例图、序列图、协作图、状态图、活动图) 12、用例图:用例模型描述的是外部执行者(Actor)所理解的系统功能,用于需求分析阶段。(十四个图能认出来) 参与者(Actor)代表与系统接口的任何事物或人,它是指代表某一种特定功能的角色,参与者都是虚拟的概念。

面向对象程序设计概述

1.什么是结构化程序设计方法?这种方法有哪些优点和缺点? 【解答】结构化程序设计方法是指20世纪60年代开始出现的高级语言程序设计方法,由于采用了数据结构化、语句结构化、数据抽象和过程抽象等概念,使程序设计在符合客观事物与逻辑的基础上更进了一步。结构化程序设计的思路是:自顶向下、逐步求精。程序结构由具有一定功能的若干独立的基本模块(单元)组成,各模块之间形成一个树状结构,模块之间的关系比较简单,其功能相对独立,模块化通过子程序的方式实现。结构化程序设计方法使高级语言程序设计开始变得普及,并促进了计算机技术的深入应用。 虽然结构化程序设计方法采用了功能抽象、模块分解与组合,以及自顶向下、逐步求精的方法,能有效地将各种复杂的任务分解为一系列相对容易实现的子任务,有利于软件开发和维护;但与面向对象程序设计方法相比,结构化程序设计存在的主要问题是,程序的数据和对数据的操作相互分离,若数据结构改变,程序的大部分甚至所有相关的处理过程都要进行修改。因此,对于开发大型程序具有一定的难度,软件的可重用性差,维护工作量大,不完全符合人类认识世界的客观规律。 2.面向对象程序设计有哪些重要特点? 【解答】软件设计的目的是为了解决日常生活中存在的各种实际问题,面向对象程序设计与以往各种程序设计方法的根本区别是程序设计的思维方法的不同。它主要具有如下重要特点: (1)面向对象程序设计实现了较直接地描述客观世界中存在的事物(即对象)及事物之间的相互关系,它所强调的基本原则是直接面对客观事物本身进行抽象,并在此基础上进行软件开发,将人类的思维方式与表达方式直接应用在软件设计中。 (2)面向对象的程序设计将客观事物看作具有属性和行为的对象,通过对客观事物进行抽象来寻找同一类对象的共同属性(静态特征)和行为(动态特征),并在此基础上形成类。 (3)面向对象的程序设计将数据和对数据的操作封装在一起,提高了数据的安全性和隐蔽性。

面向对象课后题目解析

第 1 章 面向对象程序设计概论 面向对象程序设计教程(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 )放在一起,作为一个相互依存、不可分割的整体来处理。 A. 算法 B. 信息 C. 数据隐藏 D. 数据抽象 (7)下面( A )不是面向对象系统所包含的要素。 A. 重载 B. 对象 C. 类 D. 继承 【结果分析】

面向对象方法学概述资料

9.1 面向对象方法学概述 9.2 面向对象的概念 9.3 面向对象建模 9.4 对象模型 9.5 动态模型 9.6 功能模型 9.7 3种模型之间的关系 传统的软件工程方法学曾经给软件产业带来巨大进步,部分地缓解了软件危机,使用这种方法学开发的许多中、小规模软件项目都获得了成功。但是,人们也注意到当把这种方法学应用于大型软件产品的开发时,似乎很少取得成功。 在20世纪60年代后期出现的面向对象编程语言Simula-67中首次引入了类和对象的概念,自20世纪80年代中期起,人们开始注重面向对象分析和设计的研究,逐步形成了面向对象方法学。到了20世纪90年代,面向对象方法学已经成为人们在开发软件时首选的范型。面向对象技术已成为当前最好的软件开发技术。 9.1 面向对象方法学概述 9.1.1 面向对象方法学的要点 面向对象方法学的出发点和基本原则,是尽可能模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程,也就是使描述问题的问题空间(也称为问题域)与实现解法的解空间(也称为求解域)在结构上尽可能一致。 面向对象方法学所提供的“对象”概念,是让软件开发者自己定义或选取解空间对象,然后把软件系统作为一系列离散的解空间对象的集合。应该使这些解空间对象与问题空间对象尽可能一致。这些解空间对象彼此间通过发送消息而相互作用,从而得出问题的解。也就是说,面向对象方法是一种新的思维方法,它是把程序看作是相互协作而又彼此独立的对象的集合。

概括地说,面向对象方法具有下述4个要点: (1) 认为客观世界是由各种对象组成的,任何事物都是对象,复杂的对象可以由比较简单的对象以某种方式组合而成。按照这种观点,可以认为整个世界就是一个最复杂的对象。因此,面向对象的软件系统是由对象组成的,软件中的任何元素都是对象,复杂的软件对象由比较简单的对象组合而成。 由此可见,面向对象方法用对象分解取代了传统方法的功能分解。 (2) 把所有对象都划分成各种对象类(简称为类,class),每个对象类都定义了一组数据和一组方法。数据用于表示对象的静态属性,是对象的状态信息。因此,每当建立该对象类的一个新实例时,就按照类中对数据的定义为这个新对象生成一组专用的数据,以便描述该对象独特的属性值。 (3) 按照子类(或称为派生类)与父类(或称为基类)的关系,把若干个对象类组成一个层次结构的系统(也称为类等级)。在这种层次结构中,通常下层的派生类具有和上层的基类相同的特性(包括数据和方法),这种现象称为继承(inheritance)。 (4) 对象彼此之间仅能通过传递消息互相联系。对象与传统的数据有本质区别,它不是被动地等待外界对它施加操作,相反,它是进行处理的主体,必须发消息请求它执行它的某个操作,处理它的私有数据,而不能从外界直接对它的私有数据进行操作。 重点:如果仅使用对象和消息,则这种方法可以称为基于对象的(object-based)方法,而不能称为面向对象的方法;如果进一步要求把所有对象都划分为类,则这种方法可称为基于类的(class-based)方法,但仍然不是面向对象的方法。只有同时使用对象、类、继承和消息的方法,才是真正面向对象的方法。 9.1.2 面向对象方法学的优点 1. 与人类习惯的思维方法一致 2. 稳定性好 3. 可重用性好(重点) 用已有的零部件装配新的产品,是典型的重用技术,例如,可以用已有的预制件建筑一幢结构和外形都不同于从前的新大楼。重用是提高生产率的最主要的方法。

比较四种典型面向对象方法的异同

普 通 本 科 毕 业 小 论 文 题目:比较四种典型面向对象方法的异同 学院软件与通信工程学院 学生姓名张伟聪学号 0123992 专业软件工程届别 125 指导教师廖汉成 二O一四年九月二十七日

一、引言 随着计算机科学的发展和应用领域的不断扩大,对计算机技术的要求越来越高。特别是当计算机硬件有了飞速发展之后,各种应用领域对软件提出了更高的要求。结构化程序设计语言和结构化分析与设计已无法满足用户需求的变化。发展软件质量,缩短软件开发周期,发展软件可靠性、可扩充性和可重用性迫使软件界人士不断研究新方法、新技术,探索新途径。 面向对象的方法是一种分析方法、设计方法和思维方法。面向对象方法学的出发点和所追求的基本目标是使人们分析、设计与实现一个系统的方法尽可能接近人们认识一个系统的方法。也就是使描述问题的问题空间和解决问题的方法空间在结构上尽可能一致。其基本思想是:对问题空间进行自然分割,以更接近人类思维的方式建立问题域模型,以便对客观实体进行结构模拟和行为模拟,从而使设计出的软件尽可能直接地描述现实世界,构造出模块化的、可重用的、维护性好的软件,同时限制软件的复杂性和降低开发维护费用。面向对象程序设计方法起源于六十年代末期的语言SIMULA’67,到了七十年代末期,软件行业正受到软件危机的困扰,结构化的开发方法不能够很好地解决软件危机。面向对象语言Smalltalk的出现,进一步发展和完善了面向对象的程序设计语言,从此面向对象也和开发方法开始结合,出现了面向对象的开发方法。 自80年代后期以来,相继出现了多种面向对象开发方法,现将其中四种典型的方法作一个简介和比较。面向对象方法都支持三种基本的活动:识别对象和类,描述对象和类之间的关系,以及通过描述每个类的功能定义对象的行为。 一.Booch方法 Booch是面向对象方法最早的倡导者之一,他提出了面向对象软件工程的概念。1991年,他将以前面向Ada的工作扩展到整个面向对象设计领域。Booch方法的开发模型包括静态模型和动态模型,静态模型分为逻辑模型和物理模型,描述了系统的构成和结构,动态模型分为状态图和时序图。该方法对每一步都作了详细的描述,描述手段丰富、灵活。不仅建立了开发方法,还提出了设计人员的技术要求,不同开发阶段的资源人力配制。OOD[3](Object Oriented Design)方法是Grady Booch从1983年开始研究,1991年后走向成熟的一种方法。OOD主要包括下述概念:类(class)、对象(object)、使用(uses)、实例化(instantiates)、继承(inherits)、元类(meta class)、类范畴(class category)、消息(message)、域(field)、操作(operation)、机制(mechanism)、模块(module)、子系统(subsystem)、过程(process)等。其中,使用及实例化是类间的静态关系,而动态对象之间仅有消息传递的连接。元类是类的类。类范畴是一组类,它们在一定抽象意义上是类同的。物理的一组类用模块来表达。机制是完成一个需求任务的一组类构成的结构。 Booch方法的过程包括以下步骤: (1)在给定的抽象层次上识别类和对象; (2)识别这些对象和类的语义; (3)识别这些类和对象之间的关系; (4)实现类和对象;

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

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

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

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

面向对象技术课程设计[2017]

《面向对象技术》课程设计 一、课程设计的目的与要求 1、教学目的 本课程设计是《面向对象程序设计》课程的组成之一,也是它的继续和延伸,为使该课程取得更好的教学效果而设置,使学生通过参加小型软件的开发过程,进一步掌握面向对象的程序设计方法,巩固和补充课堂讲授的理论知识,训练学生初步的综合分析问题和程序设计能力,综合运用所学的理论知识解决实际问题的能力,分析和总结面向对象程序设计的能力。使学生具有团队协作精神,并培养学生的创新能力和创新意识。 2、基本要求: 1.采用面向对象方法(抽象、类、继承、多态性)进行分析、设计、编程。 2.提交开发程序的源代码和技术文档; 3.达到设计要求,并完成技术答辩。 课程设计报告应包含以下八个内容。 一、题目简介 二、系统概述 对系统要实现的功能,设计的特点进行扼要的描述,以及团队成员分工。 三、系统设计 要求使用类图(类图描述了系统中的类及其相互之间的继承、组合等关系)、对象图加以描述. 四、关键技术(关键类/对象/变量/函数/算法...) 五、效果及存在问题 说明系统的运行效果(附上运行界面图片),存在哪些不足以及预期的解决办法。 六、心得体会 谈谈自己在课程设计过程中的心得体会。 七、附录 附上各功能模块的主要代码。 八、参考文献 列出各种参考文献,包括参考书目,论文和网址等。

二、课程设计的内容与安排 1、选题范围 所选题目必须能够实现一个完整意义上的应用系统,但题目名称与具体功能不限。学生可根据自身的兴趣,特点等进行选题。 所选题目可与以下知识点结合:类定义与对象访问,类的派生与继承,重载,菜单,工具栏,对话框,文档结构,文件操作,图形操作,多媒体技术,数据库操作等。要充分运用C#语言描述所设计的类,如图形图像类,工具类,游戏背景画面类,细胞类,题目类,飞行器类等,每一个类应包含数据成员和成员函数,设计基类和派生类,并运用多态性和虚函数的知识。 2、课程设计步骤 (1)、根据个人兴趣,爱好,以及课程设计的时间要求,确定设计题目的名称; (2)、查找与设计题目相关的资料; (3)、进行应用程序总体结构,使用功能的设计; (4)、进行应用程序的界面设计和源程序代码的编写; (5)、上机编辑,调试程序; (6)、实践设计报告的撰写。 3、课程设计时间 本课程设计原时间安排是18周,在一周内完成设计任务并提交成果。由于教学安排的时间将近考试周,为同学们更好地安排复习计划,可由同学灵活掌握。 课程设计考核(检查,答辩)在开学第一周内完成 4、选题 以下给出若干选题,具体功能自行扩展完善: 1)、即时通讯(IM) 至少有如下功能: ?可以通过IP地址和端口号向其他计算机发送信息,一般从好友列表中选择其他计算机的IP地址和端口号。 ?随时侦听是否有其他计算机的连接请求,并显示接受的信息。

三种面向对象方法

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

摘要 主要介绍了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)系统设计。结合问题域的知识和目标系统的系统结构(求解域),将目标系统

OOP技术:面向对象技术

第三章面向对象技术 【课前思考】 1.什么是对象?什么是类? 2.面向对象编程的特性有哪三个?它们各自又有哪些特性? 3.你知道java语言在面向对象编程方面有何独特的特点吗? 【学习目标】 本讲主要讲述了java语言的面向对象技术,包括面向对象的基本概念、面向对象的程序设计方法及java中的类、包、对象、的特性。通过本讲的学习,同学们可以使用面向对象技术编写java程序。 【学习指南】 应深刻理解各知识点的概念,使用上一讲的编程基础知识及面向对象技术,编写简单的java类,由浅至深,养成风格良好的编程习惯。 【难重点】 重点: 1.仔细体会面向对象编程的思想,熟练理解类和对象的概念,理解面向对象的特性,会编写简单的类,逐渐掌握面向对象编程的方法。 2.注意java语言中,不允许多重继承,以及类变量和类方法的使用。

难点: 1.理解方法重载和方法重写,不要混淆了两者的使用。 2.类变量和类方法的使用。 【知识点】 3.1 面向对象技术基础 3.1.1 面向对象的基本概念 3.1.2 面向对象的基本特征 3.1.3 面向对象的程序设计方法 3.2 Java语言的面向对象特性 3.2.1 类 3.2.2 对象 3.2.3面向对象特性 3.1 面向对象技术基础 3.1.1 面向对象的基本概念 面向对象的基本思想 面向对象是一种新兴的程序设计方法,或者是一种新的程序设计规范(paradigm),其基本思想是使用对象、类、继承、封装、消息等基本概念来进行程序设计。从现实世界中客观存在的事物(即对象)出发来构造软件系统,并且在系统构造中尽可能运用人类的自然思维方式。开发一个软件是为了解决某些问题,这些问题所涉及的业务范围称作该软件的问题域。其应用领域不仅仅是软件,还有计算机体系结构和人工智能等。 1.对象的基本概念 对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。一个对象由一组属性和对这组属性进行操作的一组服务组成。从更抽象的角度来说,对象是问题域或实现域中某些事物的一个抽象,它反映该事物在系统中需要保存的信息和发挥的作用;它是一组属性和有权对这些属性进行操作的一组服务的封装体。客观世界是由对象和对象之间的联系组成的。 主动对象是一组属性和一组服务的封装体,其中至少有一个服务不需要接收消息就能主动执行(称作主动服务)。

软件设计师面向对象方法学(一)

[模拟] 软件设计师面向对象方法学(一) 选择题 第1题: 下列关于静态多态实现重载的描述中正确的是______。 A.重载的方法(函数)的方法名(函数名)可以不同 B.重载的方法(函数)必须在返回值类型以及参数类型上有所不同 C.重载的方法(函数)必须在参数顺序或参数类型上有所不同 D.重栽的方法(函数)只需在返回值类型上有所不同 参考答案:C 第2题: 程序设计语言提供了基本类型及其相关的操作,而______则允许开发者自定义一种新的类型及其相关的操作。 A.对象 B.实例 C.类 D.引用 参考答案:C 第3题: ______表示了对象间“is-a”的关系。 A.组合 B.引用 C.聚合 D.继承 参考答案:D 第4题: 若对象A可以给对象B发送消息,那么______。 A.对象B可以看见对象A B.对象A可以看见对象B C.对象A、B相互不可见

D.对象A、B相互可见 参考答案:B 第5题: 类描述了一组对象共同的特性,下列叙述中正确的是______。 A.类本身不能具有变量 B.对象具有类定义的所有变量的一份拷贝 C.对象间不能共享类定义的变量 D.可通过类名访问静态变量(类变量) 参考答案:D (6) 反映了类间的一种层次关系,而(7) 反映了一种整体与部分的关系。 第6题: A.继承 B.组合 C.封装 D.多态 参考答案:A 第7题: A.继承 B.组合 C.封装 D.多态 参考答案:B 第8题: 下列叙述中正确的是______。 A.d西向对象程序设计语言都不支持过程化的程序设计 B.面向对象系统只可采用面向对象程序设计语言实现 C.某些过程化程序设计语言也可实现面向对象系统

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

结构化方法与面向对象方法的内在联系 (一)二者在分解和抽象原则上一致 分解和抽象是软件开发中控制问题复杂性的重要原则。分解即化 整分零,将问题剥茧抽丝,层层消化;抽象则是通过分解体现,在逐层分解时,上层是下层的抽象,下层是上层的具体解释和体现,运用抽象可以不用一次考虑太多细节,而逐渐的有计划有层次的了解更多细节。面向对象方法与结构化方法在运用分解和抽象原则上的要求是完全一致的。 (二)局部化和重用性设计上的一致 局部化是软件开发中的一个重要原则,即不希望软件一部分过多 地涉及或影响软件的其它部分。在结构化方法中,局部化主要体现在代码与数据的分隔化,即程序各部分除必要的信息交流外,彼此相互隔离而互不影响,而面向对象方法则采用数据、代码的封装,即将数据、代码和操作方法封装成一个类似“黑箱”的整体对象,提高了程序的可靠性和安全性,同时增强了系统的可维护性。也就是说面向对象方法比结构化方法的运用更加深入更彻底。 结构化方法与面向对象方法的区别 (一)处理问题时的出发点不同 结构化方法是强调过程抽象化和模块化,以过程为中心构造或处 理客观世界问题的,它是一种面向过程的开发方法;面向对象方法强调把问题域的要领直接影射到对象及对象之间的接口上,是用符合人们通常的思维方式来处理客观世界的问题。

(二)处理问题的基本单位和层次逻辑关系不同 结构化方法把客观世界的问题抽象成计算机可以处理的过程,处 理问题的基本单位是能清晰表达过程的模块,用模块的层次结构概括模块或模块间的关系和功能;面向对象方法是用计算机逻辑来模拟客观世界中的物理存在,以对象的集合类作为处理问题的基本单位,尽可能使计算机世界向客观世界靠拢,以使问题的处理更直截了当,面向对象方法是用类的层次结构来体现类之间的继承和发展。 (三)数据处理方式与控制程序方式不同 结构化方法是直接通过程序来处理数据,处理完毕后即可显示处 理结果,在控制程序方式上是按照设计调用或返回程序不能自由导航,各模块程序之间存在着控制与被控制的关系;面向对象方法将数据与对应的代码封装成一个整体,原则上其它对象不能直接修改其数据,即对象的修改只能由自身的成员函数完成,控制程序方式上是通过“事件驱动”来激活和运行程序。 (四)分析设计与编码转换方式不同 结构化方法强调分析、设计及编码之间按规则进行转换,贯穿软件 生命周期的分析、设计及编码之间实现的是一种有缝的连接;面向对象方法从分析到设计再到编码则采用一致性的模型表示,贯穿软件生命周期的分析、设计及编码之间是一种平滑过程,即实现的是一种无缝连接。 结构化方法和面向对象方法各有优缺点 主要表现在如下几个方面:

面向对象方法学试题及答案

C++程序设计试题(下)样卷(卷面50分) (考试用时100分钟) 一、选择题(每题1分,共5分) 1.设计一个自定义类时,需要在屏幕上显示或向文件写入类对象的数据,最佳选择方法是。 A.为屏幕显示和文件写入各自设计一个成员函数。 B.为屏幕显示和文件写入统一设计一个成员函数。 C.重载插入运算符(<<)。 D.重载提取运算符(>>)。 2.关于异常处理,那些说法是错误的。 A.在C++程序中,由throw表达式抛出异常,而该表达式应直接或间接地被包含在try块中。 B.当抛出异常后,寻找匹配的catch子句有固定的过程:逆着程序函数的调用链返回,称为栈展开(Stack Unwinding)。 C.当某条语句抛出异常时,跟在其后的语句将被跳过,但析构函数仍然执行,所以应该在析构函数中释放资源。 D.catch子句实际是一个特殊的函数。 3.下列关于动态资源分配的说法中错误的是。 A.动态分配的资源不仅包括内存,还包括文件。 B.动态内存分配的优点在于可以随时给数组分配所需的内存而不会失败。C.动态分配的资源通常要求在析构函数中释放。 D.对含有动态分配的数据成员的类对象应该采用深复制。 4.下列有关模板的描述那些是错误的。 A.模板把数据类型作为一个设计参数,称为参数化程序设计。 B.模板参数除模板类型参数外,还有非类型参数。 C.类模板与模板类是同一概念。 D.使用时,模板参数与函数参数相同,是按位置而不是名称对应的。 5.关于多态,下面那些说法是正确的。 A.多态分静态的(编译时)和动态的(运行时)。 B.运行时的多态与类的层次结构有关。 C.在基类定义了虚函数后,在派生类中重新定义时可以不加关键字virtual。D.仅使用虚函数并不能实现运行时的多态性,还必须采用指针或引用来调用才能真正实现运行时的多态性。 二、填空题(每空0.5分,共5分) 1.有标准字符串类string对象str,str1,str2。对其字符元素的访问可用两种方式:str[i]和str.at(i)。两者的区别是(1)。str1+=str2 实现的运算是(2)。str.substr(pos,length1) 实现的运算是(3)。

什么是面向对象技术

第1章习题 1. 什么是面向对象技术? 2. 面向对象与面向过程程序设计有什么不同? 3. 面向对象技术有哪些优点? 4. 面向对象技术中的封装性有何优缺点?如何克服这些缺点? 5. 为什么要应用继承机制? 6. C++对多态性的支持体现在哪些方面? 7. 目前常用的面向对象程序设计语言有何异同? 8. 什么是.NET? 第2章习题 1. 写出下面程序的运行结果。 #include <> void main() { int* a; int* &p=a; int b=10; p=&b; cout<<*a< void main() { int iarray[10]={0,2,4,6,8,10,12,14,16,18}; int sum=0; int* iptr=iarray; for(int i=0;i<10;i++) { sum+=*iptr; iptr++; } cout<<"sum is"<

int m=8; int add3(int x,int y=7,int z=m) { return x+y+z; } void main() { int a=1,b=2,c=3; cout<

面向对象方法的发展历史

面向对象方法的发展历史 (一)80年代面向对象的方法已成为新趋势 在五年之内方法论从5种开发到50种以上,面向对象最早开始提到的概念是在1986年,一开始就有五、六种不同的方法论,但在五年之内,它就开发到50多家,所以开发速度是很快的。 布什(Booch),面向对象软件工程在这些方法之中居于领导地位。比较出名的Booch 方法由布什所发明;OMT由詹姆斯、云豹(James Rumbaugh)所发明;00SE由雅寇森(Jacobson)所发明。 另外的方法如:尤顿(coad-Yoadon),雪梨、米勒(Shlaer-Mellor)等各种不同方法。(二)不同的总是表面 在共同的想法上集中收敛,因为各家所提出的方法都很多,大家当然要大战一场。每一个人都说大话,说他们自己的最好,但事实上如果看到他们的本质,很多的方法都是相同的,性质也相似。 不同的是记号法和术语,不同的不是它的设计结构,而是所用的语言、术语,还有它的记号法,这种情形,在沟通上可能会产生一些问题。基本上创造软件的语言,如果说术语不同的话,就没有办法沟通,但是剥开语言的层次看,它的实质都是相同的,逻辑设计概念都是相似的,所以这方面倒是非常相近。 (三)实际工程展示的工作与早期的方法经验有关 所以大家都说他们是最好的,到底谁是最好的,就是看他实际应用的经验,经验越多,它能够被使用的次数越多,那就证明它越好用。 (四)OMT分析与设计过程 1、对象模型、动态模型和功能模型各自呈现对系统的观点,彼此间又相互关联。 2、对象模型提供动态及功能模型运算操作所需的数据结构; 3、动态模型描述对象的控制结构; 4、功能模型描述那些被对象模型的“运算”及动态模型的“操作”所调用的功能。(五)OMT系统分析方法 1、分析的过程,并不—定是循序渐进的。尤其是复杂的系统,通常要经过许多次反复的分析,才能建立完整的模型; 2、对象模型显示出系统静态的数据结构,在建立对象模型时,须从该系统的问题描述及它所牵涉的领域范围来考虑; 3、动态模型显示系统受时间影响所产生的动态行为。开始分析动态模型时必须找出事件,然后将影响每个对象的事件串行起来,用状态图表示出来; 4、功能模型显示系统内数据转换的情形,功能模型是绘制多个数据流程图的集合; 5、系统分析的工作并不是简单地一次就能完成,通常要经过许多次反复的修正才能完成。在完成分析工作之后,必须再与用户做核对,以确保分析的结果与系统的问题描述相符合,否则修正的工作必须重复进行,直到两者符合为止。 6、分析的过程,并不—定是循序渐进的。尤其是复杂的系统,通常要经过许多次反复的分析,才能建立完整的模型。 (六)BOOCH面向对象开发模型 1、逻辑模型:描述关键抽象与机制的意义,以定义系统结构成问题描述 2、实体模型:从软硬件的角度来描述系统的概观或设置 3、静态模型:描述对象类的属性、关系的静态方面 4、动态模型:表现对象类间的互动关系

4面向对象方法学

第 1 页 第四讲 面向对象方法学 生命周期方法学回顾 1、 生命周期方法学的特点 生命周期方法学是一种传统的软件工程方法学,其主要特点是: 严格的分阶段计划 以时间分解为基础来控制和管理整个软件开发过程的,将软件开发过程划分为许多首尾相接、相互独立的阶段。 “瀑布式”开发模式 软件开发阶段在时间上严格地实施顺序,不能反复。每个阶段完成后才进行下一个阶段的工作,并且前一个阶段的成果作为下一个阶段工作开始的依据。 严格的技术审查和管理复审 在软件开发的每一个阶段结束后,进行严格的技术审查和管理复审,排除所有潜在的错误,保证瀑布模型的实施,并从成本和进度上管理和控制软件开发。 结构化技术 结构化技术内涵为“自上而下,逐步求精”,生命周期方法学在各个阶段采用结构化技术,包括结构化分析、结构化设计、结构化程序设计等。 从以上特点可以看出,生命周期方法学是以软件功能为基础来进行软件开发的,面向的软件实体由一段段可执行的程序代码组成,并以模块作为基本的软件结构体,可以由程序代码的运行来实现所需的软件功能,满足用户的需求。 也正是由于生命周期方法学的以上特点,使得它在软件工程实践中也暴露出 了许多问题: 对功能需求分析的依赖 生命周期方法学的软件开发成果对于功能需求分析有很强的依赖性,要求需求分析阶段的结果一定要全面、准确、清晰,不能有任何错误或模糊的东西。而一旦对需求分析中确定的需求进行了任何改变,都会直接影响到整个软件的设计和实现,对软件进行的修改要付出很大的代价。 但是在实际操作过程中,一方面用户很难一次性地写出既完善又正确无误的功能要求,另一方面所确定的功能要求,又有可能随着时间的变化或者用户对系统理解的逐步深入发生变化。这种软件功能需求的变化在实际软件项目的开发过程中是不可避免和屡见不鲜的,但它对生命周期方法学来说又是灾难性的,这使 得生命周期方法学在软件开发实践中往往处于被动的地位。 软件重用性差 如果某个软件开发中的成果不能够保存下来,并且在其它软件的开发过程中得到应用,那么对于软件开发的生产力来说,就是一种极大的浪费。使软件开发中产生的成果能够被别的软件项目所利用,称为软件的重用性。 在生命周期方法学中,对软件进行模块划分,是致力于提高软件重用性的一种努力。软件模块具有相对独立的功能,能够完成对信息的某一种处理,因此理论上可以被别的用到相同功能的软件所使用。但各种不同的软件系统中,完全相同的功能是很难见到的,总会因为数据类型、处理细节、允许范围等等原因存在

相关主题