上一篇的计算器的实现中并未采用面向对象的编程方法,而只是使用面向对象的语言
在做结构化的程序设计。使得程序不容易维护,不容易扩展,更不容易复用。
面向对象的思想是将现实世界的事物抽象为一个对象,利用多态、继承、封装抽象的
思想实现业务需要,最后通过整合各模块达到高内聚、低耦合的效果。
可是面向对象的好处又在哪里呢?
所有的优点都是通过对比才凸显的,面向对象编程和传统编程就好比印刷术和活字
印刷术.例如:我们我们需要草拟一份通知,并印刷多分,内容为"蛇年快乐"。
印刷术则是:
活字印刷术则是:
现实中客户的需求是实时变化的,可是已经也好的代码可能处于重头再来的尴尬局面.
究其原因,就是因为程序不易维护,不易扩展,灵活性差,所以就更谈不上复用了.采用面向
对象的编程的程序设计,通过封装、继承、多态降低程序的耦合度,使程序更易维护、更加
灵活、易于修改、复用性也就提高了。
对计算器采用面向对象的方法来实现,使界面和业务分开,降低耦合度,使之易扩展,
维护。
运算类:
package com.kiritor;
/**
* 运算类*/
public class Operation {
public static double getResult(double num1, double num2, String opr) {
double result = 0;
switch (opr) {
case "+":
result = num1 + num2;
break;
case "-":
result = num1 - num2;
break;
case "*":
result = num1 * num2;
break;
case "/":
if (num2 == 0) {
System.out.println("除数不能为零!");
} else {
result = num1 / num2;
}
break;
default:
break;
}
return result;
}
}
主类:
package com.kiritor;
import java.io.BufferedReader;
import java.io.Console;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Scanner;
/**
* 一个简单的+,-,*,/运算器 通过控制台进行读入和计算 基于正整数的
* */
public class Calculator {
public static void main(String[] args) {
try {
System.out.print("请输入第一个数字:");
BufferedReader reader = new BufferedReader(new InputStreamReader(
System.in));
double num1 = Double.parseDouble(reader.readLine());
System.out.print("\n请输入第二个数字:");
double num2 = Double.parseDouble(reader.readLine());
System.out.print("\n请输入运算符:");
String opr = reader.readLine();
System.out.println(Operation.getResult(num1, num2, opr));
} catch (Exception e) {
// TODO: handle exception
}
}
}