HM139 制作饮品四步模板

HM139 制作饮品四步模板

HM139 制作饮品四步模板

来源: 第 139 集 类和对象-多态-案例2-制作饮品

难度: 入门

时间限制: 1s

空间限制: 64MB

题目描述

冲咖啡和泡茶的大流程一样:先煮水,再冲泡,再倒入杯中,最后加辅料。请用多态做成「同一接口、多种饮品」。

先写抽象饮品类 AbstractDrinking,四个步骤都做成**纯虚函数**,父类里不写具体实现:

  • boil():煮水
  • brew():冲泡
  • pourInCup():倒入杯中
  • putSomething():加辅料

再在抽象类里提供普通函数 makeDrink()(不是纯虚),内部按固定顺序调用上述四步。这就是制作模板:接口相同,具体内容由子类重写。子类必须重写全部纯虚函数,否则自己也是抽象类,不能实例化。

两个具体子类:

  • Coffee煮农夫山泉冲泡咖啡倒入杯中加糖和牛奶
  • Tea煮矿泉水冲泡茶叶倒入杯中加枸杞

另写 doWork,参数是抽象类指针。内部调用 makeDrink(),用完后 delete 该指针(堆上数据要手动开辟、手动释放,防止泄露)。制作咖啡就传入 new Coffee,制作茶就传入 new Tea:父类指针指向子类对象,同一个 makeDrink 走出不同流程。以后再加别的饮品,不必改抽象类和已有子类,往后扩展即可。

读入若干饮品。每一种必须经 doWork -> makeDrink 四步输出,不能按名称直接拼四行。

输入格式

第一行一个整数 \(n\)(\(1 \le n \le 100\))。

接下来 \(n\) 行,每行一个单词 COFFEETEA

输出格式

对每种饮品输出恰好四行(makeDrink 的四步),行末换行。相邻两种饮品之间没有空行。

样例

输入 #1

2
COFFEE
TEA

输出 #1

煮农夫山泉
冲泡咖啡
倒入杯中
加糖和牛奶
煮矿泉水
冲泡茶叶
倒入杯中
加枸杞

输入 #2

1
TEA

输出 #2

煮矿泉水
冲泡茶叶
倒入杯中
加枸杞

说明

  • 四步顺序不能乱:煮水、冲泡、倒杯、加辅料。
  • makeDrink 写在父类里即可,子类只负责重写四步细节。
  • doWork 用完指针必须释放。

信息

ID
1138
难度
(无)
分类
(无)
标签
(无)
递交数
0
已通过
0
通过率
?
上传者