[知识点] 1.3 C++ 与面向对象程序设计

总目录 > 1  语言基础 > 1.3  C++ 与面向对象程序设计

前言

用 C 语言铺垫了之后,从这篇开始,专门介绍 C++ 的概念,基础,特性与进阶内容。

对于 C++ 语言本身的许多基础知识以及高级教程,这里推荐一个很经典的教程网站:https://www.runoob.com/cplusplus/cpp-tutorial.html,非常详细。

子目录列表

1、面向过程与面向对象

2、面向对象语言特征

3、C++ 的特点

4、C++ 基本结构

1.3  C++ 与面向对象程序设计

1、面向过程与面向对象

① 面向过程

20世纪60年代,软件危机,结构化程序设计(Structure Programming, SP)思想腾空而出,采用自顶而下、逐步求精、模块化的方法进行程序设计。其基本特点是:按层次组织模块;每个模块只有一个入口和出口;代码数据分离,即 “程序 = 数据结构 + 算法”

SP 是一种以功能为中心的面向过程程序设计方法。首先将要解决的问题分解成若干功能模块,再根据模块设计一系列用于存储数据的数据结构,再编写函数对数据进行操作,最终组成程序。这样的程序设计方法问题在于,对于不同格式的数据做相同的处理,或者对相同格式的数据做不同的处理,都需要编写不同的程序,代码太多冗余。

② 面向对象

随着时代的变迁,面向过程程序设计不再能满足软件开发在效率、代码共享和更新维护等方面的需求了,面向对象程序设计技术应运而生。

面向对象语言的基本观点是,计算机求解的都是现实世界中的问题,它们由一些相互联系且处于不断运动变化的事物组成,如果能将它们的状态和之间的关系完全一一映射到计算机中,方能更好解决问题。

对于任何一个客观事物,用数据表示它的特征,用函数描述它的行为,两者结合成一个整体,称为对象。数据全称为数据成员,函数全称为成员函数。任何对象的数据成员通常只能通过自身成员函数修改。

2、面向对象语言特征

现在的主流计算机语言,诸如 C++, Java, Python, C# 等等,均为面向对象语言。

面向对象语言有四大特征: 

① 抽象

将事物的主要特征抽取出来,并用其描绘客观事物。抽象的结果是形成对应客观事物的抽象数据类型(Abstruct Data Type, ADT)。抽象只是给出功能描述,设计出各项功能及方法,相当于提供使用该数据类型的接口。

② 封装

包装并实现抽象出来的数据类型,使之成为可用于程序设计的抽象数据类型的过程。将抽象出的特征(对应数据)行为(对应函数)捆绑成一个整体,并编码实现抽象所设计的接口功能。被封装的 ADT 由接口和实现两部分组成。接口描述显示给用户的外部视图,实现细节被封装隐藏。

C++ 中用 class 实现封装,封装后的 ADT 称为

③ 继承

继承源自自然界。允许一个类从另一个类继承(或派生)而来,能实现被继承类的所有属性与行为,并且能修改或增加新的属性和行为,称为一个功能更强大、更满足需求的类。新的类称为子类,原有类称为基类

④ 多态

多态的意思是 “一个接口,多种形态”,不同对象针对同一种操作能表现出不同行为。

3、C++ 的特点

C 语言是面向过程的语言,C++ 是面向对象的语言。从本质而言,C++ 有质的飞跃,但以此同时,保留了 C 语言所有的功能,所以,C 是 C++ 的子集

面向过程的 C 语言,其首要考虑如果通过一个过程,对输入进行运算处理而得到输出。

面向对象的 C++ 语言,其首要考虑如果构造一个对象模型,让这个模型契合对应的问题域,通过获取对象的状态信息得到输出。

C++ 从思想层面比 C 要更为先进,但实际编写起来并无差异。在功能上,C++ 继承 C 的所有特性,并有所加强,同时引入诸如重载,内联,异常处理与面向对象设计的内容(类,继承,虚函数,模板,容器等)

4、C++ 基本结构

在 1.1  C 语言基础 中,介绍了 C 语言的基本结构,C++ 语言大同小异。

#include <iostream>
using namespace std;
 
int main() {
    cout << "Hello, world!"; // output 'Hello, world!'
    return 0;
} 

L1 中的 <iostream> 是 C++ 独有的头文件。在 C 语言中,所有头文件格式均为 .h 结尾,但 C++ 的新标准中允许没有 .h 扩展名。同时,C 语言中的许多头文件,诸如 string.h, stdio.h, math.h,在 C++ 标准中被修订为 cstring, cstdio, cmath。C++ 中,两套标准均被允许调用。

L2 的 “using namespace std” 是 C++ 独有的命名空间声明。关于命名空间的介绍,请参见 1.4.4  命名空间与作用域

L4 中的 cout 是 C++ 独有的流输出函数,包含于 <iostream> 头文件中。更多关于流输入输出的内容,请参见 1.4.1  流输入输出

其他部分一致。

原文地址:https://www.cnblogs.com/jinkun113/p/13598805.html