【用C#中方法的重载,求圆面积、长方形面积、三角形面积.】-查字典问答网
分类选择

来自孔令凯的问题

  【用C#中方法的重载,求圆面积、长方形面积、三角形面积.】

  用C#中方法的重载,求圆面积、长方形面积、三角形面积.

1回答
2020-02-06 15:12
我要回答
请先登录
孙建宝

  的思路去设计程序:

  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的文章

2020-02-06 15:15:16

最新问答

推荐文章

猜你喜欢

附近的人在看

推荐阅读

拓展阅读

  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  •