您的位置:首页 > 文旅 > 美景 > 找文网优化的技术团队_上海做企业网站的公司_99个创意营销方案_成都网站推广哪家专业

找文网优化的技术团队_上海做企业网站的公司_99个创意营销方案_成都网站推广哪家专业

2025/3/15 6:39:46 来源:https://blog.csdn.net/fananang0604/article/details/146080496  浏览:    关键词:找文网优化的技术团队_上海做企业网站的公司_99个创意营销方案_成都网站推广哪家专业
找文网优化的技术团队_上海做企业网站的公司_99个创意营销方案_成都网站推广哪家专业

案例描述:

制作饮品的大致流程为:煮水-冲泡-倒入杯中-加入辅料
利用多态技术实现本案例,提供抽象制作产品基类,提供子类制作咖啡和茶叶

 思路解析:

 1. 定义抽象基类

- 创建 `AbstractDrinking` 抽象类,该类定义了制作饮品的通用接口。

- 包含四个纯虚函数:`Boil()`(煮水)、`Brew()`(冲泡)、`PourInCup()`(倒入杯中)和 `PutSomething()`(加入辅料),这些函数需要在派生类中具体实现。

- 提供一个 `makeDrink()` 成员函数,该函数按顺序调用上述四个纯虚函数,定义了制作饮品的通用流程。

2. 定义具体饮品类

- 定义 `Coffee` 类,继承自 `AbstractDrinking` 抽象类。

- 实现 `Boil()`、`Brew()`、`PourInCup()` 和 `PutSomething()` 四个纯虚函数,具体描述制作咖啡的步骤,如煮开水、冲泡咖啡、倒入杯中、加入糖和牛奶。

- 定义 `Tee` 类(可能拼写有误,应为 `Tea`),同样继承自 `AbstractDrinking` 抽象类。

- 实现 `Boil()`、`Brew()`、`PourInCup()` 和 `PutSomething()` 四个纯虚函数,具体描述制作茶的步骤,如煮开水、冲泡茶叶、倒入杯中、加入柠檬。

3. 定义工作函数

- 定义 `doWork()` 函数,该函数接受一个指向 `AbstractDrinking` 类的指针作为参数。

- 在函数内部调用 `makeDrink()` 函数制作饮品。

- 使用 `delete` 释放动态分配的内存,避免内存泄漏。

4. 定义测试函数

- 定义 `test01()` 函数,用于测试制作咖啡和茶的功能。

- 调用 `doWork()` 函数制作咖啡,并在制作完成后输出分隔线。

- 再次调用 `doWork()` 函数制作茶。

5. 主函数

- 在 `main()` 函数中调用 `test01()` 函数,启动测试流程。

- 返回 0 表示程序正常结束。 通过这种设计,代码实现了制作不同饮品的通用流程,同时利用多态性可以根据传入的具体饮品对象执行相应的制作步骤。

 代码实现:

#include<iostream>
using namespace std; class AbstractDrinking{public://煮水 virtual void Boil() = 0;//冲泡 virtual void Brew() = 0;//倒入杯中virtual void PourInCup() = 0;//加入辅料virtual void PutSomething() = 0; //制作饮品void makeDrink(){Boil();Brew();PourInCup();PutSomething(); } 
};class Coffee :public AbstractDrinking{public://煮水virtual void Boil(){cout << "煮开水" << endl;} //加入辅料virtual void Brew(){cout << "冲泡咖啡" << endl;} //倒入杯中 virtual void PourInCup(){cout << "倒入杯中" << endl;} //加入辅料virtual void PutSomething(){cout << "加入糖和牛奶" << endl;} 
};class Tee :public AbstractDrinking{public://煮水virtual void Boil(){cout << "煮开水" << endl;} //加入辅料virtual void Brew(){cout << "冲泡茶叶" << endl;} //倒入杯中 virtual void PourInCup(){cout << "倒入杯中" << endl;} //加入辅料virtual void PutSomething(){cout << "加入柠檬" << endl;} 
};void doWork(AbstractDrinking * abs){abs->makeDrink();delete abs;
}void test01(){doWork(new Coffee);cout << "-----------------" << endl;doWork(new Tee);
}int main(){test01();return 0;
} 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com