Delphi实现计算器——状态机

成品展示:
在这里插入图片描述
方案:

  • 采用状态机和静态工厂模式实现。
    在这里插入图片描述

1.使用工厂方法模式来创建操作对象

定义了一个抽象的操作类TOperation,其中声明了Calculate方法用于执行具体的计算。

然后针对不同的操作(加、减、乘、除、取模)分别创建了具体的操作类,如TAddOperation、TSubOperation等,它们继承自TOperation并实现了Calculate方法。

最后定义了一个工厂类TOperationFactory,根据传入的操作符来创建对应的操作对象。
在这里插入图片描述
在这里插入图片描述

2.使用状态机来管理计算器的不同状态

定义了一个状态枚举类型TCalculatorState,包含输入第一个操作数、输入第二个操作数、显示结果三个状态。

在代码中使用CurrentState变量来记录当前的状态,并在NumberClick、OperatorClick等事件处理方法中根据当前状态来执行相应的操作并更新状态。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

3.更多细节

代码中还考虑了一些细节情况的处理,比如:

连续按两次运算符时,以最后一次为准
除数为0时给出异常提示

支持输入负数
支持退格键删除输入

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值