在程序定义抽象基类Cicle,并在Circle类中定义数据成员半径r、圆心位置坐标p(x,y)(p(x,y)为另外一个Point类的对象)以及抽象方法GetArea()和GetVolume()方法。通过该Circle类派生出球体Sphere类和圆柱体Cylinder类以及圆锥体Cone类,在派生类中分别对计算面积方法GetArea()和体积的方法GetVolume()两个抽象方法进行了重写,并通过定义Showlnfo()方法显示基本信息。请通过生成对象的方式测试这个程序完成以下的要求:
要求:(1)通过生成派生类对象的方式,调用类的构造函数完成对象的初始化,具体数据可以由设计者给出.
(2)合理调用GetArea()和GetVolume()方法计算各个派生类对象的面积和体积,并且根据体积的大小排序后调用ShowInfo()方法依次显示输出体积和坐标位置信息。
控制台程序设计题设计一个控制台程序
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 沝林 2021-12-09 12:50关注
using System; using System.Linq; namespace ConsoleApp2 { class Program { static void Main(string[] args) { Circle sphere = new Sphere(2, new Point(1, 1)); Circle cylinder = new Cylinder(2, new Point(3, 3), 3); Circle cone = new Cone(2, new Point(5, 5), 3, 3); Compute(new Circle[] { sphere, cylinder, cone }); Console.ReadLine(); } static void Compute(Circle[] circles) { // 计算 foreach(var item in circles) { item.GetArea(); item.GetVolume(); } // 排序,这里偷了各懒,就没有写算法了 var ordered = circles.OrderBy(t => t.Volumn); foreach (var item in ordered) { item.ShowInfo(); } } } class Sphere : Circle { public Sphere(double r, Point p) : base(r, p) { } public override double GetArea() { return 4 * Math.PI * R * R; } public override void GetVolume() { Volumn = 4 * Math.PI * R * R * R / 3; } } class Cylinder : Circle { public Cylinder(double r, Point p, double h) : base(r, p) { H = h; } public double H { get; set; } public override double GetArea() { return 2 * Math.PI * R * (R + H); } public override void GetVolume() { Volumn = Math.PI * R * R * H; } } class Cone : Circle { public Cone(double r, Point p, double l, double h): base(r, p) { L = l; H = h; } public double L { get; set; } public double H { get; set; } public override double GetArea() { return Math.PI * R * R + Math.PI * R * L; } public override void GetVolume() { Volumn = Math.PI * R * R * H / 3; } } abstract class Circle { public Circle(double r, Point p) { R = r; P = p; } public double R { get; set; } public Point P { get; set; } public double Volumn { get; set; } public abstract double GetArea(); public abstract void GetVolume(); public void ShowInfo() { Console.WriteLine($"{this.GetType().Name}-坐标:({P.X},{P.Y}), 体积:{Volumn}"); } } class Point { public Point(double x, double y) { X = x; Y = y; } public double X { get; set; } public double Y { get; set; } } }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 2无用
悬赏问题
- ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
- ¥20 怎么用dlib库的算法识别小麦病虫害
- ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
- ¥15 java写代码遇到问题,求帮助
- ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
- ¥15 有了解d3和topogram.js库的吗?有偿请教
- ¥100 任意维数的K均值聚类
- ¥15 stamps做sbas-insar,时序沉降图怎么画
- ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
- ¥15 关于#Java#的问题,如何解决?