面向对象编程
课程目标
- 面向对象编程
- 面向对象编程注意事项
面向过程
- 主函数
- 调用1
- 调用2
- 调用3
- 面向过程
面向过程程序设计思路
- 提出问题
- 分析问题的处理流程
- 将大问题分解为小问题
- 如果小问题比较复杂,就继续划分小问题为更小的问题
- 然后通过小模块——解决小问题
- 最后再根据整个业务流程将这些小问题串在一起(调用函数)
面向对象
- 对象1
- 属性
- 行为
- 方法
- 对象2
- 属性
- 行为
- 面向对象
面向对象程序设计思路
面向对象会把事物抽象成对象的概念,先抽象出对象,然后给对象赋一些属性和方法,然后让每个对象去执行自己的方法。
面向过程的优缺点
优点:
流程化使得编程任务明确,在开发之前基本考虑了实现方式和最终结果,具体步骤清楚,便于节点分析。
效率高,面向过程强调代码的短小精悍,善于结合数据结构来开发高效率的程序。
缺点:
耦合度高,扩展性差,后期维护难度比较大。
面向对象的优缺点
优点:
结构清晰,程序是模块化和结构化,更加符合人类的思维方式;
易扩展,代码重用率高,可继承,可覆盖,可以设计出低耦合的系统;
易维护,系统低耦合的特点有利于减少程序的后期维护工作量。
缺点:
开销大,程序显得臃肿。
性能低,因为创建对象和销毁对象都需要损耗一定的性能。
面向对象三大特征
- 封装
- 继承
- 多态
对象
万物皆对象。任何事物都可以看做对象。
描述对象
类似于结构体变量,通过对象的属性(名词,数量词,形容词...)和行为(动词)来描述对象。
任何对象都属于一个类型。
有物体,东西的意思,现实世界中,一切都是对象(是一个具体存在的实体)。
任何对象都有属性和行为。
类
类是将多个对象的共性提取出来定义的新的数据类型,是对对象属性和行为的抽象描述。类似于结构体类型。
类和对象的关系是抽象和实例化的关系。
类的定义
class 类名
{
访问控制属性:
//行为:用成员函数表示
返回类型 函数名(形参表); //成员函数
//属性:用成员变量表示
数据类型 变量名; //成员变量
};访问控制属性
- public: 公有成员, 类的内部和外部都可以访问的成员
- protected: 表示该下面的数据成员、成员函数受保护权限,在类内可以访问,类外只有子类可以访问
- private: 私有成员, 只有在类的内部才可以访问的成员
使用 class 定义的类默认的访问控制属性是 private。
类的大小
在类中,只有成员变量占用内存空间,而成员函数是不占用内存空间的。
类占用的内存空间永远是所有成员中占用内存最大成员的倍数(对齐问题)。
空类的大小为1。
类的实例化
用类似对象的过程叫做实例化。与结构体变量定义相似。
类内成员访问
与结构体变量访问结构体成员一样通过 . 来访问。
this指针
定义:
类的内部都隐藏一个该类类型的指针参数,名为 this,可以帮助我们区分类内成员和其他参数。
面向对象编程的注意事项
要确定所设计的类,那些属性和行为是对外公开的,哪些是隐藏的。
要符合高内聚,低耦合的设计思想。
在定义类的时候,所有的
class都可以被替换为struct,代码不会出错。在写类的时候,一般一个标准的类都分为两个文件(
.h/.cpp):- 在头文件中声明类型和函数
- 在源文件中实现函数
只读成员函数(常函数):
- 表示这个成员函数是只读成员函数,只能读取成员变量的值,保证不修改成员变量的值。
- 成员函数的常版本与非常版本可构成有效重载,常对象调用常版本,非常对象调用非常版本。
