疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

java运用面向对象思想实现计算器的小程序


 

   

  其实,觉得最重要的就是这里的这样的一段核心代码。

  package org.lenovo.demo;

  public class OperationFactory {

  public static Operation createOperation(String operate){

  Operation oper = null;

  switch(operate){

  case "+":

  oper = new AddOperation();

  break;

  case "-":

  oper = new SubOperation();

  break;

  case "*":

  oper = new MulOperation();

  break;

  case "/":

  oper = new DivOperation();

  break;

  }

  return oper;

  }

  }

  在上面的这一段代码中,其中Operation是定义的一个接口,如下所示:

  package org.lenovo.demo;

  public interface Operation {

  public double getResult(double numA , double numB);

  }

  而对于加法、减法、乘法、除法以及取余等操作,都是分别定义的一个类,而对于这个类又实现了Operation接口。如下所示:

  package org.lenovo.demo;

  public class AddOperation implements Operation {

  public double getResult(double numA, double numB){

  return numA + numB;

  }

  }

  所以,对于OperationFactory类中,通过对于操作符号的一个switch.....case判断,来选择相应的子类进行实例化接口的操作。而在Main方法中,对于此功能的核心调用代码如下:

  oper=OperationFactory.createOperation(operate);

  result=oper.getResult(numA,numB);

  其中对于oper对象、operate(String)字符串、以及double类型的numA,numB在之前已经定义好了。

  小结:关于Java多态性的描述,可以理解为一个接口,多个方法。当我们需要实例化此接

  口的时候,通过具体的情况用相应的子类来实例化。这样被实例化的对象所调用的方

  法就是就是子类所覆写的方法,从而来达到了这一要求。而在这个程序中,如果我们

  需要定义一个取模的操作,也是只需要定义一个类实现Operation接口,然后

  在OperationFactory中,添加一段判断代码即可。