浅谈面向对象程序设计方法
浅谈面向对象程序设计方法
1 面向过程和面向对象的技术对比
1.1 面向过程
在面向对象程序设计方法出现之前,开发程序时采用面向过程的方法。面向过程的程序设计注重高质量的数据结构,注重算法的描述,回答的是“做什么、怎么做”的问题。基本过程是:采用结构化思想,自顶而下,按功能把一个复杂的系统分解成许多内聚性强、耦合较少的功能模块,最后用代码组合模块,从而实现系统的功能。例如要编写一个求解矩形面积和周长的程序,采用面向过程的设计方法的一般设计步骤为:①将任务分解为求解矩形面积和求解矩形周长两个子任务。②编写求解矩形面积和矩形周长的函数。③在主程序中调用求解矩形面积和矩形周长的函数,完成程序功能。
这种设计方法使得数据和运算相分离,程序被描述为:程序=模块+模块+…,模块=算法+数据结构。
1.2 面向对象
面向对象的基本思想是把程序看作是相互协作的对象集合,它是一种以对象为基础,以事件或消息来驱动对象执行处理的程序设计技术。侧重于描述系统结构,注重需求分析和设计反复,回答的是“用何做、为何做”的问题。采用面向对象的设计方法求解矩形面积和周长的设计步骤为:
1.2.1 通过分析确定系统的核心对象为矩形。
1.2.2 编写描述矩形对象的类,包括描述矩形长、宽等属性和求解矩形面积和周长的方法。
1.2.3 在主程序中,创建一个指定长和宽值的矩形对象,发送求解矩形面积和周长的消息给矩形对象,对象对消息作出反应,计算并返回面积和周长值,完成程序功能。在此,程序被描述为:程序=对象+对象+…,对象=数据结构+算法。它以数据为中心而不是以功能为中心来描述系统,数据相对于功能而言具有更强的稳定性。
2 面向对象程序设计方法的分析
2.1 面向对象程序设计的基本概念
对象:是面向对象程序设计的核心,是现实世界中各种实体的抽象表示,它是数据和代码的组合,有自己的状态和行为。具体的说,对象的状态用数据来表示,称为对象的属性,而对象的行为用代码来实现,称为对象的方法,其中还包括和其他对象进行通信的设施对象。
类:定义了具有相同数据类型和相同操作的一组对象的类型,它是对具有相同属性和行为的一组相似对象的抽象。一个类实质上定义的是一种对象类型,它描述了属于该类型的所有对象的性质。对象在执行过程中由其所属的类动态生成,一个类可以生成不同的对象。在面向对象的程序设计中,对象是构成程序的基本单位,每个对象都属于某一个类。所以,一个对象又称作类的一个实例。
2.2 面向对象设计中的主要特征
封装性:封装的目的在于将对象的使用者和设计者分开,其实质是将对象的数据和操作包装在一起,从而使对象具有包含和隐藏信息的能力。一个对象好像是一个不透明的黑盒子,表示对象状态的数据(对象的属性)和实现各个操作的代码(对象的方法)都被封装在黑盒子里面,对外界完全封闭。它与外界的联系是通过方法来实现的,方法就是对象的对外接口。同时,外面的对象也不需要关心方法如何进行处理,只要知道调用方法需要什么参数,以及方法能够返回什么样的结果就可以了。
继承性:继承是一种联结类与类的层次模型,它提供了一种明确表述共性的方法,允许和鼓励类的重用。继承是指基于现有的类(称为父类或基类)创建新类(称为子类或派生类)的机制。子类继承基类的某些属性、方法、事件,并可以附加新的属性和方法,以进行优化。继承大大提高了代码的可重用性,有效的简化了程序设计的难度和工作量。
多态性:是指类为方法提供不同的实现方式,但可以用相同的名称调用的功能。它有两个方面的含义,一种是将同一个消息发送给同一个对象,但由于消息的参数不同,对象也表现出不同的行为(通过重载实现),另一种是将同一个消息发送给不同的对象,各对象表现出的行为各不相同(通过重写实现)。
2.3 面向对象程序设计的建模
建模是面向对象程序设计的一个关键的技术。所谓模型,就是为了理解事物而对事物作出的一种抽象,是对事物的一种无歧义的书面描述。建模可帮助我们思考问题、减少复杂性。用面向对象方法开发软件,通常需要建立三种形式的模型,分别是描述系统数据结构的对象模型,描述系统控制结构的动态模型和描述系统功能的功能模型。1995年UML的出现,使得如何进行面向对象的分析、设计逐渐形成共识,并提供了统一的符号来描述这些活动。只有掌握UML,将建模思想应用到程序设计中,才能真正体验面向对象编程的思想。
2.4 面向对象的程序设计方法的步骤
面向对象程序设计的方式是建立在结构化程序设计的基础上,采用面向对象、事件驱动的编程机制,以类作为构造程序的基本单位,围绕着对象的继承性、多态性和封装性等特征开发设计程序。具体步骤为:①选择主要数据对象;②定义每个对象能够接收和发送的消息;③说明为实现每个对象所必须的数据元素;④用小说明书说明每个对象的方法;⑤最终优化整个设计。
3 面向对象程序设计的优点及存在的问题
3.1 面向对象程序设计同面向过程程序设计相比,有着许多优点
3.1.1 符合人们习惯的思维方法,便于分解大型的复杂多变的问题。由于对象对应于现实世界中的实体,因而可以很自然地按照现实世界中处理实体的方法来处理对象,软件开发者可以很方便地与问题提出者进行沟通和交流。
3.1.2 维护简单。采用面向对象思想设计的结构,可读性高。由于继承的存在,即使改变需求,维护也只是在局部模块,所以维护起来是非常方便且成本较低。
3.1.3 可重用性好。由于功能被封装在类中,并且类作为独立的实体而存在,所以提供一个类库就非常简单了。事实上,使用任何编程语言的程序员都可以使用类库,类库提供了很多的功能。更令人高兴的是,我们可以通过提供符合需求的类来扩充这些功能。
3.2 主要有以下方面的问题
3.2.1 面向对象程序设计方法所涉及的概念都很抽象,而且对概念的描述也不够成熟,许多基本概念还没有统一权威的标准定义,可供用户使用的类也是种类繁多、结构复杂,而代码编程部分又需要许多传统程序设计的思想,对初学者来说直接学习面向对象程序设计有一定的困难。
3.2.2 类库的可靠性问题。虽然类库中提供的类都是经过精心设计、测试过的, 但如此庞大的系统谁也无法保证类库中的每个类在各种环境中百分之百的正确, 如果应用程序中使用了类库中某个存在问题的类,当经过几层继承后错误才显现出来,这时程序员对此将束手无策,有可能要推翻原来的全部工作。
从面向过程到面向对象,程序开发理念发生了质的变化。面向对象程序设计能更自然、更容易地表现现实世界,为解决软件产品扩展和质量保证中的许多问题提供了技术支持,极大地提高了软件开发的效率。随着技术的不断完善,相信在不久的将来,它必将被应用到更广阔的领域。
1.1 面向过程
在面向对象程序设计方法出现之前,开发程序时采用面向过程的方法。面向过程的程序设计注重高质量的数据结构,注重算法的描述,回答的是“做什么、怎么做”的问题。基本过程是:采用结构化思想,自顶而下,按功能把一个复杂的系统分解成许多内聚性强、耦合较少的功能模块,最后用代码组合模块,从而实现系统的功能。例如要编写一个求解矩形面积和周长的程序,采用面向过程的设计方法的一般设计步骤为:①将任务分解为求解矩形面积和求解矩形周长两个子任务。②编写求解矩形面积和矩形周长的函数。③在主程序中调用求解矩形面积和矩形周长的函数,完成程序功能。
这种设计方法使得数据和运算相分离,程序被描述为:程序=模块+模块+…,模块=算法+数据结构。
1.2 面向对象
面向对象的基本思想是把程序看作是相互协作的对象集合,它是一种以对象为基础,以事件或消息来驱动对象执行处理的程序设计技术。侧重于描述系统结构,注重需求分析和设计反复,回答的是“用何做、为何做”的问题。采用面向对象的设计方法求解矩形面积和周长的设计步骤为:
1.2.1 通过分析确定系统的核心对象为矩形。
1.2.2 编写描述矩形对象的类,包括描述矩形长、宽等属性和求解矩形面积和周长的方法。
1.2.3 在主程序中,创建一个指定长和宽值的矩形对象,发送求解矩形面积和周长的消息给矩形对象,对象对消息作出反应,计算并返回面积和周长值,完成程序功能。在此,程序被描述为:程序=对象+对象+…,对象=数据结构+算法。它以数据为中心而不是以功能为中心来描述系统,数据相对于功能而言具有更强的稳定性。
2 面向对象程序设计方法的分析
2.1 面向对象程序设计的基本概念
对象:是面向对象程序设计的核心,是现实世界中各种实体的抽象表示,它是数据和代码的组合,有自己的状态和行为。具体的说,对象的状态用数据来表示,称为对象的属性,而对象的行为用代码来实现,称为对象的方法,其中还包括和其他对象进行通信的设施对象。
类:定义了具有相同数据类型和相同操作的一组对象的类型,它是对具有相同属性和行为的一组相似对象的抽象。一个类实质上定义的是一种对象类型,它描述了属于该类型的所有对象的性质。对象在执行过程中由其所属的类动态生成,一个类可以生成不同的对象。在面向对象的程序设计中,对象是构成程序的基本单位,每个对象都属于某一个类。所以,一个对象又称作类的一个实例。
2.2 面向对象设计中的主要特征
封装性:封装的目的在于将对象的使用者和设计者分开,其实质是将对象的数据和操作包装在一起,从而使对象具有包含和隐藏信息的能力。一个对象好像是一个不透明的黑盒子,表示对象状态的数据(对象的属性)和实现各个操作的代码(对象的方法)都被封装在黑盒子里面,对外界完全封闭。它与外界的联系是通过方法来实现的,方法就是对象的对外接口。同时,外面的对象也不需要关心方法如何进行处理,只要知道调用方法需要什么参数,以及方法能够返回什么样的结果就可以了。
继承性:继承是一种联结类与类的层次模型,它提供了一种明确表述共性的方法,允许和鼓励类的重用。继承是指基于现有的类(称为父类或基类)创建新类(称为子类或派生类)的机制。子类继承基类的某些属性、方法、事件,并可以附加新的属性和方法,以进行优化。继承大大提高了代码的可重用性,有效的简化了程序设计的难度和工作量。
多态性:是指类为方法提供不同的实现方式,但可以用相同的名称调用的功能。它有两个方面的含义,一种是将同一个消息发送给同一个对象,但由于消息的参数不同,对象也表现出不同的行为(通过重载实现),另一种是将同一个消息发送给不同的对象,各对象表现出的行为各不相同(通过重写实现)。
2.3 面向对象程序设计的建模
建模是面向对象程序设计的一个关键的技术。所谓模型,就是为了理解事物而对事物作出的一种抽象,是对事物的一种无歧义的书面描述。建模可帮助我们思考问题、减少复杂性。用面向对象方法开发软件,通常需要建立三种形式的模型,分别是描述系统数据结构的对象模型,描述系统控制结构的动态模型和描述系统功能的功能模型。1995年UML的出现,使得如何进行面向对象的分析、设计逐渐形成共识,并提供了统一的符号来描述这些活动。只有掌握UML,将建模思想应用到程序设计中,才能真正体验面向对象编程的思想。
2.4 面向对象的程序设计方法的步骤
面向对象程序设计的方式是建立在结构化程序设计的基础上,采用面向对象、事件驱动的编程机制,以类作为构造程序的基本单位,围绕着对象的继承性、多态性和封装性等特征开发设计程序。具体步骤为:①选择主要数据对象;②定义每个对象能够接收和发送的消息;③说明为实现每个对象所必须的数据元素;④用小说明书说明每个对象的方法;⑤最终优化整个设计。
3 面向对象程序设计的优点及存在的问题
3.1 面向对象程序设计同面向过程程序设计相比,有着许多优点
3.1.1 符合人们习惯的思维方法,便于分解大型的复杂多变的问题。由于对象对应于现实世界中的实体,因而可以很自然地按照现实世界中处理实体的方法来处理对象,软件开发者可以很方便地与问题提出者进行沟通和交流。
3.1.2 维护简单。采用面向对象思想设计的结构,可读性高。由于继承的存在,即使改变需求,维护也只是在局部模块,所以维护起来是非常方便且成本较低。
3.1.3 可重用性好。由于功能被封装在类中,并且类作为独立的实体而存在,所以提供一个类库就非常简单了。事实上,使用任何编程语言的程序员都可以使用类库,类库提供了很多的功能。更令人高兴的是,我们可以通过提供符合需求的类来扩充这些功能。
3.2 主要有以下方面的问题
3.2.1 面向对象程序设计方法所涉及的概念都很抽象,而且对概念的描述也不够成熟,许多基本概念还没有统一权威的标准定义,可供用户使用的类也是种类繁多、结构复杂,而代码编程部分又需要许多传统程序设计的思想,对初学者来说直接学习面向对象程序设计有一定的困难。
3.2.2 类库的可靠性问题。虽然类库中提供的类都是经过精心设计、测试过的, 但如此庞大的系统谁也无法保证类库中的每个类在各种环境中百分之百的正确, 如果应用程序中使用了类库中某个存在问题的类,当经过几层继承后错误才显现出来,这时程序员对此将束手无策,有可能要推翻原来的全部工作。
从面向过程到面向对象,程序开发理念发生了质的变化。面向对象程序设计能更自然、更容易地表现现实世界,为解决软件产品扩展和质量保证中的许多问题提供了技术支持,极大地提高了软件开发的效率。随着技术的不断完善,相信在不久的将来,它必将被应用到更广阔的领域。
yan123321- 帖子数 : 4
注册日期 : 14-05-14
您在这个论坛的权限:
您不能在这个论坛回复主题