第十章、面向对象编程
1. 面向对象编程思想
面向对象编程(Object Oriented Programming,OOP)的思想是把一切看成现实世界的物体(对象),通过对象和对象之间的关系来构建软件系统。
面向对象编程思想的组成要素是类和对象。
类是对象的描述(蓝图)
对象是由类创建的实例,真正占用内存的变量。
思想是用类来描述对象的行为。用类封装对象数据。
描述方法示例
有两个人(Human),张三(zhang3) 和 李四(li3)
张三工作赚钱 1000 元
李四借张三 300 元
李四买游戏机花了270元;
张三教李四玩王者荣耀
李四教张三 C++
用 C++ 语言来描述面相对象的思想,如下所示。
示例代码
// filename: oop_demo.cpp
#include <iostream>
#include <string.h>
using namespace std;
class Human {
public:
Human(const char * n) : name(n),money(0){}
void showInfo(void) {
cout << name << ", 有钱:" << money << "元, 技能:" << skill << endl;
}
void work(int m) {
money += m;
cout << name << " 工作赚了" << m << "元,共有" << money << "元" << endl;
}
void borrowFrom(Human & h, int m) {
if (m > h.money) {
cout << h.name << "没有" << m << "元这么多钱,借钱失败!" << endl;
return;
}
h.money -= m;
money += m;
cout << h.name << "借给" << name << m << "元钱!" << endl;
}
private:
string name;
int money;
string skill; // 技能 :w
};
int main(int argc, char * argv[]) {
// 有两个人(Human),张三(zhang3) 和 李四(li3)
Human zhang3("张三");
Human li4("李四");
// 张三工作赚钱 1000 元
zhang3.work(1000);
// 李四借张三 300 元
li4.borrowFrom(zhang3, 300);
zhang3.showInfo();
li4.showInfo();
// 李四买游戏机花了270元;
// li4.buy("游戏机", 270);
// 李四教张三玩王者荣耀
// li4.teach(zhang3, "王者荣耀");
// 张三教李四 C++
// zhang3.teach(li4, "C++");
cout << "程序结束!" << endl;
return 0;
}
编译和运行结果如下:
weimz@mzstudio:~$ g++ -o oop_demo oop_demo.cpp
weimz@mzstudio:~$ ./oop_demo
张三 工作赚了1000元,共有1000元
张三借给李四300元钱!
张三, 有钱:700元, 技能:
李四, 有钱:300元, 技能:
程序结束!
练习
完成面向对象思想示例的张三、李四的其他逻辑。