-
这个小demo,不知道有没面向对象的思想在里面?5
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import com.shenchen.model.Item; import com.shenchen.type.Types; import com.shenchen.util.Calculator; public class Main { public static void main(String[] args) throws Exception, IOException { InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); Item item = new Item(); Double num1 = Double.parseDouble( br.readLine()); item.setNum1(num1); System.out.println("请输入一个运算符号:"); String str = br.readLine(); switch (str) { case "+": item.setType(Types.JIA); break; case "-": item.setType(Types.JIAN); break; case "*": item.setType(Types.CHENG); break; case "/": item.setType(Types.CHU); break; default: System.out.println("符号错误!"); System.exit(0); } System.out.println("请输入一个数字:"); Double num2 = Double.parseDouble(br.readLine()); item.setNum2(num2); new Calculator(item); } } public class Item { double num1; double num2; int type; public void setNum1(double num1) { this.num1 = num1; } public void setNum2(double num2) { this.num2 = num2; } public void setType(int type) { this.type = type; } public double getNum1() { return num1; } public double getNum2() { return num2; } public int getType() { return type; } } public class Types { public final static int JIA = 1; public final static int JIAN = 2; public final static int CHENG =3; public final static int CHU = 4; } import com.shenchen.model.Item; import com.shenchen.type.Types; public class Calculator { double result; public Calculator(Item item) { double num1 = item.getNum1(); double num2 = item.getNum2(); switch (item.getType()) { case Types.JIA: result = num1+num2; System.out.println(num1+"+"+num2+" = "+result); break; case Types.JIAN: result = num1-num2; System.out.println(num1+"-"+num2+" = "+result); break; case Types.CHENG: result = num1*num2; System.out.println(num1+"*"+num2+" = "+result); break; case Types.CHU: result = num1/num2; System.out.println(num1+"/"+num2+" = "+result); break; } } }
问题补充:如果不是,能不能指点一下。大概得怎么写。最好是贴出代码啦,学习学习2014年6月20日 23:46
2个答案 按时间排序 按投票排序
-
采纳的答案
将计算的抽一个接口出来ICalculator,具体计算实现该接口。如果要加功能,添加其它计算方法,添加实现类就好了,另外可以弄一个Factory负责创建这些Calculator。代码简单贴一下。
public interface ICalculator { public double calculate(double ...args); }
//加法 public class PlusCalculator implements ICalculator { @Override public double calculate(double... args) { double res = 0; for(double arg:args) res += arg; return res; } }
//减法 public class MinusCalculator implements ICalculator { @Override public double calculate(double... args) { if (args.length == 0) return 0; double res = args[0]; for (int i = 1; i < args.length; ++i) { res -= args[i]; } return res; } }
//平方 public class SquareCalculator implements ICalculator { @Override public double calculate(double... args) { //只接受一个参数 if(args.length == 1) return args[0]*args[0]; else return 0; } }
//操作类型 public enum CalculatorType { PlusCalculator,MinusCalculator,SquareCalculator; }
//工厂 public class CalculatorFactory { public static ICalculator getCalculator(CalculatorType type) { ICalculator calculator = null; switch (type) { case MinusCalculator: calculator = new MinusCalculator(); break; case PlusCalculator: calculator = new PlusCalculator(); break; case SquareCalculator: calculator = new SquareCalculator(); break; default: break; } return calculator; } }
//测试代码 public static void main(String[] args) { double arg1 = 100; double arg2 = 90; double arg3 = 80; ICalculator calculator = CalculatorFactory.getCalculator(CalculatorType.PlusCalculator); System.out.println(calculator.calculate(arg1,arg2,arg3)); calculator = CalculatorFactory.getCalculator(CalculatorType.MinusCalculator); System.out.println(calculator.calculate(arg1,arg2,arg3)); calculator = CalculatorFactory.getCalculator(CalculatorType.SquareCalculator); System.out.println(calculator.calculate(arg1)); }
2014年6月21日 23:21
相关推荐
对于初学者来说,这个DEMO可以帮助他们了解如何在实际项目中应用Java语言和面向对象的设计思想。 【压缩包子文件的文件名称列表】仅列出了"homework2",这可能是一个源代码文件夹或者是一个具体的Java源代码文件。...
这个原则是面向对象设计的五大原则(SOLID)之一,旨在提高代码的可复用性和可维护性。在Java开发中,依赖倒置原则的应用能帮助我们编写出更松耦合、更易于测试的代码。 依赖倒置原则的核心思想是"高层模块不应该...
这是我刚入门Qt模仿一款通讯软件写的一个小demo,但到现在才给他传上来,里面做到的一些功能都是比较基础的,但却又涉及到Qt的比较多的知识。涉及的技术点: 1.各种 Qt Widget 控件 2. QSS 的使用,自定义控件样式 3...
代理模式的核心思想是在目标对象和客户端之间插入一个代理对象,代理对象可以扩展目标对象的功能,同时也能控制对目标对象的访问。 代理模式在Java中有两种常见的实现方式:静态代理和动态代理。静态代理是通过...
sklearn相关的代码demo,可以下载下来学习,里面包括sklearn如何封装代码,如何使用面向对象编程的思想拟合出一个模型,并计算准确率,确定超参数。
还有配置文件的一些注入,以及命名,会有很多种,可能这时会有很多人认为只要function体里面的代码逻辑质量高,很规范的运用了面向对象的思想,对逻辑封装的好,性能高,这些规范不规范的有什么问题,影响不了程序的性能,...
注:这是我参考一些多层架构的资料结合对多层的理解写的一个demo,用了两天时间,可能不是很标准,大家看的时候,有什么意见多多交流,一起探讨.分页那里还有点bug,不过我想以后再改进了(分页封装到数据层我总觉得...