大话设计模式一:代码无错就是优----简单工厂模式
2015-10-02 22:44
477 查看
/* **计算机控制台程序 **要求体现面向对象的思想 */ #include <iostream> #include <string> using namespace std; //运算类(基类 抽象类) class Operation { public: Operation(double _numberA = 0.0, double _numberB = 0.0) :numberA(_numberA), numberB(_numberB){} void SetNumberA(double _numberA) { numberA = _numberA; } void SetNumberB(double _numberB) { numberB = _numberB; } virtual double GetResult() = 0; protected: double numberA; double numberB; }; //加减乘除类(派生类) //加 class OperationAdd : public Operation { public: double GetResult(); private: double result = 0.0; }; double OperationAdd::GetResult() { result = numberA + numberB; return result; } //减 class OperationSub : public Operation { public: double GetResult(); private: double result = 0.0; }; double OperationSub::GetResult() { result = numberA - numberB; return result; } //乘 class OperationMul : public Operation { public: double GetResult(); private: double result = 0.0; }; double OperationMul::GetResult() { result = numberA * numberB; return result; } //除 class OperationDiv : public Operation { public: double GetResult(); private: double result = 0.0; }; double OperationDiv::GetResult() { if (numberB == 0) throw; result = numberA / numberB; return result; } //运算工厂函数 Operation* createOperate(char operate) { Operation *oper = NULL; switch (operate) { case '+': oper = new OperationAdd; break; case '-': oper = new OperationSub; break; case '*': oper = new OperationMul; break; case '/': oper = new OperationDiv; break; } return oper; } int main() { double numberA, numberB, result; char c; cout << "numberA = "; cin >> numberA; cout << " numberB = "; cin >> numberB; cout << endl; cout << "what do you want to do? "; cin >> c; Operation* oper = createOperate(c); oper->SetNumberA(numberA); oper->SetNumberB(numberB); result = oper->GetResult(); cout << " result is:" << result << endl; }
相关文章推荐
- 一本QT书,连接MySQL图文并茂
- golang snmp开发学习笔记(一)
- 一张图诠释Java集合
- python requests库官方手册
- golang的采集库
- 几个java的图片方法
- JAVA+jni 包名或方法名中含有下划线(_)的解决方法
- Spring定义的7种不同的事务传播行为
- 【Java 语言生态篇】Junit 测试单元
- c/c++ 2048 120行左右~
- 链表(Java)
- Java中的native关键字与JNI
- c++ primer 练习5.17
- java 杨辉三角 王建安
- C# 自定义集合
- 零基础学python-19.9 生成器函数与生成器表达式
- JAVA_SE基础——37.main方法的详解
- 零基础学python-19.9 生成器函数与生成器表达式
- php下载文件错误,文件损坏,编码错误,有空格
- effective c++ 条款2 尽量以const enum inline代替#define