面向对象编程
1.什么是对象
面向对象:描述在某个场景中,有些什么样的东西,这些东西之间的关系是怎么
面向过程:描述事件发生的流程是什么样的,按照时间顺序,会一步步发生什么样的事情
2.类在c++可以当作类型
类和对象的关系:类(class)定义了对象长什么样,对象(object)是一个那个类的东西
杯子定义了杯子都应该装水,每一个杯子都是一个杯子的具体实例
3.interface(接口):功能有交流和保护
4.将这类事物所能进行的行为也归纳出来,形成一个个函数,这些函数可以用来操作数据结构
(这一步叫做“抽象”)
5.通过某种语法形式,将数据结构和操作该数据结构的函数“捆绑”在一起,形成一个“类”,从而使得
数据结构和函数“捆绑”在一起,形成一个“类”,从而使得数据结构和操作该数据结构的算法呈现出
显而易见的的紧密联系,这就是“封装”
6.1 从客观事务中抽象出类
比如对于“矩形”这种东西,要用一个类来表示,该如何“抽象”呢?
矩形的属性就是长和宽。因此需要两个变量,分别代表长和宽
一个矩形,可以有哪些行为呢(或可以对矩形进行哪些操作)?
(1)矩形可以设置长和宽,算面积,和算周长这三种行为(当然也可以有其他行为)
(2)这三种行为,可以各用一个函数来实现,他们都需要用到长和宽这两个变量
6.2 将长,宽变量和设置长,宽,求面积,以及求周长的三个函数函数“封装”在一起,
就能形成一个“矩形类”
6.3 长,宽变量成为该“矩形类”的“成员变量”,三个函数成为该类的“成员函数”。成员变量和成员函数统称为类的成员
实际上,“类”看上去就像“带函数的结构”
#include <iostream> using namespace std; class crectangle { public: int w, h;//w和h是成员变量 crectangle(int w1, int h1)//该函数用来初始化,设置宽和高,所以该函数也是成员函数 { w = w1; h = h1; } int area()//下面是三个成员函数 { return w * h; } int perimeter() { return 2 * (w + h); } }; int main() { int w1, h1; cin >> w1 >> h1; crectangle r(w1,h1);//r是一个对象 cout << r.area() << endl << r.perimeter(); return 0; }