20165325 2017-2018-2 《Java程序设计》结对编程_第一周:四则运算
一、码云链接
项目名称FAO
二、需求分析
- 实现一个命令行程序;
- 自动生成小学四则运算题目(加、减、乘、除)
- 支持整数
- 支持多运算符(比如生成包含100个运算符的题目)
- 支持真分数
- 统计正确率
三、设计思路
首先设计一个基础的数据类,由于本次项目编程的难点在于分数运算的处理,所以我们打算从一开始就以“分数类”作为基础数据,并由此设计了Rational类(成员变量以及方法均详见UML图),Rational将所有的数据设计为分数,并且能进行+、-、*、/运算。
其次,我们需要设计一个类似于“栈”的类(即Mystack类),其作用是存储用作运算的后缀表达式,后面的“计算器类”遍以此为基础进行运算。
接下来,四则运算的核心便是“计算器”类,即Calculator类,其作用是计算一个后缀表达式的值,其计算方法在2017-2018-2 165X 『Java程序设计』课程 结对编程练习_四则运算里面已经写的很清楚了,即建立一个空栈,遇到数字就入栈,遇到符号就以符号前面的两个数为运算数进行计算。
这周我们设计的程序的最后一个便是:“转换器”类,其作用是将一个正常的运算式(即中缀表达式)转换为后缀表达式,我们将其命名为Transform类。
以上四类我们已经开发完毕,目前的程序可以实现:计算一个正常的运算式(即中缀表达式)的值(支持有理数的运算,输出结果为一个字符串类型)。根据需求分析,我们还需要以下功能:
- 随机生成(多个)运算式;
- 判断计算结果值是否正确;
- 判断随机生成的(多个)运算式是否有重复;
- 计算正确率
- 系统优化
以上功能需要在下一周的编程中开发实现。
四、UML类图
五、功能截图
六、结对感受
这一次的代码非常繁多,设计开发任务也很重。
首先是第一次结对设计这样大型项目,我们缺乏经验;其次,我们在设计上花了较多的时间讨论,后来在实践开发过程中才发现:一些想法和顾虑是多余的,果然实践是检验真理的唯一标准,一味地空想是错误的计划赶不上变化,要在实践中思考,做出选择判断。
最后我觉得这个程序,仅仅靠一个人,不论是体力还是精神都难以支撑,我体会到了两人结对编程的最大好处:相互鼓励,相互帮助,共同面对和克服困难。
七、结对编程照片
确认调试出来的那一瞬间,舒服了舒服了舒服了......
附:遇到的问题将在下周的博客中一并总结。
最新文章
- Web服务器与数据库服务器分离 导入 Excel数据至数据库
- 《数据结构与算法Python语言描述》习题第二章第三题(python版)
- js中正则表达式的模式匹配
- 《day15---多线程安全问题_JDK1.5的锁机制》
- 也谈LBP
- (四)动态生成控件,点击button添加控件
- \r,\n,\t
- Linux 命令 - file: 确定文件类型
- [转] 弱校ACM奋斗史
- c++构造函数析构函数调用顺序
- python实现类jq的json路径过滤
- nand flash和nor flash的区别
- CentOS6.9升级autoconf版本,解决”Autoconf version 2.64 or higher is required“错误
- 干货 | 教你如何监控 Java 线程池运行状态
- 服务器与客户端连接 &; 聊天机器人
- wordpress升级版本时出现错误“Maximum execution time of 30 seconds exceeded”
- [总结]JS操作DOM常用API详解
- CMake系列之四:多个源文件-多个目录
- Qt动态库静态库的创建、使用、多级库依赖、动态库改成静态库等详细说明
- 对Java的常用对象(POJO、DTO、PO、BO、VO、DAO)详细解释及应用场景