面向对象编程
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;
}