• 四则运算《《《代码封装 策略模式


     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 
     6 namespace sum
     7 {
     8     class Class1
     9     {
    10         public interface Calculator        //声明计算接口
    11         {
    12             double Cal(double x, double y);
    13         }
    14         private double x;                //定义x变量;
    15 
    16         public double X                  //封装字段
    17         {
    18             get { return x; }
    19             set { x = value; }
    20 
    21         }
    22         private double y;               //定义y变量
    23 
    24 
    25         public double Y                  //封装字段
    26         {
    27             get { return y; }
    28             set { y = value; }
    29 
    30         }
    31         public class Add : Calculator            //接口法运算
    32         {
    33             public double Cal(double x, double y)
    34             {
    35                 double result = 0;
    36                 result = x + y;
    37                 return result;
    38             }
    39         }
    40         public class Sub : Calculator 
    41         {
    42             public double Cal(double x, double y)
    43             {
    44                 double result = 0;
    45                 result = x - y;
    46                 return result;
    47             }
    48         }
    49         public class Mul : Calculator 
    50         {
    51             public double Cal(double x, double y)
    52             {
    53                 double result = 0;
    54                 result = x * y;
    55                 return result;
    56             }
    57         }
    58         public class Div : Calculator  
    59         {
    60             public double Cal(double x, double y)
    61             {
    62                 double result = 0;
    63                 result = x / y;
    64                 return result;
    65             }
    66         }
    67         public class Opear                  //定义运算符  
    68         {
    69             private Calculator calculate;
    70             public Opear(Calculator calculate)
    71             {
    72                 this.calculate = calculate;
    73             }
    74             public double Cal(double x, double y, String op)  //返回运算结果
    75             {
    76                 return this.calculate.Cal(x, y);
    77             }
    78         }
    79     }
    80 }

    策略模式引用:

     1  private void textBox8_KeyDown(object sender, KeyEventArgs e)
     2         {
     3             sum.Class1.Opear opear = null;
     4             double x = Convert.ToDouble(textBox5.Text); //为相关的变量赋值
     5             double y = Convert.ToDouble(textBox7.Text);
     6             string op = textBox6.Text;
     7             switch (op)
     8             {
     9                 case "+":
    10                      opear = new  sum.Class1.Opear(new sum.Class1.Add()); //策略模式的引用
    11                     break;
    12                 case "-":
    13                     opear = new sum.Class1.Opear(new sum.Class1.Sub());
    14 
    15                     break;
    16                 case "*":
    17                     opear = new sum.Class1.Opear(new sum.Class1.Mul());
    18 
    19                     break;
    20                 case "/":
    21                     opear = new sum.Class1.Opear(new sum.Class1.Div());
    22 
    23                     break;
    24                 default:
    25                     break;
    26             }
    27             
    28             if (e.KeyCode == Keys.Enter)
    29             {
    30                 string answer = opear.Cal(x, y, op).ToString();
    31                 if (textBox8.Text ==answer.ToString())
    32                 {
    33                     MessageBox.Show("回答正确");
    34                     Count++;
    35                     Right++;
    36                 }
    37                 else
    38                 {
    39                     MessageBox.Show("回答错误");
    40                     Count++;
    41                 }

    运行结果:

    保存出好的题

  • 相关阅读:
    【Luogu P5515】[MtOI2019]灵梦的计算器
    简易的命令行入门教程
    8个接私活的网站,只要你有码,那“我”就有钱
    单表查询必会13条
    「Django」rest_framework学习系列-路由
    Linux下将时间修改为当地时间(通过ntpdate服务)
    iptables拒绝发起大量请求(针对单IP地址)
    .webp格式win7无法显示缩略图
    永久修改/etc/proc下的项的配置文件
    通过vsftpd实现虚拟用户登录,不同的用户登录不同的目录,使用不同的权限
  • 原文地址:https://www.cnblogs.com/thinking-star/p/5004834.html
Copyright © 2020-2023  润新知