Delphi实现计算器——状态机

news/2024/9/29 16:14:26 标签: Delphi

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

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

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

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

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

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

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

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

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

3.更多细节

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

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

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


http://www.niftyadmin.cn/n/5683333.html

相关文章

[网络]NAT、代理服务、内网穿透、内网打洞

目录 一、NAT 1.1 NAT 技术背景 1.2 NAT IP 转换过程 1.3 NAPT(Network Address Port Translation) 1.地址转换表 2. NAPT(网络地址端口转换Network Address Port Translation) 3. NAT技术的缺陷 二、代理服务器 2.1 正向…

【工具分享】Avaddon勒索病毒解密工具

前言 Avaddon 勒索软件的第一次已知攻击是在 2020 年 2 月。Avaddon 使用使用C语言进行编写,采用RSA-2048和AES-256加密算法对文件进行加密,将扩展名加密成 .avdn ,并使用 TOR 支付站点支付赎金,并从 2020 年 6 月开始作为 RaaS&…

PDF对话RAG应用开发实战

与大型 PDF 对话很酷。你可以与笔记、书籍和文档等聊天。这篇博文将帮助你构建一个基于 Multi RAG Streamlit 的 Web 应用程序,以通过对话式 AI 聊天机器人读取、处理和与 PDF 数据交互。以下是此应用程序工作原理的分步分解,使用简单的语言易于理解。 N…

uniapp自定义底部tabBar

使用场景&#xff1a;在一个非tabbar页面&#xff0c;想要有底部导航效果&#xff0c;故自定义效果&#xff0c;系统原底部导航栏仍在正常使用 效果&#xff1a; 布局&#xff1a; <template><view class"tab-bar" :style"{height: height px}"…

探索存内计算的未来,高能效内存计算实训专场有感~

写在前面&#xff0c;首先感谢活动方&#xff1a;存内计算开发者社区的邀请来参加本次探索存内计算的未来&#xff0c;高能效内存计算实训专场。下面我给大家分享一下本次的活动实操感受&#x1f600;。 活动议程 本次活动邀请存内技术专家李阳老师分享存内计算是什么&#xf…

旭升集团携手纷享销客,构建全方位客户关系管理平台

宁波旭升集团股份有限公司&#xff08;以下简称“旭升集团”&#xff09;自2003年成立&#xff0c;总部位于中国宁波&#xff0c;集团设有压铸、锻造、挤压、集成四大事业部&#xff0c;在亚洲、欧洲、美洲等地均设立研发中心及制造基地&#xff0c;产品主要覆盖新能源汽车的电…

TCP\IP标准与OSI标准

TCP/IP 模型和 OSI 模型都是用于描述网络体系结构的模型&#xff0c;但它们的设计理念和层次结构有所不同。TCP/IP 模型更注重实际实现&#xff0c;而 OSI 模型更注重抽象和标准化。 1. OSI 模型 (Open Systems Interconnection Model) OSI 模型是一个七层模型&#xff0c;从…

常见电脑品牌BIOS设置与进入启动项快捷键

常见电脑品牌BIOS与引导项快捷键速查表 | 电脑品牌 | BIOS快捷键 | 引导项快捷键 | 备注 ||------------|------------|--------------|------------------------------ || 联想 | F2/F1 | F12 | 笔记本通常为F2&#xff0c;台式机通常为F1 || IBM/ThinkPad | F1 | 未知 | ||…