4、完成一个图形设计软件类的开发,在Shape-Point-Cirlce-Cylinder的继承形式,类的继承关系可以表示如下图,使用抽象类和多态特征计算圆面积的方法与计算圆柱体的表面积的方法,计算方法是不相同的,但都可以通过Area( )方法进行计算,不同对象的Area( )方法是不相同的,但对于调用者来说,使用很方便(既可以用派生类调用Area( )方法,也可以用基类调用Area( )方法);
给应用程序添加一个圆锥体类(Cone),该类继承自Circle类,并具有Height属性,并重载基类的Area和Volume方法,测试类的多态性。
using System; using System.Collections.Generic; using System.Linq; using System.Text; //完成一个图形设计软件类的开发,在Shape-Point-Cirlce-Cylinder的继承形式, //类的继承关系可以表示如下图,使用抽象类和多态特征计 //算圆面积的方法与计算圆柱体的表面积的方法,计算方法是不相同的, //但都可以通过Area( )方法进行计算,不同对象的Area( )方法是不相同的, //但对于调用者来说,使用很方便(既可以用派生类调用Area( )方法,也可以用基类调用Area( )方法); //给应用程序添加一个圆锥体类(Cone),该类继承自Circle类, //并具有Height属性,并重载基类的Area和Volume方法,测试类的多态性。 namespace ShapeDesinger { class Shape{ public virtual void Area(){ } public virtual void Volume(){ } public virtual void getName(){ } } class Point:Shape{ public int x; public int y; public string shapeName; public string ShapeName{ set { shapeName = value; } get { return shapeName; } } public int X{ set{ x = value; } get{ return x; } } public int Y { set { y = value; } get { return y; } } public Point() { } public Point(int x, int y,string shapeName) { this.x = x; this.y = y; this.shapeName = shapeName; } public override void Area() { Console.WriteLine("点的面积为0!"); } public override void Volume() { Console.WriteLine("点的面积为0!"); } public override void getName(){ Console.WriteLine("你所操作的图形对象是:{0}",shapeName); } public virtual void ToString(){ } } class Circle:Point { public double radius; public double Radius{ set { radius = value; } get { return radius; } } public Circle(){ } public Circle(double radius){ this.radius = radius; } public Circle(double radius,string shapeName){ this.radius = radius; this.shapeName = shapeName; } public void getRadius() { Console.WriteLine("圆的半径为:{0}",radius); } public override void Area() { Console.WriteLine("圆的面积为:{0}",2*3.14*radius); } public override void Volume() { Console.WriteLine("圆的体积为:0"); } public override void getName() { Console.WriteLine("你所操作的图形对象是:{0}", shapeName); } public override void ToString() { } } class Cylinder:Circle { public double height; public double Height { set { height = value; } get { return height; } } public Cylinder(){ } public Cylinder(double radius,double height,string shapeName){ this.radius = radius; this.height = height; this.shapeName = shapeName; } public void getHeight() { Console.WriteLine("圆柱的高为:{0}",height); } public override void Area() { Console.WriteLine("圆柱的面积为:{0}",3.14*radius*radius*2+2*3.14*radius*height); } public override void Volume() { Console.WriteLine("圆柱的体积为:{0}",3.14*radius*radius*height); } public override void getName() { Console.WriteLine("你所操作的图形对象是:{0}", shapeName); } public override void ToString() { } } class Cone:Circle{ public double height; public double Height { set { height = value; } get { return height; } } public Cone(){ } public Cone(double radius,double height,string shapeName){ this.radius = radius; this.height = height; this.shapeName = shapeName; } public override void Area() { Console.WriteLine("圆锥面积为:功能维护中,抱歉!"); } public override void Volume() { Console.WriteLine("圆锥体积为:{0}", 3.14 * radius * radius * height); } public override void getName(){ Console.WriteLine("你所操作的图形对象是:{0}", shapeName); } } class Rectengle:Point{ public double length; public double width; public double Length { set { length = value; } get { return length; } } public double Width { set { width = value; } get { return width; } } public void getLength(){ } public void getWidth(){ } public override void Area() { } public override void Volume() { } public override void getName() { } public override void ToString() { } } class Cube : Rectengle { public double height; public double Height{ set { height = value; } get { return height; } } public void getHeight(){ } public override void Area() { } public override void Volume() { } public override void getName() { } public override void ToString() { } } class Program { static void Main(string[] args) { Console.WriteLine("=================================="); Console.WriteLine("欢迎使用图形操作系统"); Console.WriteLine("=================================="); bool b = true; while (b) { Console.Write("请输入你要操作的对象{0:操作对象,1:对点的操作,2:对圆的操作,3:圆柱,4:圆锥,5:矩形,6:四棱柱}-->"); switch (Console.ReadLine()) { case "0"://操作图形 Console.WriteLine("功能暂未开放!抱歉!请重新选择····"); break; case "1"://点 Console.WriteLine("请输入点的横坐标,纵坐标,以及操作形状:"); Point p = new Point(int.Parse(Console.ReadLine()), int.Parse(Console.ReadLine()), Console.ReadLine()); p.getName(); p.Area(); p.Volume(); break; case "2"://圆 Console.WriteLine("请输入圆的半径,以及操作形状:"); Circle c = new Circle(int.Parse(Console.ReadLine()), Console.ReadLine()); c.getName(); c.getRadius(); c.Area(); c.Volume(); break; case "3"://圆柱 Console.WriteLine("请输入圆柱的半径,高,以及操作形状:"); Cylinder cy = new Cylinder(double.Parse(Console.ReadLine()), double.Parse(Console.ReadLine()), Console.ReadLine()); cy.getName(); cy.getHeight(); cy.Area(); cy.Volume(); break; case "4"://圆锥 Console.WriteLine("请输入操作图形的半径,高,以及操作形状:"); Cone cone = new Cone(double.Parse(Console.ReadLine()),double.Parse(Console.ReadLine()),Console.ReadLine()); cone.getName(); cone.Area(); cone.Volume(); break; case "5": Console.WriteLine("功能暂未开放!抱歉!请重新选择····"); break; case "6"://柱体 Console.WriteLine("功能暂未开放!抱歉!请重新选择····"); break; default: b = false; Console.WriteLine("退出图形操作系统!"); break; } } } } }
运行结果:
Nearth===019/c#类和对象, 继承(练习题4)
最新推荐文章于 2023-09-04 18:16:48 发布