c#求问 代码有效必采纳

现开发一款画图形的软件,包括圆形、长方形、正方形、三角形,每个图形都有Display显示函数,Area计算面积函数,Length计算周长函数,都有共同的属性x,y。

请分别用虚函数、抽象类、接口三种方法来实现上述题目要求。父类名Shape

测试过的,没问题可以采纳吗~谢谢

using System;
namespace Shape
{
    #region 虚方法
    /*
    public class Shape
    {
        public double x { get; set; }
        public double y { get; set; }
        public virtual double Area() { throw new Exception("未实现"); }
        public virtual double Length() { throw new Exception("未实现"); }
        public virtual void Display () { throw new Exception("未实现"); }
    }
    public class Circle : Shape
    {
        public override double Area() { return Math.Round(Math.PI * Math.Pow(x, 2), 4); }
        public override double Length() { return Math.Round(2 * x * Math.PI, 4); }
        public override void Display() { Console.WriteLine("半径:" + x + " 面积:" + Area() + " 周长:" + Length()); }
    }
    public class Rectangle : Shape
    {
        public override double Area() { return x * y; }
        public override double Length() { return (x + y) * 2; }
        public override void Display() { Console.WriteLine("x:" + x + " y:" + y + " 面积:" + Area() + " 周长:" + Length()); }
    }
    public class Square : Shape
    {
        public override double Area() { return x * y; }
        public override double Length() { return (x + y) * 2; }
        public override void Display() { Console.WriteLine("x:" + x + " 面积:" + Area() + " 周长:" + Length()); }
    }
    public class Triangle : Shape
    {
        public double z { get; set; }
        public Triangle(double x, double y, double z)
        {
            if (x + y > z && x + z > y && y + z > x)
            {
                this.x = x; this.y = y; this.z = z;
            }
            else throw new Exception(x + "," + y + "," + z + "无法构成三角形!");
        }
        public override double Area()
        {
            double p = (x + y + z) / 2;
            return Math.Round(Math.Sqrt((p * (p - x) * (p - y) * (p - z))), 4);//保留4位小数,保留位数改这里
        }
        public override double Length() { return x + y + z; }
        public override void Display() { Console.WriteLine("x:" + x + " y:" + y + " z:" + z + " 面积:" + Area() + " 周长:" + Length()); }
    }*/
    #endregion
    #region 抽象类
    /*
    public abstract class Shape
    {
        public double x { get; set; }
        public double y { get; set; }
        public abstract double Area();
        public abstract double Length();
        public abstract void Display();
    }
    public class Circle : Shape
    {
        public override double Area() { return Math.Round(Math.PI * Math.Pow(x, 2), 4); }
        public override double Length() { return Math.Round(2 * x * Math.PI, 4); }
        public override void Display() { Console.WriteLine("半径:" + x + " 面积:" + Area() + " 周长:" + Length()); }
    }
    public class Rectangle : Shape
    {
        public override double Area() { return x * y; }
        public override double Length() { return (x + y) * 2; }
        public override void Display() { Console.WriteLine("x:" + x + " y:" + y + " 面积:" + Area() + " 周长:" + Length()); }
    }
    public class Square : Shape
    {
        public override double Area() { return x * y; }
        public override double Length() { return (x + y) * 2; }
        public override void Display() { Console.WriteLine("x:" + x + " 面积:" + Area() + " 周长:" + Length()); }
    }
    public class Triangle : Shape
    {
        public double z { get; set; }
        public Triangle(double x, double y, double z)
        {
            if (x + y > z && x + z > y && y + z > x)
            {
                this.x = x; this.y = y; this.z = z;
            }
            else throw new Exception(x + "," + y + "," + z + "无法构成三角形!");
        }
        public override double Area()
        {
            double p = (x + y + z) / 2;
            return Math.Round(Math.Sqrt((p * (p - x) * (p - y) * (p - z))), 4);//保留4位小数,保留位数改这里
        }
        public override double Length() { return x + y + z; }
        public override void Display() { Console.WriteLine("x:" + x + " y:" + y + " z:" + z + " 面积:" + Area() + " 周长:" + Length()); }
    }*/
    #endregion

    #region 接口

    public interface Shape
    {
        double x { get; set; }
        double y { get; set; }
        double Area();
        double Length();
        void Display();
    }
    public class Circle : Shape
    {
        public double x { get; set; }
        public double y { get; set; }
        public  double Area() { return Math.Round(Math.PI * Math.Pow(x, 2), 4); }
        public  double Length() { return Math.Round(2 * x * Math.PI, 4); }
        public  void Display() { Console.WriteLine("半径:" + x + " 面积:" + Area() + " 周长:" + Length()); }
    }
    public class Rectangle : Shape
    {
        public double x { get; set; }
        public double y { get; set; }
        public  double Area() { return x * y; }
        public  double Length() { return (x + y) * 2; }
        public  void Display() { Console.WriteLine("x:" + x + " y:" + y + " 面积:" + Area() + " 周长:" + Length()); }
    }
    public class Square : Shape
    {
        public double x { get; set; }
        public double y { get; set; }
        public  double Area() { return x * y; }
        public  double Length() { return (x + y) * 2; }
        public  void Display() { Console.WriteLine("x:" + x + " 面积:" + Area() + " 周长:" + Length()); }
    }
    public class Triangle : Shape
    {
        public double x { get; set; }
        public double y { get; set; }
        public double z { get; set; }
        public Triangle(double x, double y, double z)
        {
            if (x + y > z && x + z > y && y + z > x)
            {
                this.x = x; this.y = y; this.z = z;
            }
            else throw new Exception(x + "," + y + "," + z + "无法构成三角形!");
        }
        public  double Area()
        {
            double p = (x + y + z) / 2;
            return Math.Round(Math.Sqrt((p * (p - x) * (p - y) * (p - z))), 4);//保留4位小数,保留位数改这里
        }
        public  double Length() { return x + y + z; }
        public  void Display() { Console.WriteLine("x:" + x + " y:" + y + " z:" + z + " 面积:" + Area() + " 周长:" + Length()); }
    }
    #endregion
    class Program
    {
        static void Main(string[] args)
        {
            new Circle { x = 5 }.Display();
            new Rectangle { x = 4, y = 5 }.Display();
            new Square { x = 5,y= 5 }.Display();
            new Triangle(3, 4, 5).Display();
            Console.ReadKey();
        }
    }
}

 

可以参考这篇文章

 

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632