简易计算器的优化

oop原则:组合大于继承

//继承
class A extends B{

}
//组合,减少耦合性
class A{
	public B b:

}

改动前

面向过程写法

//简易计算器
public class TextCalc {
    public static void main(String[] args) {
        Calculator calculator = new Calculator();
        windowClose1(calculator);
    }
    //关闭窗口
    private static void windowClose1 (Frame frame){
        frame.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
    }
}

//计算器类
class Calculator extends Frame{
    public Calculator()  {
        //3个文本框
        TextField tF1 = new TextField(10);
        TextField tF2 = new TextField(10);
        TextField tF3 = new TextField(10);

        //1个按钮
        Button button = new Button("=");
        button.addActionListener(new MyCalculatorListener(tF1,tF2,tF3));
        //1个标签
        Label label = new Label("+");

        //布局
        setLayout(new FlowLayout());

            //排序
        add(tF1);
        add(label);
        add(tF2);
        add(button);
        add(tF3);

        pack();
        setVisible(true);

    }
}

//监听类
class MyCalculatorListener implements ActionListener{

    private TextField tF1,tF2,tF3;

    public MyCalculatorListener(TextField tF1,TextField tF2,TextField tF3) {
        this.tF1 = tF1;
        this.tF2 = tF2;
        this.tF3 = tF3;
    }
    @Override
    public void actionPerformed(ActionEvent e) {
        //获得加数和被加数
        int n1 = Integer.parseInt(tF1.getText());
        int n2 = Integer.parseInt(tF2.getText());

        //将这两个值相加后,输入第三个框
        tF3.setText(""+(n1+n2));

        // 清空
        tF1.setText("");
        tF2.setText("");

    }
}

完全改造为面向对象写法

//简易计算器
public class TextCalc {
    public static void main(String[] args) {
        Calculator calculator = new Calculator();
        calculator.loadFrame();
        windowClose1(calculator);
    }
    //关闭窗口
    private static void windowClose1 (Frame frame){
        frame.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
    }
}

//计算器类
class Calculator extends Frame{
    //属性
    TextField tF1;
    TextField tF2;
    TextField tF3;

    public void loadFrame()  {
        //3个文本框
        tF1 = new TextField(10);
        tF2 = new TextField(10);
        tF3 = new TextField(10);

        //1个按钮
        Button button = new Button("=");
        button.addActionListener(new MyCalculatorListener(this));
        //1个标签
        Label label = new Label("+");

        //布局
        setLayout(new FlowLayout());
        //排序
        add(tF1);
        add(label);
        add(tF2);
        add(button);
        add(tF3);

        pack();
        setVisible(true);

    }
}

//监听类
class MyCalculatorListener implements ActionListener{

    //获取计算器这个对象,在一个类中组合另一个类。
    Calculator calculator = null;

    public MyCalculatorListener(Calculator calculator) {
        this.calculator = calculator;
    }
    @Override
    public void actionPerformed(ActionEvent e) {
        //获得加数和被加数
        int n1 = Integer.parseInt(calculator.tF1.getText());
        int n2 = Integer.parseInt(calculator.tF2.getText());
        //将这两个值相加后,输入第三个框
        calculator.tF3.setText(""+(n1+n2));
        // 清空
        calculator.tF1.setText("");
        calculator.tF2.setText("");
    }
}

内部类

  • 更好的包装
//简易计算器
public class TextCalc {
   public static void main(String[] args) {
       Calculator calculator = new Calculator();
       calculator.loadFrame();
       windowClose1(calculator);
   }
   //关闭窗口
   private static void windowClose1 (Frame frame){
       frame.addWindowListener(new WindowAdapter() {
           @Override
           public void windowClosing(WindowEvent e) {
               System.exit(0);
           }
       });
   }
}

//计算器类
class Calculator extends Frame{
   //属性
   TextField tF1;
   TextField tF2;
   TextField tF3;

   public void loadFrame()  {
       //3个文本框
       tF1 = new TextField(10);
       tF2 = new TextField(10);
       tF3 = new TextField(10);

       //1个按钮
       Button button = new Button("=");
       button.addActionListener(new MyCalculatorListener());
       //1个标签
       Label label = new Label("+");

       //布局
       setLayout(new FlowLayout());
       //排序
       add(tF1);
       add(label);
       add(tF2);
       add(button);
       add(tF3);

       pack();
       setVisible(true);

   }
   //监听类
   private class MyCalculatorListener implements ActionListener{

       @Override
       public void actionPerformed(ActionEvent e) {
           //获得加数和被加数
           int n1 = Integer.parseInt(tF1.getText());
           int n2 = Integer.parseInt(tF2.getText());
           //将这两个值相加后,输入第三个框
           tF3.setText(""+(n1+n2));
           // 清空
           tF1.setText("");
           tF2.setText("");
       }
   }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
UniApp是一款基于Vue.js框架的跨平台开发工具,可以用于开发iOS、Android、H5等多个平台的应用程序。下面是一个简易计算器的示例: 1. 创建一个新的UniApp项目。 2. 在pages目录下创建一个Calculator页面。 3. 在Calculator页面的vue文件中,编写计算器的布局和样式。 4. 在data中定义一个result变量,用于显示计算结果。 5. 在methods中定义各种计算操作的函数,例如add、subtract、multiply、divide等。 6. 在模板中使用按钮组件,并绑定对应的计算函数。 7. 在模板中使用文本组件显示计算结果。 示例代码如下: ```html <template> <view class="container"> <text class="result">{{ result }}</text> <view class="buttons"> <button @click="add">+</button> <button @click="subtract">-</button> <button @click="multiply">*</button> <button @click="divide">/</button> </view> </view> </template> <script> export default { data() { return { result: 0 }; }, methods: { add() { // 实现加法操作 }, subtract() { // 实现减法操作 }, multiply() { // 实现乘法操作 }, divide() { // 实现除法操作 } } }; </script> <style> .container { display: flex; flex-direction: column; align-items: center; justify-content: center; height: 100vh; } .result { font-size: 24px; margin-bottom: 20px; } .buttons { display: flex; } button { width: 50px; height: 50px; margin-right: 10px; } </style> ``` 这是一个简单的UniApp计算器示例,你可以根据需求进行扩展和优化

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值