C++ 多态 案例(//多态案例----制作饮品 //描述:煮水 冲泡 倒入杯中 加入辅料)

  1 //多态案例----制作饮品
  2 //描述:煮水 冲泡 倒入杯中  加入辅料
  3 
  4 #include <iostream>
  5 #include <string>
  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 }

 

posted on 2021-08-09 09:33  Bytezero!  阅读(44)  评论(0编辑  收藏  举报