1 char grade(int score)
2 {
3 if( 0<score && score < 60 )
4 return 'd';
5 else if ( score>=60 && score < 70 )
6 return 'c';
7 else if ( score>=70 && score < 80 )
8 return 'b';
9 else if ( score>=80 && score<=100)
10 return 'a';
11 else
12 return '\0';
13 }
2 {
3 if( 0<score && score < 60 )
4 return 'd';
5 else if ( score>=60 && score < 70 )
6 return 'c';
7 else if ( score>=70 && score < 80 )
8 return 'b';
9 else if ( score>=80 && score<=100)
10 return 'a';
11 else
12 return '\0';
13 }
1 char grade(int score)
2 {
3 int s = score/10;
4 switch(s)
5 {
6 case 0:
7 case 1:
8 case 2:
9 case 3:
10 case 4:
11 case 5:
12 return 'a'
13 case 6:
14 return 'c';
15 case 7:
16 return 'b';
17 case 8:
18 case 9:
19 case 10:
20 return 'a';
21 }
22 return '\0';
23 }
2 {
3 int s = score/10;
4 switch(s)
5 {
6 case 0:
7 case 1:
8 case 2:
9 case 3:
10 case 4:
11 case 5:
12 return 'a'
13 case 6:
14 return 'c';
15 case 7:
16 return 'b';
17 case 8:
18 case 9:
19 case 10:
20 return 'a';
21 }
22 return '\0';
23 }
暂且不论代码是否修改正确,其实代码从一个转入另一个并没有改变多少内涵,都是学C语言太久,受到结构化思想的影响,代码之间的耦合性还是非常的强,代码还可以做下面的修改,虽然代码量增加很多,也复杂了很多,但是如果要在中间嵌入某个功能,相比较而言,会更加方便,同时估计也是很多面试官想要从你那儿得到的东西:
1
class score
2
{
3
public:
4
score(void);
5
public:
6
virtual ~score(void);
7
public:
8
int sc;
9
};
10
11
12
class ScoreHandle
13
{
14
public:
15
virtual char grade(score* s) = 0;
16
17
void nextHandle(ScoreHandle* n)
18
{
19
next = n;
20
}
21
protected:
22
ScoreHandle* next;
23
};
24
25
class NotPass : public ScoreHandle
26
{
27
public:
28
virtual char grade(score* s)
29
{
30
if( s->sc < 60 )
31
return 'd';
32
return next->grade(s);
33
}
34
};
35
36
37
class MidPass : public ScoreHandle
38
{
39
public:
40
virtual char grade(score* s)
41
{
42
if ( s->sc >=60 && s->sc < 70)
43
{
44
return 'c';
45
}
46
return next->grade(s);
47
}
48
};
49
50
class WellPass : public ScoreHandle
51
{
52
public:
53
virtual char grade(score* s)
54
{
55
if ( s->sc>=70 && s->sc<80 )
56
{
57
return 'b';
58
}
59
return next->grade(s);
60
}
61
};
62
63
class GreatPass : public ScoreHandle
64
{
65
public:
66
virtual char grade(score *s)
67
{
68
if ( s->sc>=80 && s->sc<=100 )
69
{
70
return 'a';
71
}
72
return next->grade(s);
73
}
74
};
75
76
class NotExistPass : public ScoreHandle
77
{
78
public:
79
virtual char grade(score* s)
80
{
81
return '\0';
82
}
83
};

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

在你需要测试的前面,做下面的一些初始化工作:
1
ScoreHandle *sh;
2
3
NotPass not;
4
MidPass mid;
5
WellPass well;
6
GreatPass great;
7
NotExistPass notExist;
8
9
not.nextHandle(&mid);
10
mid.nextHandle(&well);
11
well.nextHandle(&great);
12
great.nextHandle(¬Exist);
13
14
sh = ¬

2

3

4

5

6

7

8

9

10

11

12

13

14

后就可以很放心的分级你的分数段了:
1 score s;
2 s.sc = 20;
3 cout << sh->grade(&s) << endl;
4
5 s.sc = 65;
6 cout << sh->grade(&s) << endl;
这个才是OOP的思想。
好了,自己也很好的回顾了一下职责链的基本功能,希望网友也能够理解职责链的功能。
2 s.sc = 20;
3 cout << sh->grade(&s) << endl;
4
5 s.sc = 65;
6 cout << sh->grade(&s) << endl;
这个才是OOP的思想。
好了,自己也很好的回顾了一下职责链的基本功能,希望网友也能够理解职责链的功能。