计算机与工程问题解决导论.pdf
文本预览下载声明
计算机与工程问题解决导论
第24讲:事例学习:
创建一个简单的后缀计算器
Prof.Steven R.Lerman
Dr.V.Judson Harward
目标
创建一个计算器来显示如何分隔函数成为
有意义的类
介绍两个有用的软件模式:
-- 模型视图控制器
-- 有限状态机
中缀符号和后缀符号
大多数早期的科学计算器使用一个叫做后缀
的表达符号而不是我们现在使用的中缀表
达
中缀:(13.5 – 1.5)/(3.4 + 0.6)
后缀:13.5 1.5 -3.4 0.6 + /
中缀符号和后缀符号
后缀符号抛弃了中缀符号中必需用来决定优先顺
序和计算顺序的插入语
后缀是由左到右扫描的。遇到一个操作符便执行
该操作符
如果我们移除中缀表达中的插入语,我们得到模
糊的答案
13.5 – 1.5 / 3.4 + 0.6
是
13.5 – 1.5 / 3.4 + 0.6还是
13.5 – (1.5 / 3.4) + 0.6
后缀和栈
解释后缀符号最好的方法是用栈来解释
只要下一项是一个数,我们把它置于一个
栈中
当下一项是操作符的时候,
-- 操作符的适当的操作数的数目从栈中移除,
-- 应用操作符,
-- 结果在放回到栈中
评估后缀
中缀:(13.5 – 1.5)/(3.4 + 0.6)
后缀:13.5 1.5 -3.4 0.6 + /
软件模式
软件模式是重现软件问题的解答的设计
模式同执行语言是相独立的
他们比算法和数据结构更一般更灵活
模型视图控制器(MVC)
模型视图控制器是一种很有用的用来作GUI
相互程序设计的模式
MVC 的历史可以追溯到一种早期的OO语
言,Smalltalk
MVC给Java事件模型很大的影响
-- 事件源是视图的一部分
-- 事件监听器是控制器的一部分
MVC和我们的计算器
视图是代表用户接口,计算器和显示器的
类(Caculator )
控制器是同用户交互的类(Caculator
Controller ),执行事件及更新计算器而不
需要担心显示的细节
模型是处理计算,CPU和计算器内存的类
(CaculatorModel ),你可以这么来想
当然应用程序(CaculatorApp )用main() 把
这些联系在一起
计算器中的MVC
计算器GUI
计算器,1
计算器关键代码
计算器,KeyButton
什么是事件的ActionCommand
默认情况组件上的标签(例如,JButton )发送
ActionCommand
你可以设置使用它来告诉你哪一个按钮发送事件
计算器,Keypad
计算器,2
CaculatorController :
控制器
这个类的任务是最难的因为它是最混乱的
它的任务是描述用户的按钮的点击,更新
显示,使用model执行所有的计算
CaculatorController 是连接模式其他部分的
类。它不仅能分辨view也能分辨model ,但
view 只能分辨controller ,model被控制器使
用,但不反过来使用(调用)
控制器和模型
计算器显示栈顶端的副本吗?
在栈中进行的是什么?Double 吗?
当我们在计算器中输入一个数,想要考虑
中间值为double还是character ?
为了避免舍入误差,我们把显示看成是字
符串(实际上是一个StringBuffer ),作为
显示全部