C# 多态典型练习题

2020-12-03 11:08发布

多态典型练习题:

例题:利用多态实现计算器Calc, 
将加减乘除四则运算看作一种操作,请设计操作抽象类Operation, 
该抽象类有一个Op的方法计算两个整数相应运算,并返回计算结果。 
并派生出四则运算操作类。计算器一个方法Do方法,实现四则运算并绘制整个程序的uml图。

using System;


namespace polymorphic

{

    /* 

     *

     */

    class Program

    {

        static void Main(string[] args)

        {

            Calc c = new Calc();

            Add add = new Add(20, 10);

            Console.WriteLine("结果等于:" + c.Do(add));


            Min min = new Min(20, 10);

            Console.WriteLine("结果等于:" + c.Do(min));


            Mul mul = new Mul(20, 10);

            Console.WriteLine("结果等于:" + c.Do(mul));


            Div div = new Div(20, 10);

            Console.WriteLine("结果等于:" + c.Do(div));


            Console.ReadLine();

        }

    }


    /// <summary>

    /// 抽象类,,一个虚方法,,,

    /// </summary>

    abstract class Operation

        {

            public int _a;

            public int _b;


            public abstract int Op();

        }


          /// <summary>

          /// 加法类

          /// </summary>

        class Add : Operation

        {

            public Add(int a, int b)

            {           

                 this._a = a;   //base._a = a;

                 this._b = b;   //base._b = b;


             }

            public override int Op()

            {

                return _a + _b;

            }

        }

         /// <summary>

         /// 加法类

         /// </summary>

        class Min : Operation

        {

            public Min(int a, int b)

            {

                this._a = a;

                this._b = b;


            }

            public override int Op()

            {

                return _a - _b;

            }

        }

    /// <summary>

    /// 乘法类

    /// </summary>

    class Mul : Operation

    {

        public Mul(int a, int b)

        {

            this._a = a;

            this._b = b;


        }

        public override int Op()

        {

            return _a * _b;

        }

    }


    /// <summary>

    /// 除法类

    /// </summary>

    class Div : Operation

    {

        public Div(int a, int b)

        {

            this._a = a;

            this._b = b;


        }

        public override int Op()

        {

            return _a / _b;

        }

    }



    /// <summary>

    /// 计算器类,,

    /// </summary>

    class Calc

        {

            public int Do(Operation op)

            {

                return op.Op();

            }

        }

    }


类图: 




作者:Czhenya

链接:https://czhenya.blog.csdn.net/article/details/78066690

来源:CSDN
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。