1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5
6 namespace Task
7 {
8 /// <summary>
9 /// 当值只有固定几种情况时使用枚举
10 /// </summary>
11 public enum 位置
12 {
13 在圆上,
14 在圆内,
15 在圆外
16 }
17
18 public class 圆
19 {
20 private static int _Count = 0;
21
22 public static int Count
23 {
24 get { return 圆._Count; }
25 }
26
27
28 private int _半径;
29
30 public int 半径
31 {
32 get { return _半径; }
33 set
34 {
35 if (value < 0)
36 {
37 Console.WriteLine("您输入的半径小于0");
38 }
39 else
40 {
41 _半径 = value;
42 }
43 }
44 }
45
46 /// <summary>
47 /// 属性是数据,可在里面直接写计算表达式
48 /// </summary>
49 public double 面积
50 {
51 get
52 {
53 return Math.PI * Math.Pow(_半径, 2);
54 }
55 }
56
57 /// <summary>
58 /// 此处使用点类型,体现抽像思想
59 /// </summary>
60
61 public 点 圆心;
62
63 /// <summary>
64 /// 以下构造函数使用This关键字,主要体现代码重用
65 /// </summary>
66 public 圆():this(10)
67 {
68
69 }
70
71 public 圆(int 半径):this(半径,new 点())
72 {
73
74 }
75
76 public 圆(int 半径,点 圆心):this(半径,圆心.x坐标,圆心.y坐标)
77 {
78
79 }
80
81 public 圆(int 半径, int 圆心X, int 圆心Y)
82 {
83 this._半径 = 半径;
84 this.圆心 = new 点(圆心X, 圆心Y);
85 圆._Count++;
86 }
87
88 public 位置 比较(int x, int y)
89 {
90 位置 result = 位置.在圆上;
91 double a2 = Math.Pow(圆心.x坐标 - x, 2);
92 double b2 = Math.Pow(圆心.y坐标 - y, 2);
93
94 double c2 = a2 + b2;
95 double c = Math.Sqrt(c2);
96
97 if (c > _半径)
98 {
99 result = 位置.在圆外;
100 }
101 else
102 {
103 result = 位置.在圆内;
104 }
105 return result;
106 }
107
108 /// <summary>
109 /// 高度重用,直接调用上一个方法
110 /// </summary>
111 /// <param name="圆心"></param>
112 /// <returns></returns>
113 public 位置 比较(点 点)
114 {
115 return 比较(点.x坐标, 点.y坐标);
116 }
117 }
118
119 /// <summary>
120 /// 点是轻量级的类
121 /// </summary>
122 public struct 点
123 {
124 public int x坐标;
125 public int y坐标;
126
127 public 点(int x,int y)
128 {
129 this.x坐标 = x;
130 this.y坐标 = y;
131 }
132 }
133
134 class Program
135 {
136 static void Main(string[] args)
137 {
138
139 }
140 }
141 }
142
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Text;
5
6 namespace Task
7 {
8 /// <summary>
9 /// 当值只有固定几种情况时使用枚举
10 /// </summary>
11 public enum 位置
12 {
13 在圆上,
14 在圆内,
15 在圆外
16 }
17
18 public class 圆
19 {
20 private static int _Count = 0;
21
22 public static int Count
23 {
24 get { return 圆._Count; }
25 }
26
27
28 private int _半径;
29
30 public int 半径
31 {
32 get { return _半径; }
33 set
34 {
35 if (value < 0)
36 {
37 Console.WriteLine("您输入的半径小于0");
38 }
39 else
40 {
41 _半径 = value;
42 }
43 }
44 }
45
46 /// <summary>
47 /// 属性是数据,可在里面直接写计算表达式
48 /// </summary>
49 public double 面积
50 {
51 get
52 {
53 return Math.PI * Math.Pow(_半径, 2);
54 }
55 }
56
57 /// <summary>
58 /// 此处使用点类型,体现抽像思想
59 /// </summary>
60
61 public 点 圆心;
62
63 /// <summary>
64 /// 以下构造函数使用This关键字,主要体现代码重用
65 /// </summary>
66 public 圆():this(10)
67 {
68
69 }
70
71 public 圆(int 半径):this(半径,new 点())
72 {
73
74 }
75
76 public 圆(int 半径,点 圆心):this(半径,圆心.x坐标,圆心.y坐标)
77 {
78
79 }
80
81 public 圆(int 半径, int 圆心X, int 圆心Y)
82 {
83 this._半径 = 半径;
84 this.圆心 = new 点(圆心X, 圆心Y);
85 圆._Count++;
86 }
87
88 public 位置 比较(int x, int y)
89 {
90 位置 result = 位置.在圆上;
91 double a2 = Math.Pow(圆心.x坐标 - x, 2);
92 double b2 = Math.Pow(圆心.y坐标 - y, 2);
93
94 double c2 = a2 + b2;
95 double c = Math.Sqrt(c2);
96
97 if (c > _半径)
98 {
99 result = 位置.在圆外;
100 }
101 else
102 {
103 result = 位置.在圆内;
104 }
105 return result;
106 }
107
108 /// <summary>
109 /// 高度重用,直接调用上一个方法
110 /// </summary>
111 /// <param name="圆心"></param>
112 /// <returns></returns>
113 public 位置 比较(点 点)
114 {
115 return 比较(点.x坐标, 点.y坐标);
116 }
117 }
118
119 /// <summary>
120 /// 点是轻量级的类
121 /// </summary>
122 public struct 点
123 {
124 public int x坐标;
125 public int y坐标;
126
127 public 点(int x,int y)
128 {
129 this.x坐标 = x;
130 this.y坐标 = y;
131 }
132 }
133
134 class Program
135 {
136 static void Main(string[] args)
137 {
138
139 }
140 }
141 }
142