面向对象与面向过程:
面向过程是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。
面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。
这里引用知乎中对这两者的解释:
如何大象装进冰箱?
面向过程:为了把大象装进冰箱,需要3个过程。
1) 把冰箱门打开(得到打开门的冰箱)
2) 把大象装进去(打开门后,得到里面装着大象的冰箱)
3) 把冰箱门关上(打开门、装好大象后,获得关好门的冰箱)
每个过程有一个阶段性的目标,依次完成这些过程,就能把大象装进冰箱。
面向对象:为了把大象装进冰箱,需要做三个动作(或者叫行为)。每个动作有一个执行者,它就是对象。
1) 冰箱,你给我把门打开
2) 冰箱,你给我把大象装进去(或者说,大象,你给我钻到冰箱里去)
3) 冰箱,你给我把门关上依次做这些动作,就能把大象装进冰箱。
封装的概念
理解了面向对象概念后,我们知道在我们进行一个有目的的操作时,肯定会有一些对于用户有效或是说用户需要的工作,也会有一些不希望暴露给用户的操作(例如变量和某些函数)封装即为隐藏对象的属性和实现细节,仅对外公开接口和对象进行交互,将数据和操作数据的方法进行有机结合。
1、封装
c++c是通过类来实现封装的,把这些数据和数据有关的操作封装在一个类中,或者说类的作用就是把数据和算法封装在用户声明的抽象数据类型中。
2、限定符
public:公共的
private:私有的
protected:受保护的
3、封装实例
#include<iostream>
#include <stdlib.h>
#include <string>
using namespace std;
class Student //声明一个类
{
public:
void setName(string _name)//设置名字
{
m_strName=_name;
}
string getName()//得到名字
{
return m_strName;
}
void setGender(string _gender)//设置性别
{
m_strGender=_gender;
}
string getGender()//得到性别
{
return m_strGender;
}
int getScore()//得到分数,属于只读
{
return m_iScore;
}
void initScore()//初始化分数
{
m_iScore=0;
}
void study(int _score)//通过学习获得分数
{
m_iScore+=_score;
}
private:
string m_strName;//姓名
string m_strGender;//性别
int m_iScore;//分数
};
int main()
{
Student stu;
stu.initScore();
stu.setName("zhangshan");
stu.setGender("男");
stu.study(4);
stu.study(6);
cout<<stu.getName()<<""<<stu.getGender()<<""<<stu.getScore()<<endl;
system("pause");
return 0;
}