Matlab面向对象编程
名稱:簡單計算器程序
面向對象思想的由來:面向對象編程思想的由來是從面向過程演變而來,所以我們用一個簡單的計算器程序用面向過程的方式去實現。
以下是面向過程方式實現計算器程序:
public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("input 1 figure...");double figure1 = Double.parseDouble(scanner.nextLine());System.out.println("input operator...");String operator = scanner.nextLine();System.out.println("input 2 figure...");double figure2 = Double.parseDouble(scanner.nextLine());double resultOperator = 0.0;if ("+".equals(operator)) {resultOperator = figure1 + figure2;} else if ("-".equals(operator)) {resultOperator = figure1 - figure2;} else if ("*".equals(operator)) {resultOperator = figure1 * figure2;} else if ("/".equals(operator)) {resultOperator = figure1 / figure2;}System.out.println("result:" + resultOperator);} }- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
運行效果:?
這實現起來確實很快,代碼運行起來也沒有異常,但是并不是代碼無錯就是優,我們要多方面考慮就知道問題的所在了,例如:以后要在平板電腦上計算,以后要在javaWeb程序上計算,能到這個計算過程都要在去寫一遍?,這肯定沒有體現出復用性?
所以我們要考慮如何復用??
業務封裝:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
所以我們定義一個計算類(Operator),里面有一個計算的方法,以后不管是平板電腦程序需要計算,還是JavaWeb程序需要計算 等等,都可以使用這個Operator類的計算方法了,從而實現了復用,面向對象特征之一封裝。
我們在以面向對象編程思想里考慮,這樣寫耦合度太高,擴展性也不好,因為如果現在要增加一個平方根運算呢,難道要去修改代碼嗎?
所以我們以面向對象的思想來考慮的話,抽取共用相同的行為,無論(加 減 乘 除)他們都用算法的行為,所以我們定義一個父類,用子類來實現:
public abstract class Counter {private double figure1;private double figure2;public double getFigure1() {return figure1;}public void setFigure1(double figure1) {this.figure1 = figure1;}public double getFigure2() {return figure2;}public void setFigure2(double figure2) {this.figure2 = figure2;}/*** 抽象方法* 計算兩個數值* @return 返回計算結果*/public abstract double counterResult();}// 加法類 public class CounterAdd extends Counter{public double counterResult() {return Operator.getOperatorResult(getFigure1(), getFigure2(), "+");} }// 減法類 public class CounterMinus extends Counter {public double counterResult() {return Operator.getOperatorResult(getFigure1(), getFigure2(), "-"); } }// 乘法類 public class CounterRide extends Counter {public double counterResult() {return Operator.getOperatorResult(getFigure1(), getFigure2(), "*");} }// 除法類 public class CounterRemove extends Counter {public double counterResult() {return Operator.getOperatorResult(getFigure1(), getFigure2(), "/");} }// 計算類 public class Operator {/*** 此方法的用于計算兩個數的值* @param figure1 第一個數值* @param figure2 第二個數值* @param operator 傳入運算符* @return*/public static double getOperatorResult(double figure1, double figure2, String operator) {double resultOperator = 0.0;if ("+".equals(operator)) {resultOperator = figure1 + figure2;} else if ("-".equals(operator)) {resultOperator = figure1 - figure2;} else if ("*".equals(operator)) {resultOperator = figure1 * figure2;} else if ("/".equals(operator)) {resultOperator = figure1 / figure2;}return resultOperator; } }- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
客戶端程序調用:
public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("input 1 figure...");double figure1 = Double.parseDouble(scanner.nextLine());System.out.println("input operator...");String operator = scanner.nextLine();System.out.println("input 2 figure...");double figure2 = Double.parseDouble(scanner.nextLine());Counter counter = CounterFactory.getInstance().getOperator(operator);counter.setFigure1(figure1);counter.setFigure2(figure2);double counterResult = counter.counterResult();System.out.println("result:" + counterResult); } }- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
執行結果:?
以上說這些:完全是模擬從一個簡單的計算器程序,用常規面向過程思想實現,慢慢的演化到面向對象思想中來體現,以上還有很多不足,沒有去完善,主要是體現出面向對象程序設計一種方式。
?
轉自?http://blog.csdn.net/u011967006
總結
以上是生活随笔為你收集整理的Matlab面向对象编程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 思科与华为生成树协议的对接
- 下一篇: Linux文本模式中文乱码