using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace 综合练习
{
/// <summary>
/// 点的构造函数
/// </summary>
public struct Point
{
public int X;
public int Y;
public Point(int x, int y)
{
this.X = x;
this.Y = y;
}
}
/// <summary>
/// 圆的位置枚举
/// </summary>
public enum Position
{
On,
In,
Out
}
public class Circle
{
private Point center;
private double area;
private double radius = 0;
private static int count = 0;
#region 构造函数
public Circle()
{
radius = 5;
center = new Point(0, 0);
Circle.count++;
}
public Circle(int radius)
{
this.radius = radius;
center = new Point(0, 0);
Circle.count++;
}
public Circle(int radius, Point center)
{
this.radius = radius;
this.center = center;
Circle.count++;
}
public Circle(int radius, int centerX, int centerY)
{
this.radius = radius;
center = new Point(centerX, centerY);
Circle.count++;
}
#endregion
/// <summary>
/// 圆心
/// </summary>
public Point Center
{
get
{
return center;
}
set
{
center = value;
}
}
/// <summary>
/// 圆的面积
/// </summary>
public double Area
{
get
{
return Math.PI * (Math.Pow(radius, 2));
}
}
/// <summary>
/// 圆的半径
/// </summary>
public double Radius
{
get
{
return radius;
}
set
{
if (value < 0)
{
Console.WriteLine("半径错误!");
}
else
{
radius = value;
}
}
}
public static int Count
{
get
{
return count;
}
}
#region 方法
/// <summary>
/// 比较位置
/// </summary>
/// <param name="x"></param>
/// <param name="y"></param>
/// <returns></returns>
public Position GetResult(int x,int y)
{
Position result;
double x1 = Math.Pow((x - center.X), 2);
double x2 = Math.Pow((y - center.Y), 2);
double d = Math.Sqrt(x1 + x2);
if (d > radius)
{
result = Position.Out;
}
else
{
if (d == radius)
{
result = Position.On;
}
else
{
result = Position.In;
}
}
return result;
}
public Position GetResult(Point center)
{
return GetResult(center.X, center.Y);
}
#endregion
}
class Program
{
static void Main(string[] args)
{
Point p1 = new Point(10, 5);
Point p2 = new Point(20,35);
Circle c1 = new Circle(30);
Circle c2 = new Circle(40, p1);
Circle c3 = new Circle(50, 10, 25);
Circle c4 = new Circle();
Console.WriteLine("一共创建圆的实例个数为:{0}",Circle.Count);
Console.WriteLine("------------------------");
Console.WriteLine("半径为{0}的圆形面积为{1}",c1.Radius,c1.Area);
Console.WriteLine("点与圆的位置为{0}",c1.GetResult(p1));
Console.WriteLine("------------------------");
Console.WriteLine("半径为{0}的圆形面积为{1}", c2.Radius, c2.Area);
Console.WriteLine("点与圆的位置为{0}", c2.GetResult(30,50));
Console.WriteLine("------------------------");
Console.WriteLine("半径为{0}的圆形面积为{1}", c3.Radius, c3.Area);
Console.WriteLine("点与圆的位置为{0}", c3.GetResult(p2));
Console.WriteLine("------------------------");
Console.WriteLine("半径为{0}的圆形面积为{1}", c4.Radius, c4.Area);
Console.WriteLine("点与圆的位置为{0}", c4.GetResult(10,10));
}
}
}