目前,软件行业还在使用的软件开发核心思想包括面向过程和面向对象,今天我们来研究一下融合俩种思想的强大语言——C++。
C++作为一种融合俩种软件开发思想的混合型语言,那么肯定存在一个由面向过程过渡到面向对象的过程经历,同时我们也简单对俩种思想做一个比较。
一 从结构体到类
1 结构的演化 (1)C语言和C++结构体的区别: 1)定义形式: C语言:struct 结构名 { 类型 变量名 } 2)结构体成员不同:C语言的结构体不可以定义函数,C++的结构对象可以定义函数,称之为成员函数。 3)使用原理不同: (2)C++结构体特点 1)函数与数据共存:struct 结构名 { 数据成员 //可以像C语言中结构体变量使用数据成员那样,通过C++结构对象使用成员函数:结构对象.成员函数 成员函数 }; 2)封装性:私有的数据成员,必须通过公有的成员函数才能使用。 (3)构造函数初始化对象。 构造函数名 对象名 (初始化参数); 2 结构体到简单类 (1) 使用关键字class代替struct,就是一个标准的类; (2) 同时成员变量中加入了成员函数。 二 面向对象 1 基础知识点 (1) C++描述对象的三要素:对象名、属性和操作。 (2) 属性:描述对象静态特征的一个数据项; (3) 操作:描述对象动态特征的函数序列(使用函数实现操作),也称为方法或服务。 2 三大特点(封装、继承、多态) (1)封装: 把对象的属性和操作集合成一个独立的系统单元,并尽可能隐蔽对象的内部细节。 对象内部数据结构的不可访问性称之为信息(数据)隐藏。 好处:使得程序员在设计程序时可以专注于自己的对象;切断了不同模块之间数据的非法使用,减少了出错的可能性。 在类中,封装是通过存取权限实现的。 (2)继承:一个类获得另外一个类的特性。低层的类只须定义它自己的特征,而共享高层的类中的特征。 (3)多态性:不同的对象可以调用相同名称的函数,实现完全不同的行为。 3 类和对象的使用 (1)string类:描述字符串特性 1)使用之前包含头文件:#include <string> 2)俩种string类对象初始化方式:string str1 ("We are here! "); str2 = " where are you?"; (2)complex对象:定义复数对象。 1)使用之前包含头文件:#include <complex> 2)定义使用:complex <数据类型> 对象名 (实部值,虚部值); 3)复数类需要俩个初始值:实部和虚部,借助构造函数初始化语法来实现多值处理。 4)complex是一个模板类,可以定义多种数据类型的复数。 (3)模板类和类的区别:类是抽象出一类物质的共同特征;模板则是归纳出不同类型事物的共同操作。 三 面向过程和面向对象: 1 面向过程: (1)概念:不必了解计算机的内部逻辑,而把精力主要集中在对如何求解问题的算法逻辑和过程的描述上,通过编写程序把解决问题到步骤告诉计算机。 (2)特点:按部就班地解决,而且条理清晰易懂。 程序设计特点就是函数设计,函数是模块的基本单位,是处理问题的一种抽象。 结构化程序设计使用的是功能抽象。 2 面向对象: (1)特点:面向对象程序设计不仅能进行功能抽象,而且能进行数据抽象。“对象”实际上是功能抽象和数据抽象的统一。 面向对象的程序设计方法不是以函数过程和数据结构为中心,而是以对象代表求解问题的中心环节。C++是介于C语言和C#俩种语言之间的混合型语言,C++其实可以解决很多单种思想类型语言解决不了的问题,例如C语言的驱动程序开发,以及java的多重继承等。C++保留了C语言的指针,但也引入了C#的类和对象,所以它是很强大。