【用C#中方法的重载,求圆面积、长方形面积、三角形面积.】
用C#中方法的重载,求圆面积、长方形面积、三角形面积.
【用C#中方法的重载,求圆面积、长方形面积、三角形面积.】
用C#中方法的重载,求圆面积、长方形面积、三角形面积.
的思路去设计程序:
1,定义一个抽象类或者接口,表示图形,其中包含2个方法:求面积和求周长
2,定义具体类实现这个接口或继承这个抽象类,实现其中定义的函数.
3,调用的时候,定义这个接口类型或抽象类对象,然后根据实例化的不同子类,来调用不同的方法,——即类的多态性.
比如,我下面用接口来实现:
interfaceIDraw
{
floatArea();
floatRound();
}
classSquare:IDraw
{
privatefloat_x;
publicSquare(floatx)
publicfloatArea()
publicfloatRound()
}
classRectangle:IDraw
{
privatefloat_x,_y;
publicRectangle(floatx,floaty)
publicfloatArea()
publicfloatRound()
}
classTriangle:IDraw
{
//类似上面的定义
}
voidMain()
{
IDrawdraw;
draw=newSquare(5);
draw.Area();//计算正方形面积
draw=newRectangle(5,10);
draw.Area();//计算长方形面积
draw=newTriangle(5,10);
draw.Area();//计算三角形面积
}
多态性的好处很明显,方便以后扩充功能,且不影响原有的功能,你再加入椭圆形,菱形等,都只要定义新的类实现IDraw即可.
在调用方也实现了统一的接口,不管什么图形,都是用Area()和Round()去算面积和周长.
另外,如果再进一步考虑增强调用方的可维护性,可以使用设计模式IOC/DI,也就是控制反转/依赖注入,在配置文件中配置当前需要实例化的类,然后使用反射加载对应的类,实例化对象,并调用其方法.
关于涉及模式DI,请参考martin.fowler的文章