在这个Java案例中,我们模拟了一个自动售货机的工作流程。主要涉及了四个类:`Construct`、`AutoSaleMachine`、`Product` 和 `Calculate`。下面分别详细讲解这些类的功能和实现。
1. `Construct` 类:
这个类主要用于显示饮料种类和可接受的货币类型。`drinksType()` 方法列出了三种饮料(可乐、橙汁和绿茶)及其价格,`moneyType()` 方法则列出了五种面值的硬币(10、50、100、500、1000日元)。这两个方法是为用户提供界面信息,帮助他们进行选择和支付。
2. `AutoSaleMachine` 类:
这个类是整个程序的入口点,通过`main`方法运行。首先创建了一个`Construct`对象`cons`,调用`drinksType()`方法显示饮料列表,然后让用户输入选择的饮料编号,并通过`Product`类处理用户的选购。
3. `Product` 类:
`Product`类负责处理用户的选择。它有一个`Pro`方法,根据用户输入的饮料编号(Id)来确定用户选择了哪种饮料,然后调用`Construct`对象的`moneyType()`方法告知用户需要投入的货币面值,并调用`Calculate`类的`Cal`方法来进行金额计算。
4. `Calculate` 类:
`Calculate`类用于处理用户投入的硬币和找零计算。它有两个成员变量:`backPay`表示找零金额,`totalPay`表示用户投入的总金额。`Cal`方法接收用户选择的饮料价格,然后让用户输入投入的硬币总额。接着,通过`BaseCalculate`类的`Equal`方法来处理金额是否等于饮料价格的情况。
在`Calculate`类中,如果用户投入的金额正好等于饮料价格,则调用`BaseCalculate`类的`Equal`方法。如果用户投入的金额多于饮料价格,那么需要进行找零计算。这部分逻辑可能未在给出的代码中完整展示,但通常会涉及到判断和计算找零的过程。
总结来说,这个Java案例展示了如何使用面向对象编程设计一个简单的自动售货机模型。通过不同的类来模拟现实世界中的实体(饮料、货币、计算和售货机),每个类都有其特定的职责,体现了面向对象设计的“单一职责原则”。此外,通过类和方法的交互,实现了用户选择商品、支付和找零的基本功能。虽然案例中没有包含完整的找零逻辑,但它提供了一个很好的基础,可以在此基础上扩展实现更复杂的自动售货机功能。