【发布时间】:2016-03-31 07:05:26
【问题描述】:
我正在尝试制作一个小型计算器应用程序并学习 OOPS 概念。我看了this talk。 它展示了如何使用多态性来避免 switch 语句。
我的应用中有 4 个操作员按钮(+、-、/、*)。我正在为运算符和操作数使用 2 个堆栈
当用户点击任何按钮操作数或运算符时,我尝试为当前表达式创建一个中缀树并将运算符保留在运算符堆栈中。
当用户点击“计算”时,我会遍历运算符堆栈并根据运算符优先级调整中缀树。
我有抽象 Node 类,ValueNode -> Node,抽象 operatorNode,AddNode -> operatorNode,SubtractNode -> OperatorNode 等等。
我的代码灵感来自以下链接,以防上述描述不清楚。 http://cplusplus.kurttest.com/notes/stack.html#binary-expression-tree
我的问题是,如何在不使用 switch 的情况下根据堆栈中的运算符 char 创建正确的子类对象?
所以,给定字符(+ 或 - 或 * 或 /)我如何在不使用开关的情况下创建 AddNode 或 SubtractNode。
【问题讨论】:
-
不要描述你的代码,而是发布它。它会更容易理解和帮助你。
标签: java oop optimization switch-statement polymorphism