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

猜你喜欢

转载自www.cnblogs.com/lc1021/p/8975385.html