c#——ellipse(椭圆)类[继承ellipse(椭圆)类重构circle(圆)类] -尊龙游戏旗舰厅官网
定义一个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方法中对上述功能进行测试
using system;namespace homework1 {//定义一个circle类,其功能有class circle{//-两个double类型属性x和y,可读写圆心坐标public double x{set;get;}public double y{set;get;}//-一个double类型属性radius,可读写圆的半径public double radius {set;get;}//-一个构造方法,以指定的x,y,radius来构造public circle(double x, double y, double radius) {this.x = x;this.y = y;this.radius = radius;}//-一个只读属性area,获取圆面积public double area {get {return radius * radius * 3.1415926;}}//-一个只读属性perimeter,获取圆周长public double perimeter{get { return 2 * radius * 3.1415926;}}//-如果指定的点(x, y)处于本圆内,返回truepublic bool contains(double x, double y) {if ((x - x) * (x - x) (y - y)* (y - y) < radius * radius) {return true;}return false;}//-如果指定的圆circle包含在本圆内,返回truepublic bool contains(circle circle) {if (radius>circle.radius && (radius - circle.radius) * (radius - circle.radius) > (circle.x - x) * (circle.x - x) (circle.y - y) * (circle.y - y)){return true;}return false;}//-半径扩大(加上range),输出扩大后的newcircle,返回true。如果radius range为负,无法扩大,则输出原来的圆,且返回false。public bool extend(double range, out circle newcircle) {newcircle = this;if (newcircle.radius range > 0) {newcircle.radius = newcircle.radius range;return true;}return false;}}class program{static void main(string[] args){circle circle = new circle(1,1,3);console.writeline("面积:{0}\t周长:{1}",circle.area, circle.perimeter);console.writeline("(2,2)在本圆内:{0}", circle.contains(2,2));console.writeline("circle(1,1,1)在本圆内:{0}", circle.contains(new circle(1,1,1)));circle.extend(2,out circle);console.writeline("面积:{0}\t周长:{1}", circle.area, circle.perimeter);}} } using system; using system.collections.generic; using system.linq; using system.text; using system.threading.tasks;namespace homework4 {/*** 添加一个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*/class ellipse {//-两个double类型属性x和y,可读写圆心坐标public double x{set;get;}public double y{set;get;}private double majorradius {set;get;}private double minorradius{set;get;}public double majorradius {set {if (value < 0) {throw new argumentexception("主轴长度不能为负");}majorradius = value;}get {return majorradius;}}public double minorradius{set{if (value > majorradius){throw new argumentexception("主轴长度不能为负");}minorradius = value;}get{return minorradius;}}//一个只读属性area,获取椭圆面积public double area {get { return x * y * math.pi; }}public ellipse():this(1,2) {}public ellipse(double x,double y) { }//-如果指定的点(x, y)处于椭圆内,返回truepublic bool contains(double x, double y) {if ((x - x) * (x - x) * minorradius * minorradius (y - y) * (y - y) * majorradius * majorradius < majorradius * majorradius * minorradius * minorradius){return true;}return false;}public string tostring() { return "ellipse{" "x: " x " " "y: " y " " "majorradius: " majorradius " " "minorradius: " minorradius " " "}";}}class circle:ellipse{//-一个double类型属性radius,可读写圆的半径public double radius{set {minorradius = majorradius = value;}get { return majorradius; }}//-一个构造方法,以指定的x,y,radius来构造public circle(double x, double y, double radius){this.x = x;this.y = y;this.radius = radius;}//-//-一个只读属性perimeter,获取圆周长public double perimeter{get{return 2 * radius * math.pi;}}//-如果指定的圆circle包含在本圆内,返回truepublic bool contains(circle circle){if (radius > circle.radius&& (radius - circle.radius) * (radius - circle.radius) > (circle.x - x) * (circle.x - x) (circle.y - y) * (circle.y - y)){return true;}return false;}//-半径扩大(加上range),输出扩大后的newcircle,返回true。如果radius range为负,无法扩大,则输出原来的圆,且返回false。public bool extend(double range, out circle newcircle){newcircle = this;if (newcircle.radius range > 0){newcircle.radius = newcircle.radius range;return true;}return false;}public string tostring(){return "circle{" "x: " x " " "y: " y " " "radius: " radius " " "}";}}class program{static void main(string[] args){circle circle = new circle(1, 1, 3);console.writeline("面积:{0}\t周长:{1}", circle.area, circle.perimeter);console.writeline("(2,2)在本圆内:{0}", circle.contains(2, 2));console.writeline("circle(1,1,1)在本圆内:{0}", circle.contains(new circle(1, 1, 1)));circle.extend(2, out circle);console.writeline(circle.tostring());console.writeline("面积:{0}\t周长:{1}", circle.area, circle.perimeter);}} }
https://blog.csdn.net/pengpengblog/article/details/53213454
https://shentuzhigang.blog.csdn.net/article/details/104880342
与50位技术专家面对面20年技术见证,附赠技术全景图总结
以上是尊龙游戏旗舰厅官网为你收集整理的c#——ellipse(椭圆)类[继承ellipse(椭圆)类重构circle(圆)类]的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇:
- 下一篇: c#——继承[模拟server类]初始化