多态计算机程序

一.创建一个窗体

二.创建一个类Operator里面有两个操作数和一个方法

public  abstract  class Operator
    {

     public abstract int Calc();
     //计算数
     public int NumLeft { get; set; }
     public int NumRight { get; set; }
    }

三.创建一个Add类

 public class Add:Operator
    {
        public override int Calc()
        {
            return this.NumLeft + this.NumRight;
        }
    }

四.创建一个Sub类

 public    class Sub:Operator
    {
        public override int Calc()
        {
            return this.NumLeft - this.NumRight;
        }
    }

五.创建一个Mul类  

public    class Mul:Operator
    {
        public override int Calc()
        {
            return this.NumLeft * this.NumRight;
        }
    }

六.创建一个div类

public   class Div:Operator
    {
   
        public override int Calc()
        {
            int result = 0;
            if (NumLeft == 0)
            {
                throw new Exception("除数不能为0");
            }
            else
            {
                    result=this.NumLeft / this.NumRight;
            }
            return result;
        }
    }

七. 创建一个类似于工厂的类

public     class Factory
    {
    //静态的   返回值类型    参数
    public static Operator cu(string Type)
    {
        Operator oper=null;
        switch (Type)
	{
            case"+":
            oper=new Add();
                break;
                case"-":
            oper=new Sub();
                break;
                case"*":
            oper=new Mul();
                break;
                case"/":
            oper=new Div();
             break;
	}
        return oper;
    }
    }

  

八.在主窗体的结果按钮中添加

  private void btOk_Click(object sender, EventArgs e)
        {

         int num1=Convert.ToInt32(   txtLfet.Text);
         string oper = cb.Text;
         int num2 = Convert.ToInt32(txtRight.Text);
         //04.调用工厂的静态方法,传入类型 ,获取返回值
         Operator part = Factory.cu(oper);
         part.NumLeft = num1;
         part.NumRight = num2;
         int result = 0;
         //05.调用对应父类变量的Calc()完成计算,接收返回值
         try
         {
             result = part.Calc();
         }
         catch (Exception ex)
         {

             MessageBox.Show(ex.Message);
         }
         //06.在Label中显示
         label1.Text = result.ToString();
        }

  

 

  

 

转载于:https://www.cnblogs.com/yejiaojiao/p/5243409.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值