[代码] 角度类的定义与实现文件,Angle.h
01 |
#include
<string> |
02 |
using namespace std; |
03 |
const double pi=3.1415926; |
04 |
05 |
class Angle |
06 |
{ |
07 |
public : |
08 |
enum Unit |
09 |
{ |
10 |
degree, |
11 |
radian |
12 |
}; |
13 |
private : |
14 |
double value; |
15 |
Unit
unit; |
16 |
public : |
17 |
Angle( double v=0,Unit
u=degree); |
18 |
double getValue(); |
19 |
Unit
getUnit(); |
20 |
string
getUnitName(); |
21 |
void setValue( double v); |
22 |
void setUnit(Unit
u); |
23 |
void convertTo(Unit
u); |
24 |
}; |
25 |
26 |
Angle::Angle( double v,Unit
u) |
27 |
{ |
28 |
value=v; |
29 |
unit=u; |
30 |
} |
31 |
32 |
double Angle::getValue() |
33 |
{ |
34 |
return value; |
35 |
} |
36 |
37 |
Angle::Unit
Angle::getUnit() |
38 |
{ |
39 |
return unit; |
40 |
} |
41 |
42 |
string
Angle::getUnitName() |
43 |
{ |
44 |
string
result; |
45 |
switch (unit) |
46 |
{ |
47 |
case degree: |
48 |
result= "degree" ; |
49 |
break ; |
50 |
case radian: |
51 |
result= "radian" ; |
52 |
break ; |
53 |
default : |
54 |
result= "wrong,undefined
unit" ; |
55 |
break ; |
56 |
} |
57 |
return result; |
58 |
} |
59 |
60 |
void Angle::setValue( double v) |
61 |
{ |
62 |
value=v; |
63 |
} |
64 |
65 |
void Angle::setUnit(Unit
u) |
66 |
{ |
67 |
unit=u; |
68 |
} |
69 |
70 |
void Angle::convertTo(Unit
u) |
71 |
{ |
72 |
if (unit!=u) |
73 |
{ |
74 |
if (u==Unit::degree) |
75 |
{ |
76 |
value*=180/pi; |
77 |
} |
78 |
else |
79 |
{ |
80 |
value*=pi/180; |
81 |
} |
82 |
} |
83 |
} |
[代码] 测试代码
01 |
#include
<iostream> |
02 |
#include
"Angle.h" |
03 |
using namespace std; |
04 |
05 |
int main() |
06 |
{ |
07 |
Angle
a(180,Angle::degree); |
08 |
cout<<a.getValue()<<endl; |
09 |
a.convertTo(Angle::radian); |
10 |
cout<<a.getValue()<<endl; |
11 |
cout<<a.getUnitName()<<endl; |
12 |
13 |
return 0; |
14 |
} |