《大话设计模式》读书笔记之C++实现--chapter1运算工厂类(简单计算器)
2017-03-29 21:37
363 查看
本文是大话设计模式的读书笔记,帮助读者从面向过程的编程思想到面向对象的思想的转变,实现从理解C++基本的语法到深入理解面向对象的三大特性--封装、继承和多态,以一个简单的四则运算计算器开始面向对象的旅程。
#include<iostream> using namespace std; //运算类 class Operate { public: virtual double getResult()=0; void setNum1(double num1); void setNum2(double num2); double getNum1(); double getNum2(); private: double number1; double number2; }; //运算工厂类,通过指向不同的运算类实现调用不同的运算功能 class OperateFactory { public: Operate* creatOperate(char type); }; //加法类 class OperateAdd :public Operate { public: virtual double getResult(); }; //减法类 class OperateSub :public Operate { public: virtual double getResult(); }; //乘法类 class OperateMul :public Operate { public: virtual double getResult(); }; //除法类 class OperateDiv :public Operate { public: virtual double getResult(); }; //以下为类外定义的函数 void Operate::setNum1(double num1) { number1 = num1; } void Operate::setNum2(double num2) { number2 = num2; } double Operate::getNum1() { return number1; } double Operate::getNum2() { return number2; } double OperateAdd::getResult() { double result = 0; result = getNum1() + getNum2(); return result; } double OperateSub::getResult() { double result = 0; result = getNum1() - getNum2(); return result; } double OperateMul::getResult() { double result = 0; result = getNum1() * getNum2(); return result; } double OperateDiv::getResult() { double result = 0; double tmp1 = getNum1(); double tmp2 = getNum2(); if (tmp2 == 0) cout << "除数不能为0" << endl; else result = tmp1/tmp2; return result; } Operate * OperateFactory::creatOperate(char type) { Operate* p_Operate; switch (type) { case'+': p_Operate = new OperateAdd; break; case'-': p_Operate = new OperateSub; break; case'*': p_Operate = new OperateMul; break; case'/': p_Operate = new OperateDiv; break; } return p_Operate; } //客户端(主函数) void main() { Operate* oper = NULL; OperateFactory of; oper = of.creatOperate('/'); oper->setNum1(10); oper->setNum2(152); cout << oper->getResult() << endl; if (oper != NULL) { delete oper; oper = NULL; } system("pause"); }
相关文章推荐
- 《大话设计模式》读书笔记之C++实现--chapter7代理模式
- 《大话设计模式》读书笔记之C++实现--chapter15抽象工厂模式
- 《大话设计模式》读书笔记之C++实现--chapter8工厂方法模式
- 《大话设计模式》读书笔记之C++实现--chapter23命令模式
- 《大话设计模式》读书笔记(C++代码实现) 第二章:策略模式
- 《大话设计模式》读书笔记(C++代码实现) 第一章:简单工厂模式
- 《大话设计模式》读书笔记(C++代码实现) 第二章:策略模式
- 《大话设计模式》读书笔记之C++实现--chapter24命令模式
- 《大话设计模式》读书笔记(C++代码实现) 第七章:代理模式
- 《大话设计模式》读书笔记(C++代码实现) 第七章:代理模式
- 《大话设计模式》读书笔记之C++实现--chapter27解释器模式
- 《大话设计模式》读书笔记(C++代码实现) 第六章:装饰模式
- 《大话设计模式》读书笔记(C++代码实现) 第六章:装饰模式
- 《大话设计模式》读书笔记之C++实现--chapter2策略模式(商场收费系统)
- 《大话设计模式》读书笔记之C++实现--chapter6装饰模式
- 《大话设计模式》读书笔记之C++实现--chapter22桥接模式
- 《大话设计模式》读书笔记(C++代码实现) 第一章:简单工厂模式
- 大话设计模式--工厂模式 factory -- C++实现实例
- 大话设计模式--原型模式 Prototype -- C++实现
- 大话设计模式--装饰者模式 Decorator -- C++实现实例