面向对象的理解
c++面向对象的理解
1.介绍
面向过程,就是步骤。
面向对象,很符合我们现在的社会方式,你面试程序员,也是前端程序员,后端程序员的应聘,不是面向某个具体的程序说步骤。
2.案例:
去饭店吃饭
2.1 面向过程的
#include <iostream> using namespace std; void main() { cout<<"引导入座"<<endl; cout<<"递菜单"<<endl; cout<<"点餐"<<endl; cout<<"告诉厨师菜谱"<<endl; cout<<"做菜"<<endl; cout<<"用餐"<<endl; cout<<"计算餐费"<<endl; cout<<"支付餐费"<<endl; cout<<"收取餐费"<<endl; }
再引申一下,形成函数调用。但这个不是面向对象
#include <iostream> using namespace std; void ydrz(){ cout<<"引导入座"<<endl; } void dcd(){ cout<<"递菜单"<<endl; } void dc(){ cout<<"点餐"<<endl; } void gscscd(){ cout<<"告诉厨师菜谱"<<endl; } void zc(){ cout<<"做菜"<<endl; } void yc(){ cout<<"用餐"<<endl; } void jscf(){ cout<<"计算餐费"<<endl; } void zfcf(){ cout<<"支付餐费"<<endl; } void sqcf(){ cout<<"收取餐费"<<endl; } void main() { ydrz();//引导入座函数 dcd();//递菜单函数 dc();//点餐函数" gscscd();//"告诉厨师菜谱"函数 zc();//"做菜"函数 yc();//"用餐"函数 jscf();//"计算餐费"函数 zfcf();//"支付餐费"函数 sqcf();//"收取餐费"函数 }
2.2 面向对象
#include <iostream> using namespace std; class Customer{ private: char name; char sex; char phoneNumber; public: Customer(){ } ~Customer(){ } void dc(){ cout<<"点餐"<<endl; } void yc(){ cout<<"用餐"<<endl; } void zfcf(){ cout<<"支付餐费"<<endl; } }; class Waiter { private: char name; char sex; char phoneNumber; public: void ydrz(){ cout<<"引导入座"<<endl; } void dcd(){ cout<<"递菜单"<<endl; } void gscscd(){ cout<<"告诉厨师菜谱"<<endl; } }; class Cook{ private: char name; char sex; char phoneNumber; public: void zc(){ cout<<"做菜"<<endl; } }; class Cashier { private: char name; char sex; char phoneNumber; public: void jscf(){ cout<<"计算餐费"<<endl; } void sqcf(){ cout<<"收取餐费"<<endl; } }; void main() { Customer zhangsan; Waiter xiaoming; Cook laowang; Cashier xiaohong; xiaoming.ydrz();//"引导入座"函数 xiaoming.dcd();//"递菜单"函数 zhangsan.dc();//"点餐"函数 xiaoming.gscscd();//"告诉厨师菜谱"函数 laowang.zc();//"做菜"函数 zhangsan.yc();//"用餐"函数 xiaohong.jscf();//"计算餐费"函数 zhangsan.zfcf();//"支付餐费"函数 xiaohong.sqcf();//"收取餐费"函数 }
运行结果一致,
3.继承和多态
上例:老王(laowang)厨师,有个儿子小王厨师,继承了老王厨师会的所有菜品,还有创新,小王厨师的类里能实现的方法(会做的事情)就不要写全部菜品,只写创新的菜品。、
#include <iostream> using namespace std; class Customer{ private: char name; char sex; char phoneNumber; public: Customer(){ } ~Customer(){ } void dc(){ cout<<"点餐"<<endl; } void yc(){ cout<<"用餐"<<endl; } void zfcf(){ cout<<"支付餐费"<<endl; } }; class Waiter { private: char name; char sex; char phoneNumber; public: void ydrz(){ cout<<"引导入座"<<endl; } void dcd(){ cout<<"递菜单"<<endl; } void gscscd(){ cout<<"告诉厨师菜谱"<<endl; } }; class Cook{ private: char name; char sex; char phoneNumber; public: void zc(){ cout<<"做菜"<<endl; } }; class newCook:public Cook { public: void zmb(){ cout<<"做面包"<<endl; } }; class Cashier { private: char name; char sex; char phoneNumber; public: void jscf(){ cout<<"计算餐费"<<endl; } void sqcf(){ cout<<"收取餐费"<<endl; } }; void main() { Customer zhangsan; Waiter xiaoming; Cook laowang; newCook xiaowang; Cashier xiaohong; xiaoming.ydrz();//"引导入座"函数 xiaoming.dcd();//"递菜单"函数 zhangsan.dc();//"点餐"函数 xiaoming.gscscd();//"告诉厨师菜谱"函数 laowang.zc();//"做菜"函数 xiaowang.zc();//小王"做菜"函数 xiaowang.zmb();//小王"做面包"函数 zhangsan.yc();//"用餐"函数 xiaohong.jscf();//"计算餐费"函数 zhangsan.zfcf();//"支付餐费"函数 xiaohong.sqcf();//"收取餐费"函数 }
4.多态
虚函数
5.MFC
就是按钮,菜单,数据库链接,多媒体控制等都使用了类库实现。我们实例化调用实现。