面向过程
1. 知识点介绍
C语言编程是典型的面向过程编程,它遵循”从上往下”的程序设计思路:
- 提出问题,分析问题的处理流程
- 将大问题分解成小问题,复杂问题继续分解为更小的问题
- 解决一个个小问题来最终解决大问题
- 这种从问题出发,一步一步解决问题的开发思路称为面向过程的设计思想
面向过程编程专注于解决问题中的各个过程,符合人们习惯的解决问题方法(做好这一步,再做下一步,直到完成所有步骤)。
2. 用面向过程的方式解决问题的思路
程序结构简单,仅由三种基本结构组成:
- 顺序结构:按照语句顺序依次执行
- 选择结构:根据条件判断执行不同分支
- 循环结构:重复执行某段代码直到条件满足
这三种基本结构可以解决任何问题,因此面向过程编程更注重逻辑学习,而非记忆大量语法。
3. 优缺点
优点
- 把大问题分解为小问题解决,使问题简单化
- 自上往下,一步一步完善,先从整体角度看待问题
- 对整个程序的逻辑结构清晰明了
- 适合解决小型项目和简单逻辑
缺点
- 数据和操作往往分离,数据结构改变时需重写操作函数
- 数据封装性差,变量容易被篡改
- 多人协作开发时易出现标识符重名等问题
- 大型项目和复杂系统开发中难以维护和扩展
面向对象
1. 知识点介绍
面向对象的程序设计是面向过程的继承和发展,是对现实世界的抽象和描述。
核心思想:现实世界是由对象组成的,无论大小。万物皆对象。
对象在程序中抽象为两个部分:
- 描述对象的状态或者属性的数据(变量)
- 描述对象的行为或者功能的方法(函数)
2. 用面向对象的方式解决问题的思路
选择实体
根据问题的需要,选择问题所对应现实世界中的实体
提取属性和功能
从实体中找到解决问题的相关属性和功能,形成概念中的类
定义类
用计算机语言描述概念中的类,实现该类的定义
创建对象解决问题
通过该类创建对象来解决实际问题
3. 面向对象的特点
面向对象编程具有三大核心特性:
- 封装:将属性(数据)私有化,提供公有的方法(行为)访问私有属性,提高程序的维护性。
- 继承:在原有对象基础上快速产生新对象,新对象保留原有对象特性,实现代码复用。
- 多态:同一个接口,使用不同的实例执行不同的操作,是面向对象思想的核心。
面向对象编程的优势:
- 将数据和行为结合在一起,共同表达一个实体
- 问题被分解为一个个对象,修改或扩展某对象不会影响其他对象
- 代码维护方便、可扩展性好、支持代码重用
4. 高内聚低耦合
利用面向对象思想的封装、继承和多态,可以设计出”高内聚、低耦合”的程序结构,使程序更加灵活、更容易扩展。
高内聚:一个软件模块由相关性很强的代码组成,只负责某单一任务,即”单一责任原则”。
低耦合:模块与模块之间尽可能保持相互独立,接口尽可能少而简单,减少相互依赖。
注意:面向对象并非完全取代面向过程,在面向对象中设计类和组织逻辑时仍然会用到面向过程的方式。
类和对象
1. 知识点介绍
类是什么?
类是一种用户自定义数据类型,可以看作是C语言中结构体的升级版。类由数据和功能构成,即将变量和函数绑定在一起。
对象是什么?
通过类这种类型定义出来的变量称之为对象。
程序员从面向过程的执行者转换成了面向对象的指挥者。
2. 类的定义
类的基本定义格式如下:
{
private:
int id;
char name[20];
public:
void fun()
{
cout<<"这个是类中的函数"<
3. 对象的定义
通过类创建对象的方式:
CStudent stu;
4. 对象成员的访问
访问对象成员有两种方式:
1. 通过 “.” 访问
2. 通过 “->” 访问(指针方式)
pStu->fun();
不论是类中的变量或者函数都可以用以上两种方式访问。
5. 类成员的访问属性
访问属性修饰关键字
- public 公有属性:类外和类中都可以被直接访问,类外通过对象访问
- protected 保护属性:类中及派生类中可以被直接访问,类外需要通过接口
- private 私有属性:只有在类中才能被访问,类外需要通过接口访问
属性说明
- 类中如果有成员没有被访问属性修饰,默认是私有属性
- 访问属性的修饰范围:从当前关键字开始到下一个关键字或类结束
- 访问属性关键字可以在类中任意位置出现任意次数(不能写在函数里面)
- 类外访问私有或保护成员,需要通过类中提供的公有接口
访问示例
stu.id; // 报错,不可以访问类中私有成员
stu.fun(); // 正确,访问公有成员函数
6. 结构体和类的区别
- 在C++中,结构体是默认公有属性的类,类是默认私有属性的结构体
- 在C中,结构体里面只能定义变量,不能写函数;在C++中,结构体除了默认属性不同外,其他与类一样,可以定义函数和使用访问属性