设计模式解释器模式学习教案_第1页
设计模式解释器模式学习教案_第2页
设计模式解释器模式学习教案_第3页
设计模式解释器模式学习教案_第4页
设计模式解释器模式学习教案_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、会计学1设计模式设计模式(msh)解释器模式解释器模式(msh)第一页,共25页。第2页/共25页第二页,共25页。第3页/共25页第三页,共25页。解释器模式:解释器模式:给定一个语言,定义它的文法的一种表示定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的解释语言中的句子句子。Interpreter Pattern: Given a language, define a representation for its grammar along with an interpreter that uses the representation to interpret

2、 sentences in the language.第4页/共25页第四页,共25页。n能够加深对面向对象思想的理解,并且理解编程语言中文法规则的解释过程第5页/共25页第五页,共25页。expression := value | operationoperation := expression + expression | expression - expressionvalue := an integer /一个整数值第6页/共25页第六页,共25页。言中的终结符类和非终结符类非终结符表达式非终结符表达式终结符表达式终结符表达式第7页/共25页第七页,共25页。第8页/共25页第八页,共

3、25页。第9页/共25页第九页,共25页。abstract class AbstractExpression public abstract void Interpret(Context ctx);第10页/共25页第十页,共25页。class TerminalExpression : AbstractExpression public override void Interpret(Context ctx) /终结符表达式的解释操作 第11页/共25页第十一页,共25页。class NonterminalExpression : AbstractExpressionprivate Abstr

4、actExpression left;private AbstractExpression right;public NonterminalExpression(AbstractExpression left, AbstractExpression right) this.left = left;this.right = right;public override void Interpret(Context ctx) /递归调用每一个组成部分的递归调用每一个组成部分的interpret()方法方法 /在递归调用时指定组成部分的连接方式,即非终结符的功能在递归调用时指定组成部分的连接方式,即非

5、终结符的功能第12页/共25页第十二页,共25页。n可以在环境类中增加一些所有表达式解释器都共有的功能,以减轻解释器的职责n当系统无须提供全局公共信息时可以省略环境类,根据(gnj)实际情况决定是否需要环境类第13页/共25页第十三页,共25页。using System.Collections;class Context private Hashtable ht = new Hashtable(); /往集合对象中设值 public void Assign(string key, string value) ht.Add(key,value); /获取存储在集合对象中的值 public str

6、ing Lookup(string key) return (string)htkey; 第14页/共25页第十四页,共25页。某软件公司要开发一套机器人控制程序,在该机器人控制程序中包含一些简单的英文控制指令,每一个指令对应一个表达式(expression),该表达式可以是简单表达式也可以是复合表达式。每一个简单表达式由移动方向(direction),移动方式(action)和移动距离(distance)三部分组成,其中,移动方向包括向上(up)、向下(down)、向左(left)、向右(right);移动方式包括移动(move)和快速移动(run);移动距离为一个正整数。两个表达式之间可以

7、通过与(and)连接,形成复合(composite)表达式。用户通过对图形化的设置界面进行操作可以创建一个机器人控制指令,机器人在收到指令后将按照指令的设置进行移动,例如输入控制指令“up move 5”将“向上移动5个单位”;输入控制指令“down run 10 and left move 20”将“向下快速移动10个单位再向左移动20个单位”。现使用解释器模式来设计该程序并模拟实现。第15页/共25页第十五页,共25页。ncomposite对应SentenceNode类和AndNode类expression := direction action distance | composite

8、/表达式composite := expression and expression /复合表达式direction := up | down | left | right /移动方向action := move | run /移动方式distance := an integer /移动距离第16页/共25页第十六页,共25页。第17页/共25页第十七页,共25页。机器人控制程序结构图机器人控制程序结构图第18页/共25页第十八页,共25页。din)类,充当终结符表达式角色n(5) ActionNode:动作结点(ji din)类,充当终结符表达式角色n(6) DistanceNode:距离结点(ji din)类,充当终结符表达式角色n(7) InstructionHandler:指令处理类,工具类n(8) Program:客户端测试类演示演示参考参考(cnko)代码代码 (DesignPatternInterpreterSample)第19页/共25页第十九页,共25页。down run 10 and left move 20up move 5 and down run 10 and left move 5第20页/共25页第二十

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论