面向对象的语言
文章目录
一.结构化程序设计和面向对象方法的区别
1.结构化程序设计方法
- 软件的结构化分析、设计方法
- 工程化概念的方法
- 但无法很好地支持越来越复杂、庞大的系统需求
2. 面向对象方法
- 直接将问题的求解映射到问题本身上
- 将问题分解为一系列的实体(对象)
- 方便设计,可维护性、可扩充性好
二.面向对象方法的特性
- 程序由对象组成
- 对象之间通过相互协作来完成功能
- 大多数对象的定义以数据为中心
- 函数与相关的数据紧密结合
- 数据可以被隐藏
- 很容易扩充新的数据和函数
三.设计步骤
- 分析实际问题,分辨并抽取其中的实体(对象)
- 为对象设计类(新的类型),程序使用这些类创建各种对象
- 协调这些对象完成程序功能(消息)
四.类(抽象)和对象(具体)
类=属性(数据)+方法(函数)
1.万物皆对象
- 每个学生、每个班级、每个学校、每个国家、每棵树、每本书、 每部汽车——具体的实体
- “张三” 、 “李四”都是对象,但“人”不是
- “人”不是具体的实体,是类,是抽象概念
2.类是某些对象共同特征的表示
- 类是创建对象的模板,对象是类的实例
3.格式
- 定义:关键字 class <类名>
- 花括号的部分是类的体
- 定义以分号为结尾
//定义洗衣机类CWashingMachine
class CWashingMachine {
public:
CWashingMachine(int v = 1, int m = 1); //构造函数
void setVolume(int v); //设置进水量
void setMode(int m); //设置洗衣模式
void washing(); //洗衣
private:
int waterVolume; //进水量
int mode; //洗衣模式
};
4.内容说明
-
类中包含数据和函数
-
关键字public:公有成员
-
关键字private:私有成员
-
class 类名 { public: // 公有成员变量和函数(公共成员可以在类的内部和外部进行访问。这意味着,任何一个函数都可以访问公共成员,而不需要进行任何特殊的访问限制) private: // 私有成员变量和函数(私有成员只能在类的内部进行访问。这意味着,除了类本身以外,没有任何其他函数或类可以访问私有成员) protected: // 保护成员变量和函数(保护成员可以在类的内部和派生类中进行访问,但不能在类的外部进行访问。这意味着,只有在派生类中,才能访问保护成员,但在其他任何地方都无法访问) };
-
自定义类是一种新的自定义类型,可以声明变量、指针、 数组等
-
对象各自拥有自己的数据空间,互不干扰
CWashingMachine no1; //声明CWashingMachine类的对象no1
CWashingMachine wm[1000]; //声明CWashingMachine类的数组
CWashingMachine *wptr = &no1; //声明CWashingMachine类型的指针
CWashingMachine &ref = no1; //声明CWashingMachine类型的引用
五.消息
- 对象可以响应消息
- C++将“向对象发消息”处理成“调用对象的某个成员函数”
- 调用对象no1的成员函数washing的方法
no1.washing();
wptr->washing();
ref.washing();
六.设计特点
1.抽象和封装
- 抽象——提取和表现事物的核心特性,不描述背景细节
- 封装——把数据及与数据相关的操作组织在一个单独的程序单元(对象)中
2.数据隐藏和访问机制
- 对象对内部数据提供了不同级别的保护
- 外界程序不能直接访问对象的私有成员(包括私有成员函数和私 有数据成员)
- 外界程序只能通过公有成员函数和对象交互
- 有效地保护数据,提高程序的可维护性
3.继承
- 继承允许基于现有的类(基类)建立新类(派生类)
- 派生类继承基类的属性(数据)和行为(函数)
- 派生类可以修改(重定义)继承来的行为
- 派生类可以增加新的数据成员和成员函数
4.多态性
-
程序设计中很多类可以通过继承的关系构成树形结构
-
多态性使程序员可以通过统一的接口操作具有继承关系的这些类 的对象
-
对于同一条函数调用语句不同的对象会执行不同的操作
定义)继承来的行为
- 派生类可以增加新的数据成员和成员函数
4.多态性
-
程序设计中很多类可以通过继承的关系构成树形结构
-
多态性使程序员可以通过统一的接口操作具有继承关系的这些类 的对象
-
对于同一条函数调用语句不同的对象会执行不同的操作