编写一个简单的计算器程序,包含基本运算。要求面向对象语言。
题目看起来很简单,但由于要求使用面向对象语言,所以要将面向对象语言的三大特性全部体现出来才可以,而不是单单实现其功能。
关键点分析
- 对输入做判断
- 除数为0时
- 面向对象【可扩展,易复用,易维护】
通过封装,继承,多态降低程序的耦合度
简单工厂模式
即考虑用一个单独的类来做创造实例的过程。
所需的类
- Operation 运算类【定义运算所需的参数以及运算方法】
- AddOperation 具体的运算子类【expends Operation】
- OperationFactory 运算工厂类【创造具体实例】
- Application 相应的应用类【进行相应计算】
如此编写的代码在需要扩充功能或者修改代码时就十分方便了,如果需要增加根号类,则只需新增一个具体的运算类RadicalOperation和修改运算工厂类即可。从而使代码实现了面向对象的特性。
具体代码
1,Operation
public abstract class Operation {
public double number_A;
public double number_B;
public double getNumber_A() {
return number_A;
}
public void setNumber_A(double number_A) {
this.number_A = number_A;
}
public double getNumber_B() {
return number_B;
}
public void setNumber_B(double number_B) {
this.number_B = number_B;
}
public abstract double getResult();
}
2,AddOperation
public class OperationAdd extends Operation{//继承自Operation
@Override
public double getResult() {
// TODO Auto-generated method stub
double result = number_A + number_B;
return result;
}
}
3,OperationFactory
/**
* 运算工厂类
* @author Administrator
*
*/
public class OperationFactory {
public static Operation createOperation(String operation){
Operation ope = null;
switch (operation) {
case "+":
ope = new OperationAdd();
break;
case "/":
ope = new OperationDiv();
break;
default:
break;
}
return ope;
}
}
4,Application
public class Application {
public static void main(String args[]){
Operation ope;
ope = OperationFactory.createOperation("/");
ope.number_A = 6;
ope.number_B = 3;
System.out.println(ope.getResult()+"");
}
}