C# 多态典型练习题

来源:互联网 发布:半岛雪人 mac 编辑:程序博客网 时间:2024/06/15 20:25

多态典型练习题:

例题:利用多态实现计算器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();            }        }    }

类图:
类图

原创粉丝点击