多态典型练习题:
例题:利用多态实现计算器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
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。