实验名称:结对编程项目-四则运算
实验时间:2017.5.16
实验人员:20162309邢天岳(结对搭档201622313苑洪铭)
指导老师:娄老师、谢老师
实验内容: 第二周(2017-5-21 23:59截止)输出整体总结博客
设计思路
真分数(题目生成/题目运算判题)
JUnit测试(idea环境测试)
扩展需求
实验步骤:在第一周实验的基础上,对四则运算的代码增加难度级数,不同的级数需要生成不同类型的题目,分级过程中,题目去重也是需要考虑的一个环节,也放在难度级数这一类别中去完成。题目运算(判题)可独立使用转换为后缀表达式,这是第二周实验的一个重点也是难点,中缀转后缀之后利用栈的方法进行计算,这种方式符合教材中的指导思路,对巩固教材知识有很大帮助。首先创建的是计算用的主类,
编写过程中需要注意的一点object类的格式规范,在运行的过程中,系统报错,对产生的算式无法计算结果。调用Integer.parseInt方法时需要更改字符串的格式,在这里苑洪铭同学将其改为了fbi格式,修改完毕后就可以正常运行了。
因为本次实验分为两次完成,对运算符的加入是整个程序较为核心的部分,但代码的编写比较常规,这里使用到了.equals方法,同样这里需要if else循环语句,语法结构也相同,需要的是替换计算时的符号,这里String了type类,两个double浮点数类型的值(start和end)。难度级数的引入,考察到了每个人自己的四则运算程序的整体掌握情况,根据自己的水平完成代码。
在本周对代码的修改中,我新加入了运算过程中的有无括号问题,这里在查阅了资料后使用了Pattern方法,先输入if-else的基本语句,然后是用patten.compile定义一个新的变量,这里的一部分是较为陌生的方法,在网上查阅了对应的部分知识,了解到patten和matcher两者需要合作,而patten的类方法只支持了正对表达式的分组支持,单独的patten在使用有了很大的限制。这里补充了关于patten方法的一些使用实例,包括使用方法,以及在四则运算程序的对应代码的编写。
关于多语言问题,在和苑洪铭同学共同进行了研究后完成:
在完善了程序的一些需要改进的地方之后,再需要做的就是运行程序了,增加代码的过程中会出现一些错误,需要注意几个比较重要的点:
1.代码的量比较大,在多次定义变量时,需要注意调用的方法时public或private要注意变名的一致性。
2.继承的时候注意需要调用的方法,完全的继承会对运行产生干扰。同时,要注意计算的先后顺序问题,有无括号要分不同情况。
3.在使用新的类和新的方法时,需要注意调用过程的合理性,避免一些逻辑上的语法错误,就比如patten类的使用具有一定的条件性。
本次实验代码的UML类图:
实验过程中遇到的问题:
1.新加入的Mathmatic类无法运行,经过检查并不是编写上的错误(idea并没有报错),idea的运行栏里没有运行的选择。
2.测试类SizheTool类的时候,调用Integer.parseInt时出现变量格式不符合。
解决方案:
1.新编写的Mathmatic类需要调用主类size中的一个方法,选择题目个数的scan.nextInt,这里在调用的时候需要进行修改,在变量名没有改变的前提下调用。
2.将格式改为自己定义的fbi,因为Integer 类在对象中包装了一个基本类型 int 的值,Integer 类型的对象包含一个 int 类型的字段。 此外,该类提供了多个方法,能在 int 类型和 String 类型之间互相转换,还提供了处理 int 类型时非常有用的其他一些常量和方法。修改过后可以正常运行。
结对情况:
本次实验我的结对搭档依然是20162313苑洪铭同学,苑洪铭同学依然很细心地检查代码中的bug,同时在最小范围内对代码进行修改,遇到问题时,积极在网上寻找资料,除了patten类,还包括操作符operator的一些使用的注意事项。通过和苑洪铭同学的学习,我对java概念上的理解得到了帮助。
同时,苑洪铭同学仍然有部分不足的地方,比如在继承这一章节,苑洪铭同学没有很好地掌握,在巩固了教材知识后,我们一起完成了测试类对两个主类的继承编写。
结对搭档20162313苑洪铭同学博客地址:http://www.cnblogs.com/yuanhongming/
本次实验的PSP表格:
PSP2.1 | Personal Software Process Stages | 预估耗时(小时) | 实际耗时(小时) |
---|---|---|---|
Planning | 计划 | 14 | 12 |
· Estimate | · 估计这个任务需要多少时间 | 9 | 8.5 |
· Analysis | · 需求分析 (包括学习新技术) | 2 | 2 |
· Design Spec | · 生成设计文档 | 0.67 | 0.5 |
· Design Review | · 设计复审 (和同事审核设计文档) | 0.5 | 0.5 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 1 | 1.5 |
· Design | · 具体设计 | 3 | 3 |
· Coding | · 具体编码 | 3 | 4 |
· Code Review | · 代码复审 | 2 | 1.5 |
· Test | · 测试(自我测试,修改代码,提交修改) | 1 | 1 |
Reporting | 报告 | 1 | 1 |
· Test Report | · 测试报告 | 2 | 2.5 |
· Size Measurement | · 计算工作量 | 1 | 2 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 2 | 2 |
实验总结:
本次实验我们基本完成了关于四则运算的代码编写,在整体上大致构成了关于像四则运算一类的代码的框架,需要总结的部分大致分为一下几点:
1.在调用方法时,不能生搬硬套,要根据本身代码的具体情况对包括变量名以及变量类型进行修改,同时声明变量要注意变量类型。
2.关于patten类的调用环境问题,以及于matcher的协同使用问题。
3.String类的str.Value,关于double改变格式和返回值的问题
在网上查阅了资料,并且结合了自己的代码。
本次实验算是一个比较大的工程了既考验了我们的实际动手能力,也考察了我们的自我学习和自我修缮能力,同时也注重了对java基础知识的理解情况,认真对待本次实验,会有很大的收获。本次实验也告诉我,在编程的过程中,我们不仅要在自主动手中学会检测、修改、编写代码,包括测试代码的编写,还需要结合网上的知识进行取长补短,网上有很多可以汲取的东西值得借鉴。学会选择性地学习,能够更好将知识转化为自己的,做到为我所用。