C++ 多态 案例(//多态案例----制作饮品 //描述:煮水 冲泡 倒入杯中 加入辅料)
阅读原文时间:2023年07月09日阅读:1

1 //多态案例----制作饮品
2 //描述:煮水 冲泡 倒入杯中 加入辅料
3
4 #include
5 #include
6 using namespace std;
7
8 class AbstractDriking
9 {
10 public:
11
12 //煮水
13 virtual void Boil() = 0;
14
15 //冲泡
16
17 virtual void Brew() = 0;
18
19 //倒入杯中
20 virtual void PourInCup() = 0;
21
22 //加入辅料
23 virtual void PutSomething() = 0;
24
25 //制作
26 void makerDrink()
27 {
28 Boil();
29 Brew();
30 PourInCup();
31 PutSomething();
32 }
33 };
34
35 //制作咖啡
36 class Coffee :public AbstractDriking
37 {
38 public:
39 //煮水
40 virtual void Boil()
41 {
42 cout << "煮百岁山水" << endl; 43 } 44 45 //冲泡 46 47 virtual void Brew() 48 { 49 cout << "冲泡咖啡" << endl; 50 } 51 52 //倒入杯中 53 virtual void PourInCup() 54 { 55 cout << "倒入咖啡杯" << endl; 56 } 57 58 //加入辅料 59 virtual void PutSomething() 60 { 61 cout << "加入糖 ,牛奶" << endl; 62 } 63 64 }; 65 //制作茶 66 class Tea :public AbstractDriking 67 { 68 public: 69 //煮水 70 virtual void Boil() 71 { 72 cout << "煮农夫山泉水" << endl; 73 } 74 75 //冲泡 76 77 virtual void Brew() 78 { 79 cout << "冲泡茶" << endl; 80 } 81 82 //倒入杯中 83 virtual void PourInCup() 84 { 85 cout << "倒入茶杯" << endl; 86 } 87 88 //加入辅料 89 virtual void PutSomething() 90 { 91 cout << "加入茶叶 ,柠檬" << endl; 92 } 93 94 }; 95 96 //制作函数 97 void doWork(AbstractDriking* abs)// AbstractDriking*abs = new Coffee 98 { 99 abs->makerDrink();
100 delete abs;
101 }
102 void test01()
103 {
104 //制作咖啡
105 cout << "************制作咖啡************" << endl;
106 doWork(new Coffee);
107
108 //制作茶叶
109 cout << "************制作茶************" << endl;
110 doWork(new Tea);
111
112 }
113
114 int main()
115 {
116
117 test01();
118
119
120 system("pause");
121
122 return 0;
123
124 }