关于Java程序设计的面向对象的理解

    本文是<大话设计模式>中的一个案例,读了以后我觉得有所收获,所以来分享一下。

说到面向对象肯定会想到面向过程。一个简单的题目:采用面向语言编写一个计算器控制台程序

面向过程的写法:


import java.io.InputStream;
import java.util.Scanner;

public class Program {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入数字A");
        int numberA = Integer.parseInt(scanner.next());
        System.out.println("请输入数字B");
        int numberB = Integer.parseInt(scanner.next());
        System.out.println("请输入操作符");
        String op  = scanner.next();
        double result = 0;
        if(op.equalsIgnoreCase("+")){
            result = numberA + numberB;
        }else if(op.equalsIgnoreCase("-")){
            result = numberA - numberB;
        }else if (op.equalsIgnoreCase("*")){
            result = numberA * numberB;
        }else if (op.equalsIgnoreCase("/")){
            result = numberA / numberB;
        }
        System.out.println("输出的结果为 : "+ result);
    }
}

而面向对象的写法如下:

<pre style="background-color:#2b2b2b;color:#a9b7c6;font-family:'Source Code Pro';font-size:10.5pt;"><span style="color:#629755;"><em>
</em></span><span style="color:#cc7832;">public class </span><span style="color:#1398a9;">Operation </span>{
    <span style="color:#cc7832;">private int </span><span style="color:#9876aa;">numberA</span><span style="color:#cc7832;">;
</span><span style="color:#cc7832;">    private int </span><span style="color:#9876aa;">numberB</span><span style="color:#cc7832;">;
</span><span style="color:#cc7832;">
</span><span style="color:#cc7832;">    public int </span><span style="color:#ffc66d;">getNumberA</span>() {
        <span style="color:#cc7832;">return </span><span style="color:#9876aa;">numberA</span><span style="color:#cc7832;">;
</span><span style="color:#cc7832;">    </span>}

    <span style="color:#cc7832;">public void </span><span style="color:#ffc66d;">setNumberA</span>(<span style="color:#cc7832;">int </span>numberA) {
        <span style="color:#cc7832;">this</span>.<span style="color:#9876aa;">numberA </span>= numberA<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">    </span>}

    <span style="color:#cc7832;">public int </span><span style="color:#ffc66d;">getNumberB</span>() {
        <span style="color:#cc7832;">return </span><span style="color:#9876aa;">numberB</span><span style="color:#cc7832;">;
</span><span style="color:#cc7832;">    </span>}

    <span style="color:#cc7832;">public void </span><span style="color:#ffc66d;">setNumberB</span>(<span style="color:#cc7832;">int </span>numberB) {
        <span style="color:#cc7832;">this</span>.<span style="color:#9876aa;">numberB </span>= numberB<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">    </span>}

    <span style="color:#cc7832;">public double </span><span style="color:#ffc66d;">getResult</span>() {
        <span style="color:#cc7832;">double </span>result = <span style="color:#6897bb;">0</span><span style="color:#cc7832;">;
</span><span style="color:#cc7832;">        return </span>result<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">    </span>}


 
<pre style="background-color:#2b2b2b;color:#a9b7c6;font-family:'Source Code Pro';font-size:10.5pt;"><span style="color:#629755;"><em>
</em></span><span style="color:#cc7832;">public class </span><span style="color:#1398a9;">OperationAdd </span><span style="color:#cc7832;">extends </span><span style="color:#1398a9;">Operation</span>{

    <span style="color:#bbb529;">@Override
</span><span style="color:#bbb529;">    </span><span style="color:#cc7832;">public double </span><span style="color:#ffc66d;">getResult</span>() {
        <span style="color:#cc7832;">return </span><span style="color:#c2bb54;">getNumberA</span>() + <span style="color:#c2bb54;">getNumberB</span>()<span style="color:#cc7832;">;
</span><span style="color:#cc7832;">    </span>}
}

public class OperationDiv extends Operation {
    @Override
    public double getResult() {
        return getNumberA() / getNumberB();
    }
}

public class OperationMul extends Operation {
    @Override
    public double getResult() {
        return getNumberA() * getNumberB();
    }
}
public class OperationSub extends Operation {
    @Override
    public double getResult() {
        return getNumberA() - getNumberB();
    }
}
public class OperationFactory {
    public static Operation createOperation(String op){
        Operation operation = null;
        switch (op){
            case "+":
                operation = new OperationAdd();
                break;
            case "-":
                operation = new OperationSub();
                break;
            case "*":
                operation = new OperationMul();
                break;
            case "/":
                operation = new OperationDiv();
                break;
        }
        return  operation;
    }
}
public class Program2 {
    public static void main(String[] args) {
        Operation oper;
        oper = OperationFactory.createOperation("+");
        oper.setNumberA(1);
        oper.setNumberB(2);
        double result = oper.getResult();
        System.out.println("结果为:"+result);
    }
}

 这昂会有更加的优秀的扩张性和可维护性。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值