C#求解,帮帮忙求解这问题

控制台程序功能:① 为新建项目再添加一个C#代码文件,命名为Rectangle.cs,将以下要求定义的类代码存于该文件;② 定义一个名为Point的类,该类有x、y两个私有字段,用来存储点的横纵坐标值。该类要定义两个属性X、Y,用来读写横纵坐标值。该类要定义两个构造函数,一个无参,课初始化点的坐标为(60.0,75.0),另一个有两个参数,将点坐标设置两个参数值。该类要定义Display方法,用来显示点的坐标,定义SetPoint方法,用来设置点的坐标为指定值。③ 在入口方法中编写实例化一个默认点并显示点的坐标程序,再编写实例化为指定位置点并显示点坐标程序,再编写修改点坐标并显示点坐标程序。以验证前面点类定义的各个功能;④ 继续定义由点类派生类Line,该类要有两个私有数据成员,存储线段的两个端点。还要定义属性,用来读写两个端点。还要适当定义构造函数,以适应各种情况线段的实例化。还要定义计算线段长度的方法若干个重载,以适应各种已知情况的计算;⑤ 在入口方法中编写验证Line类各个功能的程序;⑥ 继续定义由线类派生类Rectangle,同样要有数据成员(长边、短边)、属性、构造函数、计算矩形周长和面积的方法,构造函数和方法应该有重载;⑦ 也应该在入口方法中编写验证矩形类功能的程序。

大概写了一下,不完全正确,有一些特殊情况判断可以结合异常加上去。

类Point:


public class Point
    {
        private float x, y;

        public Point()
        {
            x = 60.0f;
            y = 75.0f;
        }

        public Point(float x, float y)
        {
            this.x = x;
            this.y = y;
        }

        public float X
        {
            get { return x; }
            set { x = value; }
        }

        public float Y
        {
            get { return y; }
            set { y = value; }
        }

        public string Display()
        {
            return "(" + x + "," + y + ")";
        }

        public void SetPoint(float x,float y)
        {
            X = x;
            Y = y;
        }
    }

类Line:

public class Line : Point
    {
        private Point endPoint1, endPoint2;

        public Line()
        {
            endPoint1 = new Point(0.0f, 0.0f);
            endPoint2 = new Point(0.0f, 0.0f);
        }

        public Line(Point endPoint1, Point endPoint2)
        {
            this.endPoint1 = endPoint1;
            this.endPoint2 = endPoint2;
        }

        public double Length()
        {
            return Math.Sqrt(Math.Pow(this.endPoint1.X - this.endPoint2.X, 2) + Math.Pow(this.endPoint1.Y - this.endPoint2.Y, 2));
        }

        public Point EndPoint1
        {
            get { return endPoint1; }
            set { endPoint1 = value; }
        }

        public Point EndPoint2
        {
            get { return endPoint2; }
            set { endPoint2 = value; }
        }
    }

类Rectangle :

public class Rectangle : Line
    {
        private Line width, height;

        public Rectangle()
        {

        }

        public Rectangle(Line width, Line height)
        {
            this.width = width;
            this.height = height;
        }

        public Line Width
        {
            get { return width; }
            set { width = value; }
        }

        public Line Height
        {
            get { return height; }
            set { height = value; }
        }

        /// <summary>
        /// 周长
        /// </summary>
        /// <returns></returns>
        public double Perimeter()
        {
            return 2 * (Height.Length() + Width.Length());
        }

        /// <summary>
        /// 面积
        /// </summary>
        /// <returns></returns>
        public double Area()
        {
            return Height.Length() * Width.Length();
        }
    }

Main方法测试:

static void Main(string[] args)
        {
            //点 测试方法
            Point p = new Point(1.23f,4.56f);
            string result = p.Display();
            Console.WriteLine(result);

            p.SetPoint(3.21f,6.54f);
            result = p.Display();
            Console.WriteLine(result);


            //线 测试方法
            Point p1 = new Point(1.23f, 4.56f);
            Point p2 = new Point(3.23f, 4.56f);
            Line line = new Line(p1,p2);
            double length = line.Length(); //2
            Console.WriteLine(length);

            //面 测试方法
            Line line1 = new Line(p1, p2);
            Line line2 = new Line(p1, p2);
            Rectangle rectangle = new Rectangle(line1, line2);
            double area = rectangle.Area();
            double perimeter = rectangle.Perimeter();

            Console.WriteLine(area);
            Console.WriteLine(perimeter);
        }