用C#中方法的重载,求圆面积、长方形面积、三角形面积.
题目
用C#中方法的重载,求圆面积、长方形面积、三角形面积.
答案
的思路去设计程序:
1,定义一个抽象类或者接口,表示图形,其中包含2个方法:求面积和求周长
2,定义具体类实现这个接口或继承这个抽象类,实现其中定义的函数.
3,调用的时候,定义这个接口类型或抽象类对象,然后根据实例化的不同子类,来调用不同的方法,——即类的多态性.
比如,我下面用接口来实现:
interface IDraw
{
float Area();
float Round();
}
class Square :IDraw
{
private float _x;
public Square(float x)
public float Area()
public float Round()
}
class Rectangle :IDraw
{
private float _x,_y;
public Rectangle(float x,float y)
public float Area()
public float Round()
}
class Triangle :IDraw
{
// 类似上面的定义
}
void Main()
{
IDraw draw;
draw = new Square(5);
draw.Area(); // 计算正方形面积
draw = new Rectangle(5,10);
draw.Area(); // 计算长方形面积
draw = new Triangle(5,10);
draw.Area(); // 计算三角形面积
}
多态性的好处很明显,方便以后扩充功能,且不影响原有的功能,你再加入椭圆形,菱形等,都只要定义新的类实现IDraw即可.
在调用方也实现了统一的接口,不管什么图形,都是用Area()和Round()去算面积和周长.
另外,如果再进一步考虑增强调用方的可维护性,可以使用设计模式IOC/DI,也就是控制反转/依赖注入,在配置文件中配置当前需要实例化的类,然后使用反射加载对应的类,实例化对象,并调用其方法.
关于涉及模式DI,请参考martin.fowler的文章
举一反三
已知函数f(x)=x,g(x)=alnx,a∈R.若曲线y=f(x)与曲线y=g(x)相交,且在交点处有相同的切线,求a的值和该切线方程.
我想写一篇关于奥巴马的演讲的文章,写哪一篇好呢?为什么好
最新试题
- 大雪之后为什么显得万籁俱寂?
- 趣味填成语(一)+( )+( )+( )+( )+( )+( )+( )+( )=40 心干头平湖上牛全
- 北京初二上半学期数学习题
- listen carefully 和 listen to me carefully
- 哥哥打工领得工资1440元,有100元、50元、10元,共20张.问有100元、50元、10元各多少张
- 已知关于x,y的方程组x+2y=2m+l,x-2y=4m-3的解是一对正数,化简3m的绝对值加m-2的绝对值
- No more walking round walk
- 编者的话100字,作文是名字是《作文收藏夹》
- 若正实数a,b,c满足a+b=ab,a+b+c=abc,则c的最大值是_____
- 春天,天上( ) 地下( ) 树上( ),到处( )句子补充完整
热门考点
- 多少克碘酸钾中含碘元素0.5mg?
- 化学几种化肥的含氮量是什么?
- 4个人玩跳棋,用转盘来决定由谁先走,请你设计一个公平的游戏规则.
- 《蒙娜丽莎》是世界上最杰出的肖像画.缩句怎么缩?
- 请看这幅图画 用英语怎么说
- 一上端封闭的玻璃管,开口向下竖直插在水银槽里,此时封在管内的气体密度为a1,管内水银柱长为h1,所产生的压强为p1,现保持槽内水银面外玻璃管长度L不变,而将管向右倾斜一定角度,待再度平衡,里面气体密度
- 有一块蛋糕,爷爷吃了的5份之一,奶奶吃了10份之1,小林吃了10份之3,爷爷,奶奶,小林谁吃得多,谁吃得最少?
- a的平方加b的平方等于多少、
- 了却君王天下事 赢得生前身后名 啥意思?
- 乘法公式题目!