20172306《结对编程——四则运算》第一周总结
结对编程——四则远算
本周总结
这周我和20172325是结对伙伴,一周需要设计出思路。对于我们两个在Java方面都不是很好的人来说,看到问题时,头脑都是蒙圈的,不知道我们应该做什么,用什么方法,用哪些类,编写几个类来实现这些问题。而且我们两个进行的时间也晚,因为都有些天然的抗拒。不过我们最后都抱着即使完不成,也把自己能做的做完的心态,开始进行实验的设想等。在后期,他做了很多事情,而且自己编了后缀的计算的代码,突然觉得他还是很棒的,这必须要夸一夸。在我看来,是很成功的。
需求分析
自动生成题目(刘辰)
要求:自动生成题目
可独立使用(能实现自己编写测试类单独生成题目的功能)
可生成不同等级题目,类似于:
1级题目:2 + 5 =
10 - 5 =
之类的两个数,一个运算符的题目
- 第一个问题,我们认为是编写一个类,它需要做到,将数字和符号放在一起,形成一个基本的题目。而几级几级的问题,则由我们自己来确定。而且说自动生成,意思就是说,我们所产生的符号以及数字的种类都是随机的。
题目运算(判题)(邓煜坤)
要求:可独立使用
实现中缀表达式转为后缀表达式并计算
判断用户答题正误,并输出正确结果
- 第二个问题,主要是计算。对于中缀转后缀,老师讲了有关的东西。通过设栈,以及对于栈的应用,完成中缀转后缀的表达。
支持真分数(共同完成)
可独立使用
实现分数算式的计算
- 第三个问题,我们暂时认为,对于真分数,我们打算将其放入到题目中。至于如何进行实现,这是我们后面要讨论的问题。
题目去重(扩展需求,加分项)(共同完成)
要求:可独立使用
实现对自动生成表达式的去重:如下
若生成:2 + 5 =
5 + 2 =
为同一题目
- 这个问题是扩展问题,在这个的理解上,我们两个都只能暂时停留在只有一个操作符时,能够判断去重,但是如果有两个运算符如何做,我们还不知道,而且考虑到,如果只做一个运算符的去重,还需将其分开进行考虑,难度可能加大了,所以我们决定暂时不考虑,先把之前的东西做好。
设计思路(共同完成)
因为是设计思路,应该整体的进行分析,我们认为,总体上设计三个类。
一个用来生成题目,我们用了Random类,还有Arraylist类,还有可能会考虑switch语句,在其中,我们暂时先分为三级,一级一个运算符,二级两个运算符,三级三个运算符。可以达到用户输入几级,我们就会有几个运算符进行计算。还有在这个类中,我们将会引入加减乘除的方法,为后面在后缀计算时提供方便。还有,我们会将真分数写在这个类中。对于真分数,我们考虑的是对于整数将分母统一设成1,之后再进行其他计算。
一个是中缀转后缀的类。
这个是老师的课件中的一页,它在这页中写出了中缀转后缀的一些步骤,我们打算按照这个方法,所以方法中有了栈的相关的方法。还有我们考虑到后期后缀计算的时候,乘除以及加减他们的优先级是相同的,所以我们暂时考虑创造了getleft和getright的方法。
一个是后缀计算的类。这里我们打算将答案的判断正误放在这里。我们将要引用之前的生成题目的类生成的题目,以及利用中缀转后缀的类将刚才的题目变成后缀,之后利用这个类让计算机来计算,同时我们会在test中运用Scanner,将结果与计算机进行比较,从而实现判断正误。
对于去重,这个,我们如果再完成前面的任务之后,会考虑将这个方法放在产生题目的类中,这个作为我们要挑战的内容。
UML截图(邓煜坤)
代码规范(刘辰)
- 我们决定按照IDEA的格式规范进行规范。
- 类的命名都是根据每个类的用途进行的命名,简单易懂。
遇到的问题及解决方法
- 问题1:最开始,我们在讨论的时候,一直弄不清楚我们应该分为几个类,还有不知道判断正误以及真分数应该放在哪。
- 问题1解决方案:我们后来听了张旭升学长的讲解,他说总体上就只有三个类,我们就顺着那个思路重新的想,一开始,我们甚至弄了五个类,而且还硬生生的在里面考虑继承的问题,直到学长说,我们才知道我们想错了。才有了前面的三个类的成果。
- 问题2:我是负责生成题目的部分暂时,我最开始想着我们基础不好,所以在分级时,考虑的是一级为十以内加减乘除,二级为五十以内加减乘除,三级为一百以内加减乘除,以此类推,这样可以对运算符的操作减少很多,更容易些。我甚至已经开始编译了
- 问题2解决方案:后来我将我的思路跟仇夏说了,想问一下她觉得我的这个想法怎么样,可不可以被接受。他告诉我说,我想的太简单了,考虑的太少,她说老师说应充分考虑客户的需求,也就是说,我们不能过分的局限,这样不具有实用性。所以,我将原来所有的想法全部推翻,重新来过。 已经开始了,但是还没有编完,下周会继续。
对结对伙伴20172325的评价
最开始,他对这件事很不上心,这让我很生气。后来,我们总算是开始了。我觉得他有一个优点是他对于这个实验,他很想把每一步都搞得透透的,再进行下一步操作,但是就因为这一点,我们在讨论的时候总是在不断地偏题,总是讨论到别的问题上,时间就会不断地消耗。还有我觉得他有一点爱钻牛角尖,其实这可以说很执着,但是吧,有的时候太钻就很让人着急,容易耽误事。但是他对于自己该做的事很用心,我们的思路基本是一致的,这给我们的实验有一个很好的开始。
参照网站
- (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 | 开发 | 600 | |
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 | |
合计 | 1470 |