• 简单工厂计算器


    这个是今天上课的练习,我在这里写写过程,此程序还有许多缺陷,见谅(引用命名空间需要在VS中引用类所在的项目)

    首先定义一个接口

    interface Icounter

    {

        double  Counter();

    }

    其次在解决方案中分别生成5个类

    1,添加加法类。4个运算类分别引用接口命名空间

    class Add1:Icounter

    {

            //定义字段

           double num1;

           double  num2;

            //构造方法传参数

            public Add1(double n1,double n2)

          {

                  num1=n1;

                  num2=n2;

          }

            //接口方法

             public double Counter()

          {

             return num1+num2;

          }

    }

     添加减法类

     class Sub1:Icounter

    {    

           double num1;

           double num2;

            public Sub1(double n1,double n2)

          {

                  num1=n1;

                  num2=n2;

          }

             public double Counter()

          {

             return num1-num2;

          } 

    }

    添加乘法类

    class Mult1:Icounter

    {    

           double num1;

           double num2;

            public Mult1(double n1,double n2)

          {

                  num1=n1;

                  num2=n2;

          }

             public double Counter()

          {

             return num1*num2;

          }

    }

    添加除法表

    class Div1:Icounter

    {   

           double num1;

           double num2;

            public Div1(double n1,double n2)

          {

                  num1=n1;

                //因为n2不能为0

                if(n2==0)

                {

                      Console.WriteLine("第二个数字不能为0")

                }

                  else

                 {

                  num2=n2;

                }

          }

             public double Counter()

          {

             return num1/num2;

          }

    }

    //定义工厂类   引用接口命名空间  引用加减乘除的命名空间

    class  Factory

    {

         //定义静态方法

         public static Icounter  jisuan(double n1,double n2,string oper)

        {

                 switch(oper)

                {

                      case "+":return new Add1(n1,n2);

                      case "-":return new Sub1(n1,n2);

                      case "*":return new Mult1(n1,n2);

                      case "-":return new Div1(n1,n2);

                     defalut:return new Add1(n1,n2);

                 }

        }

    }

    主函数引用接口命名空间,引用工厂命名空间

        Console.WriteLine("请输入第一个数字");

        double num1=Convert.ToDouble(Console.ReadLine());

        Console.WriteLine("请输入运算符号");

        string oper=Console.ReadLine();

        Console.WriteLine("请输入第二个数字");

        double num2=Convert.ToDouble(Console.ReadLine());

       Icounter res=Factory.jisuan(num1,num2,oper);

        double result= res.Counter();

       Console.WriteLine(result);

       Console.ReadKey();

  • 相关阅读:
    codevs 3657 括号序列
    洛谷P1962 斐波那契数列
    Black Rock shooter
    codevs 2596 售货员的难题
    51Nod-1154 回文串划分
    UVA
    POJ3321[苹果树] 树状数组/线段树 + dfs序
    Hdu 4578 Transformation (线段树 分类分析)
    786B
    438D
  • 原文地址:https://www.cnblogs.com/349932030yin/p/2568773.html
Copyright © 2020-2023  润新知