20172325《结对编程——四则运算》第一周总结
结对编程——四则远算(20172325)
本周总结
我的结对伙伴是刘辰20172306,第一周的任务是设计整体思路,构建UML类图。在拿到这个项目的时候,真的是像她说的一脸懵^,对于建几个类,每一个类里面放那些方法,定义那些变量等等都完全没有思路。但是很多的查询之后,求同存异,一步一步理清了思路,与目标也越来越接近。在这一周的任务中,我们有争论,意见出现过分歧,但是在良好的沟通交流下,最终还算完整地完成了这一周的任务,为什么这样说呢,因为在设计类图的时候总觉得要把每一步都考虑好,但是如果不实践出来,根本不知道应该要注意哪些点,所以就很纠结。
需求分析
题目运算(判题)
要求:可独立使用
实现中缀表达式转为后缀表达式并计算
判断用户答题正误,并输出正确结果
- 针对第一个需求,我们选择建一个类,这个类里面首先能够对题目等级进行划分,确定用户所需等级;其次能够随机生成操作符合运算数,形成一个普通的算式;
自动生成题目
要求:自动生成题目
可独立使用(能实现自己编写测试类单独生成题目的功能)
可生成不同等级题目,类似于:
1级题目:2 + 5 =
10 - 5 =
之类的两个数,一个运算符的题目
- 第二个需求,主要是表达式转换和后缀表达式运算。建立两个类,一个用于中缀转后缀,一个用于后缀表达式的计算以及答案的判断。
支持真分数
可独立使用
实现分数算式的计算
- 第三个需求,能独立使用的真分数题目和答案,原本只考虑到在答案中体现真分数,只需要考虑求余运算,但是后来在学长给了一些提示之后才发现,还需要在题目中出现真分数,于是又将考虑如何使栈能够识别分数形式的数,问题比较复杂,后期慢慢琢磨,先把它纳入生成题目的类里面。
题目去重(扩展需求,加分项)
要求:可独立使用
实现对自动生成表达式的去重:如下
若生成:2 + 5 =
5 + 2 =
为同一题目
- 第五个需求为拓展题,加分项,我们也在考虑这个问题,一开始我想到的是运用数组来搞两个集合,一个存放操作符,一个存放运算数,识别题目中操作符和运算数的个数和位置,相同则为重复,但是这个想法要实践起来可能就会遇到很多问题,所以先待定。
设计思路
- 1、设计三个类,一个Test文件。三个类分别是生成题目、中缀转后缀、后缀表达式的计算;
- 2、在生成题目的类里面声明各种算法、真分数的加入;
- 3、在中缀转后缀的类里面运用栈进行操作,按照老师上课讲的内容,由于两个人一组,不加入括号;
- 4、在后缀表达式计算的类里面,通过添加参数吧第二个类最后生成的后缀表达式导入,然后进行计算,同时,在这个类里面加上答案的判断,有用户输入一个值,将它和系统生成的值进行比较,然后输出不同的信息。
- 5、在Test文件里我将会吧三个类串联起来,然后在最后加上是否继续(Y/N ?)的循环语句。
UML截图
遇到的问题及解决方法
-
问题1:项目已开始,我们在继承上纠结了很久,为此还设计了很多类以为将要继承一个大的父类。
-
问题1解决方案:学长讲解之后意识到,这次的项目和学到那没有关系,是综合能力的考察,也就是说不一定用到刚学完的继承,于是豁然开朗,我们要根据需求设计不同的类,都能够各自独立完成自己的那一部分任务,然后将他们在Test文件里一起引用。
-
问题2:我是负责UML类图的设计和中缀转后缀,后缀表达式的计算,在一开始,我的设计就存在问题,UML类图是一个类似提纲的存在,我需要的仅仅是将大致的思路构建在UML类图里面,但是我一直都觉得要将整个项目搞出来,具体实践,才能知道在每一个类里面需要用到什么方法,声明什么变量,很纠结,浪费了不少时间。
-
问题2解决方案:经过结对同学的提醒,以及和她的良好沟通,我们发现我们的设计思路完全一样,只是在实践的过程中有一些小问题,在相互的提醒下就解决了问题,最后完成任务。
对结对伙伴20172306的评价
有些急躁,在完成一件任务的时候不会有一个先思考的过程,大局意识比较弱,感觉只要在做这件任务就够了,但是这样的队友能够促使我尽快的着手去做,而不是一味的只知道想而不去付诸实践。
参照网站
- (https://blog.csdn.net/cbbbc/article/details/40345225)
- (https://blog.csdn.net/u014611932/article/details/45538913)
PSP
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
Planning | 计划 | 60 | 70 |
Estimate | 估计这个任务需要多少时间 | 60 | 60 |
Development | 开发 | 1680 | |
Analysis | 需求分析 (包括学习新技术) | 30 | 45 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 30 | 20 |
Design UML | 设计项目UML类图 | 120 | 100 |
Coding | 具体编码 | 180 | |
Code Review | 代码复审 | 180 | |
Test | 测试(自我测试,修改代码,提交修改) | 120 | |
Size Measurement | 计算工作量(实际时间) | 30 | |
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 60 | |
合计 | 2550 |