[代码] 角度类的定义与实现文件,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 | } |