廢話不多說直接上代碼
運算:
public class Operation { public static double getResult(double a,double b,String operate){ double result = 0; switch (operate) { case "+": result = a+b; break; case "-": result = a-b; break; case "*": result = a*b; break; case "/": result = a/b; break; default: break; } return result; } }
客戶端:
public class Run { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("請輸入數字A"); double a = (double)scanner.nextInt(); System.out.println("請輸入數字B"); double b = (double)scanner.nextInt(); System.out.println("運算符號"); String operate = scanner.next(); double result = Operation.getResult(a, b, operate); System.out.println(result); } }
上面代碼僅僅實現了封裝,並沒有體現出面向對象的另外兩大特性,請看下面的代碼
運算類
public class Operation { private double a; private double b; public double getA() { return a; } public void setA(double a) { this.a = a; } public double getB() { return b; } public void setB(double b) { this.b = b; } public double getResult(){ double result = 0; return result; } }
加法類繼承運算類:
public class OperationAdd extends Operation { @Override
public double getResult() { double result = 0; result = getA()+getB(); return result; } }
減法類繼承運算類:
public class OperationSub extends Operation{ @Override
public double getResult() { double result = 0; result = getA()-getB(); return result; } }
乘法類繼承運算類:
public class OperationMul extends Operation{ @Override
public double getResult() { double result = 0; result = getA()*getB(); return result; } }
除法類繼承運算類:
public class OperationDiv extends Operation { @Override
public double getResult() { double result = 0; if(getB() == 0){ System.out.println("除數不能為0"); } result = getA()/getB(); return result; } }
看到這里可能有人會問那我們如何讓計算器去識別我們希望用哪一個算法
在這里我們就要使用到簡單的工廠模式了 代碼如下:
public class OperationFactory { public static Operation createOperation(String operation) { Operation ope = null; switch (operation) { case "+": ope = new OperationAdd(); break; case "-": ope = new OperationSub(); break; case "*": ope = new OperationMul(); break; case "/": ope = new OperationDiv(); break;
} return ope;
} }
那么讓程序跑起來
public class Run { public static void main(String[] args) { Operation ope; ope=new OperationFactory().createOperation("/"); ope.setA(10); ope.setB(5); double result = ope.getResult(); System.out.println(result); } }
輸出結果:
2.0