C#——定義Circle類

問題描述 

定義一個Circle類,其功能有:

-兩個double類型屬性X和Y,可讀寫圓心座標

-一個double類型屬性Radius,可讀寫圓的半徑

-一個構造方法,以指定的x,y,radius來構造

-一個只讀屬性Area,獲取圓面積

-一個只讀屬性Perimeter,獲取圓周長

-一個方法bool Contains(double x, double y),如果指定的點(x, y)處於本圓內,返回true

-一個方法bool Contains(Circle circle),如果指定的圓circle包含在本圓內,返回true

-一個方法bool Extend(double range, out Circle newCircle),半徑擴大(加上range),輸出擴大後的newCircle,返回true。如果Radius+range爲負,無法擴大,則輸出原來的圓,且返回false。

在一個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)處於本圓內,返回true
        public bool Contains(double x, double y) {
            if ((x - X) * (x - X) + (y - Y)* (y - Y) < Radius * Radius) {
                return true;
            }
            return false;
        }
        //-如果指定的圓circle包含在本圓內,返回true
        public 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);
        }
    }
}

運行結果

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章