20165325 2017-2018-2 《Java程序设计》结对编程_第一周:四则运算

一、码云链接

项目名称FAO

码云链接

二、需求分析

  • 实现一个命令行程序
  • 自动生成小学四则运算题目(加、减、乘、除)
  • 支持整数
  • 支持多运算符(比如生成包含100个运算符的题目)
  • 支持真分数
  • 统计正确率

三、设计思路

首先设计一个基础的数据类,由于本次项目编程的难点在于分数运算的处理,所以我们打算从一开始就以“分数类”作为基础数据,并由此设计了Rational类(成员变量以及方法均详见UML图),Rational将所有的数据设计为分数,并且能进行+、-、*、/运算。

其次,我们需要设计一个类似于“栈”的类(即Mystack类),其作用是存储用作运算的后缀表达式,后面的“计算器类”遍以此为基础进行运算。

接下来,四则运算的核心便是“计算器”类,即Calculator类,其作用是计算一个后缀表达式的值,其计算方法在2017-2018-2 165X 『Java程序设计』课程 结对编程练习_四则运算里面已经写的很清楚了,即建立一个空栈,遇到数字就入栈,遇到符号就以符号前面的两个数为运算数进行计算。

这周我们设计的程序的最后一个便是:“转换器”类,其作用是将一个正常的运算式(即中缀表达式)转换为后缀表达式,我们将其命名为Transform类。

以上四类我们已经开发完毕,目前的程序可以实现:计算一个正常的运算式(即中缀表达式)的值(支持有理数的运算,输出结果为一个字符串类型)。根据需求分析,我们还需要以下功能:

  • 随机生成(多个)运算式;
  • 判断计算结果值是否正确;
  • 判断随机生成的(多个)运算式是否有重复;
  • 计算正确率
  • 系统优化

以上功能需要在下一周的编程中开发实现。

四、UML类图

五、功能截图

六、结对感受

这一次的代码非常繁多,设计开发任务也很重。

首先是第一次结对设计这样大型项目,我们缺乏经验;其次,我们在设计上花了较多的时间讨论,后来在实践开发过程中才发现:一些想法和顾虑是多余的,果然实践是检验真理的唯一标准,一味地空想是错误的计划赶不上变化,要在实践中思考,做出选择判断

最后我觉得这个程序,仅仅靠一个人,不论是体力还是精神都难以支撑,我体会到了两人结对编程的最大好处:相互鼓励,相互帮助,共同面对和克服困难

七、结对编程照片

确认调试出来的那一瞬间,舒服了舒服了舒服了......

附:遇到的问题将在下周的博客中一并总结。

posted @ 2018-04-15 22:51  Maxeys  阅读(226)  评论(0编辑  收藏  举报