c#——ellipse(椭圆)类[继承circle(圆)类][实现icomparable接口、icomparerrt接口]demo -凯发k8官方网
定义一个circle类,其功能有:
1)两个double类型属性x和y,可读写圆心坐标
2)一个double类型属性radius,可读写圆的半径
3)一个构造方法,以指定的x,y,radius来构造
4)一个只读属性area,获取圆面积
5)一个只读属性perimeter,获取圆周长
6)一个方法bool contains(double x, double y),如果指定的点(x, y)处于本圆内,返回true
7)一个方法bool contains(circle circle),如果指定的圆circle包含在本圆内,返回true
8)一个方法bool extend(double range, out circle newcircle),半径扩大(加上range),输出扩大后的newcircle,返回true。如果radius range为负,无法扩大,则输出原来的圆,且返回false。
在一个main方法中对上述功能进行测试
添加一个ellipse(椭圆)类:
1)x, y, majorradius, minorradius属性
2)至少两个ellipse构造方法,一个调用另一个
3)只读属性area
4)实例方法bool contains(double x, double y)
5)实例方法string tostring()
6)让circle类继承ellipse类,将其中的重复代码删去
7)在majorradius, minorradius属性的set访问器中,对value进行检查,如果value<=0,抛出异常(throw new argumentexception("主轴长度不能为负");),并保证majorradius>=minorradius
在一个main方法中对上述功能进行测试
1)circle继承icomparable或icomparable
在比较时,根据圆半径判定两个圆的大小关系。
2)基于ellipse生成一个比较器类,继承icomparer或icomparer
并添加int类型属性comparetype。
在比较时,如果comparetype为0,比较长轴;为1时,比较短轴;为2时,比较面积。
在一个main方法中对上述功能进行测试
在main方法中:
1)利用random类生成至少5个circle,放入arraylist或list
调用sort()方法进行排序,输出排序后的元素。
2)利用random类生成至少5个ellipse,放入arraylist或list
调用sort(icomparer)方法进行排序,输出排序后的元素。
using system; using system.collections.generic; using system.collections; using system.linq; using system.text; using system.threading.tasks;namespace homework {class ellipse{public double x { get; set; }public double y { get; set; }private double _majorradius;public double majorradius{get{return _majorradius;}set{if (value <= 0)return;if (value < _minorradius){_majorradius = _minorradius;_minorradius = value;}else_majorradius = value;}}private double _minorradius;public double minorradius{get{return _minorradius;}set{if (value <= 0)return;if (value > _majorradius){_minorradius = _majorradius;_majorradius = value;}else_minorradius = value;}}public ellipse() : this(0, 0, 2, 1){x = y = 0;majorradius = 2;minorradius = 1;}public ellipse(double x, double y, double major, double minor){x = x;y = y;majorradius = major;minorradius = minor;}public virtual double area{get{return math.pi * majorradius * minorradius;}}public double distanceto(double x, double y){return math.sqrt((x - x) * (x - x) (y - y) * (y - y));}public virtual bool contains(double x, double y){return (x - x) * (x - x) / (majorradius * majorradius) (y - y) * (y - y) / (minorradius * minorradius) < 1;}public override string tostring(){return $"椭圆:圆心在({x}, {y}),主轴半径为{majorradius}, 短轴半径为{minorradius}";}}class ellipsecomparer : icomparerhttps://blog.csdn.net/weixin_43272781/article/details/105176909
https://blog.csdn.net/weixin_43272781/article/details/105292114
总结
以上是凯发k8官方网为你收集整理的c#——ellipse(椭圆)类[继承circle(圆)类][实现icomparable接口、icomparerrt接口]demo的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: c#——实现icomparable接口、
- 下一篇: c#——实现icomparablet 接