版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
提出问题1控制台实现的计算器程序2简单的Windows计算器程序3Contents目录提出问题1控制台实现的计算器程序2简单的Windows计算器程序3Contents目录5.1要解决的问题一道面试题:“请用C++、Java、C#或VB.NET任意一种面向对象语言实现一个计算器控制台程序,要求输入两个数和运算符号,得到结果。”下面分别用控制台和WindowsForm来实现。提出问题1控制台实现的计算器程序2简单的Windows计算器程序3Contents目录5.2控制台实现及扩展技术要点: 要求用C#语言实现。 要求实现的是控制台程序。 要求的程序输入参数包括操作数1、操作数2和运算符号共三个。 要求的程序输出为最终的计算结果,直接在控制台界面显示即可。5.2控制台实现及扩展classProgram{staticvoidMain(string[]args){Console.Write("请输入数字A:");stringA=Console.ReadLine();Console.Write("请选择运算符号(+、-、*、/):");stringB=Console.ReadLine();Console.Write("请输入数字B:");stringC=Console.ReadLine();stringD="";5.2控制台实现及扩展if(B=="+")
D=Convert.ToString(Convert.ToDouble(A)+Convert.ToDouble(C));if(B=="-")D=Convert.ToString(Convert.ToDouble(A)-Convert.ToDouble(C));if(B=="*")D=Convert.ToString(Convert.ToDouble(A)*Convert.ToDouble(C));if(B=="/")D=Convert.ToString(Convert.ToDouble(A)/Convert.ToDouble(C));Console.WriteLine("结果是:"+D);}}5.2控制台实现及扩展思考:上述程序当中的变量A、C、D的最大值分别是多少?如果超过最大值了会怎样?如果选择的运算符为除,第二个操作数输入为0,会产生什么样的结果?如何解决?上述程序是否完全符合题目要求?不足之处:变量命名,现在的命名就是A、B、C、D,变量不带有任何具体含义,这是非常不规范的。判断分支,上述写法,意味着每个条件都要做判断,等于计算机做了三次无用功。数据输入有效性判断等,如果用户输入的是字符符号而不是数字怎么办?如果除数时,客户输入了0怎么办?5.2控制台实现及扩展改进:将变量名从无意义的A、B、C、D,变成了更加规范的命名方式。用switch替换了if判断。增加了对除数为0的情况的判断和处理。加上了程序的异常处理。C#当中程序的异常处理通常使用try……catch或者try……finally……catch来完成。小结:程序基本能满足题目的要求,且考虑了一些异常输入的情况。但总体而言,并没有体现任何面向对象的思想,代码没有任何可以封装和重用的部分。提出问题1控制台实现的计算器程序2简单的Windows计算器程序3Contents目录5.3简单的Windows计算器程序简单程序中的面向对象思想上述代码可否重用?面向对象三大特性是封装、继承和多态。如何在简单的计算器程序中体现这三大特性?5.3简单的Windows计算器程序界面搭建步骤略部分实现思路分析:为了让业务逻辑与界面逻辑分开,让其的耦合度下降,单独建立一个负责操作执行的逻辑类CalculateOperation,使其完成基本的数据运算操作。该类主要包含计算结果这一个函数,其实现方式可以同前例。5.3简单的Windows计算器程序部分实现思路分析:定义全局变量进行数据的保存。分别实现每个数字按钮的响应事件。按键0到按键9的功能非常相似,只是具体的某一个内容不太一样,因此我们可以用一个共同的函数来处理逻辑,将不同的内容作为参数传入即可。5.3简单的Windows计算器程序部分实现思路分析:对于数字0到9的按键响应函数,实际上都是在直接调用函数ZeroRemove,只是传入的参数不一样而已。如果发现输入响应操作处理的有问题,则只需要修改函数ZeroRemove即可,而不需要依次修改0到9的响应函数了,这种设计充分体现了公共函数的优越性。对于加减乘除这类操作按钮来说,也可以设计一个共同的处理函数。因为在按下这一类按钮之后,程序需要做的处理动作几乎是一致的,不同的仅仅是记录的数据。(函数SuppliedOperator)在设计了操作处理函数之后,相应的加减乘除的按钮响应函数也可以很简单的实现了。补充完善其他一些按钮事件响应函数(等号、小数点、删除等)。5.3简单的Windows计算器程序上述的代码当中,我们把界面逻辑和业务逻辑完全分离开了:对于CalculateOperation类来说,它只完成和计算相关的所有业务逻辑,而并不参与用户交互,因此,如果我们需要写一个控制台的应用程序,可以使用CalculateOperation类当中的业务逻辑,直接将其引入解决方案,直接调用即可,不需要重新再写重复的代码了,同样的,要写另外一个Windows程序,甚至是Web程序,手机程序等各种表现方式的程序的时候,都可以用同样的这个业务逻辑底层了。面向对象的三大特性是封装、继承和多态,这里我们只是用到了其封装特性,那么剩下的两个特性需要如何在这么小的一个程序当中体现呢?现在如果希望增加一个开根号(sqrt)运算,应该如何来修改程序?5.3简单的Windows计算器程序把加减乘除等运算分离,修改其中一个不影响另外的几个,增加运算算法也不影响其它代码。引入继承和多态:定义一个基础操作类Operation,包括两个私有成员变量_numberA和_numberB(分别用于保存两个操作数,将其通过公有属性NumberA和NumberB引出)和一个共有成员函数GetResult(该函数是一个虚函数,需要在派生类被重写之后才能被使用)。定义加减乘除四个派生类,并重写GetResult函数。通过“简单工厂模式”解决如何去实例化对象的问题。建立好工厂类之后,只需要输入运算符号,工厂就实例化出合适
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 47549-2026塑料断裂韧性的测定J-R曲线法
- 构建积极的医疗安全文化:管理基石
- 极端气候事件下的传染病爆发预测模型
- 临时用工劳务协议
- 村卫生室突发疾病应急通信转诊网络建设
- 高中理科2025年科技主题班会说课稿
- 26年肺转移缩小程度评估指南
- 医学26年:直肠脱垂诊疗要点 查房课件
- 2026年理发说课稿灵感app
- 2026年安徽宣城市宁国市霞西学校等校中考二模物理试题(含答案)
- 2026年第37届“中国学生营养日”校园营养餐健康助成长课件
- 2026年内部审计师考试试卷及答案
- 四川省自然资源投资集团有限责任公司2026年上半年公开招聘考试备考试题及答案解析
- 粮食贸易企业制度规范
- 2026年阜阳卷烟材料有限责任公司新员工招聘4人笔试参考试题及答案详解
- 2025年成都市网格员笔试试题及答案
- 超声科产前筛查异常应急预案演练脚本
- CC2530技术与应用 教案全套
- (2026版)铁路货物运输规则课件
- 水利隐蔽工程验收记录表(示例版)
- XJJ013-2012 新疆维吾尔自治区城市规划管理技术规定
评论
0/150
提交评论