面向对象编程

C++并不是一种纯粹的面向对象的语言,它是在C的基础上发展而成的,因此保留了C 的大部分功能和运行机制,自然也保留了C语言面向过程的语言特性。因此是一种基于过程和面向对象的混合型语言。

在基于过程的程序中,函数是构成程序的基本部分,程序面对的是一个个函数。每个函数独立存在,除主函数能被操作系统调用外,其他函输只能相互调用。而在面向对象的程序中,除主函数外,其他函数都出现在中,只有通过类才能调用类中的函数,程序的基本构成单位是类,程序面对的是一个个类和对象。
面向对象程序设计的4个特征:抽象,封装,继承和多态。

单个对象

对象具有两个要素:属性和行为。其中属性是类的静态特征,在C++语言中称为数据;而行为是类的动态特征,在C++语言中称为函数。函数用来对数据进行操作的,一实现某些功能。例如:

以一个班级作为对象的话,班级的属性包括班级所属系和专业、学生人数、所在教室等静态特性,班级的行为包括学习、开会、体育比赛等动态特性。如果想从外部控制班级中学生的活动,可以从外界向班级发一个信息,如听到广播就去上早操,打铃就下课等,这种信息称消息

多个对象

一个系统中的多个对象之间通过发送和接受消息互相联系,要使某一个对象实现某一种行为,应该向它传送相应的消息。例如:

让录音机开始录音,必须由人去按键,或者用遥控器发送一个电信号。

封装与信息隐蔽

将一个对象的一部分属性和功能对外界屏蔽,即从外界是看不到甚至不可知的,这就是对象的封装。例如:

电视机里的电路板和机械控制部件,从外面是看不到的。在电视机的外面有一些按键,这就是电视机与外界的接口.人们不必了解电视机内部结构和工作原理,只需按下按键就能执行相应操作。

所谓“封装性”有两方面的含义,一是将有关数据和操作代码封装在一个对象中,形成一个基本单位,各对象间相互独立。二是将对象中的某些部分对外隐藏,即隐蔽内部细节,只留下少量接口,以便与外界联系,接收外界消息。信息隐蔽还有利于数据安全,防止无关的人了解和修改数据。

在C++中,函数名就是对外接口,外界通过函数名来调用函数实现某种功能。

抽象

抽象一词并不抽象,抽象的过程是将有关事物的共性归纳、集中的过程,它表示同一类事物的本质。
类是对象的抽象,而对象则是类的具体表现形式。例如:

10个不同尺寸的三角形是10个三角形对象,他们具有相同的属性和行为,因此可以将他们抽象为一种类型,称为三角形类。

继承与重用

在软件开发中,若已经建立了一个A类,又想建立一个B类,而A与B的内容基本相同,只是B在A的基础上增加了一些属性和行为,显然不必再从头设计一个新类,只需在A的基础上添加新的内容即可。这就是面向对象编程的继承机制。例如:

白马继承了的基本特征,又增加了新的颜色特征,则父类基类白马是从派生出来的,称为子类派生类。

面向对象的继承机制可以很方便地利用一个已有类建立一个新类,大大节省了编程工作量,缩短软件开发周期,这也就是所谓的软件重用思想。

多态性

有几个相似而又不完全相同的对象,有时需要向他们发送同一消息而期望各自具有不同的反应。这种情况就是多态现象。例如:

甲乙丙三个班都是高二年级,他们的属性和行为基本相似,在同时听到上课铃声时,他们会分别走进3个教室,而不是同一个教室。

在C++中,所谓多态就是:由继承而产生的不同的派生类,其对象对同一消息会做出不同的相应。多态能增加程序的灵活性。

面向过程与面向对象

面向过程 面向对象
围绕功能进行,用函数实现功能 围绕对象展开
数据和函数是公开的 数据和有关操作封装成一个对象
需考虑程序设计中每一个细节 只需考虑类和对象的设计以及对象间的消息传递
程序=算法+数据结构 对象=算法+数据结构 /程序=多个对象+消息

面向对象的软件开发过程

  1. 面向对象分析
  2. 面向对象设计
  3. 面向对象编程
  4. 面向对象测试
  5. 面向对象维护

你可能感兴趣的:(面向对象编程)