发帖    主题    评论    推荐    标签    作者    订阅    查搜    注册   登陆   关注
 
面向对象 设计模式 领域驱动设计 企业架构 框架 开发教程 微服务 大数据 扩展性 并发编程 事件驱动 分布式 SOA
1 2 下一页 Go 2

如何用面向对象的方法来描述四则运算表达式

    
2008-09-10 18:53
赞助商链接

前几天面试碰到一道题,当时没有做,忽然想了起来,如下<BR><BR><BR>四则运算表达式的例子是 1 + 5,或者是 ( 2 + 6 ) / ( 4 - 2 )。<BR><BR>如何用面向对象的方法来描述四则运算表达式.<BR><BR>分析如下: <BR> 看起来有三个对象 数值 ,运算符,表达式(如1+5,( 2 + 6 ) / ( 4 - 2 )都是表达式),因为数值和<BR> 和表达式拥有一样的特性,都是靠运算符连接起来,可提出公共接口(在没有把数值和表达式的关系找到的时候,我的思考完全进行不下去).<BR><BR>Biao.java 表达式接口<BR>BiaoB.java 非数值表达式 实现Biao.java<BR>BiaoValue.java 数值表达式 实现Biao.java<BR><BR><BR>Fu.java 运算符接口 <BR>FuPlus.java 加运算符 实现Fu.java<BR>FuC.java 乘运算符 实现Fu.java<BR>FuJ.java 减运算符 实现Fu.java<BR><BR><BR>测试 5- 2*(3+4)<BR>class Main {<BR> public static void main(String[] a) {<BR> Fu plusFu = new FuPlus();<BR> Biao bV1 = new BiaoValue(3);<BR> Biao bV2 = new BiaoValue(4);<BR> Biao b = new BiaoB(bV1,bV2,plusFu); //3+4<BR> System.out.println("==="+b.result());<BR> <BR> <BR> Biao bV3 = new BiaoValue(2);<BR> Biao bb = new BiaoB(bV3,b,new FuC()); //2*(3+4)<BR> System.out.println("==="+bb.result());<BR> <BR> Biao bV4= new BiaoValue(5);<BR> Biao bbb = new BiaoB(bV4,bb,new FuJ()); 5- 2*(3+4)<BR> <BR> System.out.println("==="+bbb.result());<BR> }<BR>}<BR><BR> <BR><BR>类代码:<BR><BR> interface Biao{<BR> int result() ;<BR>}<BR><BR> class BiaoB implements Biao {<BR> Biao b1;<BR> Biao b2;<BR> Fu fu;<BR> BiaoB(Biao b1,Biao b2,Fu fu){<BR> this.b1 = b1;<BR> this.b2 = b2;<BR> this.fu = fu;<BR> }<BR> public int result() {<BR> if(fu==null) return b1.result();<BR> return fu.result(b1,b2);<BR> }<BR>}<BR><BR>class BiaoValue implements Biao {<BR> int i;<BR> BiaoValue(int i){<BR> this.i = i;<BR> }<BR> public int result() {<BR> return i;<BR> }<BR>}<BR><BR> <BR><BR>interface Fu {<BR> int result(Biao b1,Biao b2);<BR>}<BR><BR>public class FuC implements Fu{<BR> public int result(Biao b1,Biao b2) {<BR> return b1.result() * b2.result();<BR> }<BR>}<BR><BR>public class FuJ implements Fu{<BR> public int result(Biao b1,Biao b2) {<BR> return b1.result() - b2.result();<BR> }<BR>}<BR>class FuPlus implements Fu{<BR> public int result(Biao b1,Biao b2) {<BR> return b1.result() + b2.result();<BR> }<BR>}<BR><BR>

2008-09-10 20:35

java.math.BigDecimal

2008-09-17 09:50

freebox 你的留言是什么意思?

2008-09-17 12:31

觉得这两个相似,可以参考一下它的实现。

2008-09-24 10:13

THIS MESSAGE HAS BEEN MASKED

2Go 1 2 下一页

赞助商链接

赞助商链接

返回顶部

移动版 关于本站 使用帮助 联系管理员 最佳分辨率1366x768
OpenSource JIVEJDON Powered by JdonFramework Code © 2002-20 jdon.com