2018-2019-2 20175230 实验三《Java面向对象程序设计》实验报告
实验三 实验三 敏捷开发与XP实践
- 1.XP基础
- 2.XP核心实践
- 3.相关工具
实验要求
1.没有Linux基础的同学建议先学习《Linux基础入门(新版)》《Vim编辑器》 课程
2.完成实验、撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等)、解决办法(任务一:在IDEA中使用工具(Code->Reformate Code)格式化代码,并学习Code菜单的功能
IDEA中的Code菜单如下:空洞的方法如“查网络”、“问同学”、“看书”等一律得0分)以及分析(从中可以得到什么启示,有什么收获,教训等)。报告可以参考范飞龙老师的指导
3. 严禁抄袭,有该行为者实验成绩归零,并附加其他惩罚措施。
实验步骤
(一) 编码标准
安装alibaba 插件,解决代码中的规范问题。具体流程如下:
1.打开Settings->Plugins->Marketplace,然后在搜素栏输入alibaba,即可看到Alibaba Java Code Guidelines插件,点击Install进行安装,然后重启IDE生效:

2.使用比较简单:在项目名称上单击右键,在弹出菜单上选择
编码规约扫描

任务一:在IDEA中使用工具(Code->Reformate Code)格式化代码,并学习Code菜单的功能
IDEA中的Code菜单如下:


几个比较常用的功能
- Override Methods(Ctrl+O):重载基本类的方法;
- Implement Methods(Ctrl+I):完成当前类 implements 的(或者抽象基本类的)接口的方法;
- Generate(Alt+Insert):创建类里面任何字段的 getter 与 setter 方法;
- Surround With(Ctrl+Alt+T):使用if-else、try-catch、do-while等包装代码段;
- Insert Live Template(Ctrl-J):执行一些记不起来的 Live Template 缩写;
- Comment with Line Comment(Ctrl+斜杠)/Comment with Block Comment(Ctrl+Shift+斜杠):用 Ctrl+斜杠 与 Ctrl-Shift-/ 来注释(或反注释)代码行与代码块。 用Ctrl+斜杠单行注释标记(“ //… ”)来注释(或反注释)当前行或者选择地代码块。而 Ctrl+Shift+斜杠则可以用块注释标记(“ /* */”)把所选块包围起来。要反注释一个代码块就在块中任何一个地方按 Ctrl+Shift+斜杠 即可;
- Reformat Code(Ctrl+Alt+L):将代码按标准格式缩进;
- show reformat file dialog:按照格式自动对齐
- Optimize imports:可以优化imports,去除不必要的imports
- Move Line/statement Down/Up:将某行、表达式向下、向上移动一行
(二)敏捷开发与XP
任务二 :下载搭档实验二的Complex代码,加入不少于三个JUnit单元测试用例
需要测试的方法有:ComplexAdd(),ComplexSub(),ComplexMulti(),ComplexDiv();
编写测试代码并上传到搭档码云项目上:
import org.junit.Test;
import junit.framework.TestCase;
public class ComplexTest extends TestCase {
Complex c1 = new Complex(1, 3);
Complex c2 = new Complex(-2, -1);
Complex c3 = new Complex(2,3);
@Test
public void testgetshibu() throws Exception {
assertEquals(-2.0, Complex.getshibu(-2.0));
assertEquals(6.0, Complex.getshibu(6.0));
assertEquals(0.0, Complex.getshibu(0.0));
}
@Test
public void testgetxubu() throws Exception {
assertEquals(-2.0, Complex.getxubu(-2.0));
assertEquals(6.0, Complex.getxubu(6.0));
assertEquals(0.0, Complex.getxubu(0.0));
}
@Test
public void testComplexAdd() throws Exception {
assertEquals("-1.0+2.0i", c1.ComplexAdd(c2).toString());
assertEquals("3.0+6.0i", c1.ComplexAdd(c3).toString());
assertEquals("0.0+2.0i", c2.ComplexAdd(c3).toString());
}
@Test
public void testComplexSub() throws Exception {
assertEquals("3.0+4.0i", c1.ComplexSub(c2).toString());
assertEquals("-1.0", c1.ComplexSub(c3).toString());
assertEquals("-4.0 -4.0i", c2.ComplexSub(c3).toString());
}
@Test
public void testComplexMulti() throws Exception {
assertEquals("1.0 -7.0i", c1.ComplexMulti(c2).toString());
assertEquals("-7.0+9.0i", c1.ComplexMulti(c3).toString());
assertEquals("-1.0 -8.0i", c2.ComplexMulti(c3).toString());
}
@Test
public void testComplexComplexDiv() throws Exception {
assertEquals("-1.4 -1.0i", c1.ComplexDiv(c2).toString());
assertEquals("0.6+0.8i", c1.ComplexDiv(c3).toString());
assertEquals("-0.6 -0.6i", c2.ComplexDiv(c3).toString());
}
}

(三)敏捷开发与XP
重构
我们先看看重构的概念:
重构(Refactor),就是在不改变软件外部行为的基础上,改变软件内部的结构,使其更加易于阅读、易于维护和易于变更 。
重构中一个非常关键的前提就是“不改变软件外部行为”,它保证了我们在重构原有系统的同时,不会为原系统带来新的BUG,以确保重构的安全。如何保
证不改变软件外部行为?重构后的代码要能通过单元测试。如何使其更加易于阅读、易于维护和易于变更 ?设计模式给出了重构的目标。
(1)重构有关知识:
-重构(Refactor),就是在不改变软件外部行为的基础上,改变软件内部的结构,使其更加易于阅读、易于维护和易于变更 。
-修改软件的四种动机:
①增加新功能;
②原有功能有BUG;
③改善原有程序的结构;
④优化原有系统的性能 。
-需要重构的地方:
①代码重复;
②方法过长;
③参数列过长;
④条件逻辑过度复杂;
⑤分支语句。
-一个完整的重构流程包括
①从版本控制系统代码库中Check out code;
②读懂代码(包括测试代码);
③发现bad smell;
④Refactoring;
⑤运行所有的Unit Tests;
⑥往代码库中Check in code。
任务三:完成重构内容的练习,下载搭档的代码,至少进行三项重构,提交重构后代码的截图,加上自己的学号水印。提交搭档的码云项目链接
- 存在问题:

1.包名应为全部小写字母和数字组成
2.所有的类都必须添加创建者信息
3.类、类属性、类方法必须用javadoc规范
4.方法名、参数名、成员变量、局部变量没有遵从驼峰形式

实验体会
本次实验做的比较顺利,主要问题是不够熟练,必须借助于各种资料,然后经过多次尝试才能做完。
2018-2019-2 20175230 实验三《Java面向对象程序设计》实验报告的更多相关文章
- 20145208 实验三 Java面向对象程序设计
20145208 实验三 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验步 ...
- 20145213《Java程序设计》实验二Java面向对象程序设计实验报告
20145213<Java程序设计>实验二Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装,继承,多态 初步掌握UML建模 熟悉S.O. ...
- 20145206《Java程序设计》实验二Java面向对象程序设计实验报告
20145206<Java程序设计>实验二Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O. ...
- 20145308刘昊阳 《Java程序设计》实验二 Java面向对象程序设计 实验报告
20145308刘昊阳 <Java程序设计>实验二 Java面向对象程序设计 实验报告 实验名称 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面相对象三要素:封 ...
- 20162311 实验二 Java面向对象程序设计 实验报告
实验二 Java面向对象程序设计 实验内容 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态 3. 初步掌握UML建模 4. 熟悉S.O.L.I.D原则 5. 了解设计 ...
- 实验二Java面向对象程序设计实验报告(2)
实验二 Java面向对象程序设计 实验概述: 课程:程序设计与数据结构 班级:1623班 姓名: 邢天岳 学号:2309 指导老师:娄老师 王老师 实验日期:2017.4.16 实验名称: Java面 ...
- 实验二 Java面向对象程序设计实验报告
实验二 Java面向对象程序设计 实验内容 1.初步掌握单元测试和TDD 2.理解并掌握面向对象三要素:封装.继承.多态 3.初步掌握UML建模 4.熟悉S.O.L.I.D原则 5.了解设计模式 实验 ...
- 20145326《Java程序设计》实验二Java面向对象程序设计实验报告
20145326<Java程序设计>实验二Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O. ...
- 20155217 实验二 Java面向对象程序设计 实验报告
20155217 实验二 Java面向对象程序设计 实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模 ...
- 20145219 《Java程序设计》实验二 Java面向对象程序设计实验报告
20145219 <Java程序设计>实验二 Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S. ...
随机推荐
- 纯H5+c3实现表单验证
客户端验证是网页客户端程序最常用的功能之一,我们之前使用了各种各样的js库来进行表单的验证.HTML5其实早已为我们提供了表单验证的功能.至于为啥没有流行起来估计是兼容性的问题还有就是样式太丑陋了吧. ...
- 43.Charles抓包(iOS的http/https请求)
Charles安装 HTTP抓包 HTTPS抓包 1. Charles安装 官网下载安装Charles: https://www.charlesproxy.com/download/ 2. H ...
- 如何查看Python内置模块的实现代码
方法1:使用help(random) >>> import random >>> help(random) Help on module random: NAME ...
- 2018.11.01 NOIP训练 图论(线段树+倍增+dfs序)
传送门 一道挺妙的题. 对于询问点(u,v),如右图所示,我们可以发现存在一个点m在u->v的路径中,m子树的点到u是最近的,m子树外到v是最近的.其中dis(u,m)=(dis(u,v)-1) ...
- vue的computed属性
vue的computed属性要注意的两个地方,1,必须有return,2,使用属性不用括号 <div> <input type="text" v-model=&q ...
- ACM-ICPC 2018 徐州赛区网络预赛 C Cacti Lottery(暴力+期望)
链接https://nanti.jisuanke.com/t/31455 思路 首先先枚举把剩下的数填入星号的情况(其实就是枚举星号的排列),这是对方所能知道的所有信息,然后对方将取八种决策中最优的情 ...
- 【慕课网实战】Spark Streaming实时流处理项目实战笔记九之铭文升级版
铭文一级: 核心概念:StreamingContext def this(sparkContext: SparkContext, batchDuration: Duration) = { this(s ...
- ==和equals的比较
一 : == 的特点: a == b ; 1.如果A和B是基本数据类型 == 比较的是两个变量的值 2.如果A和B是引用数据类型 == 比较的是两个变量的内存地址 二:重写的equal ...
- HTML上传文件支持大文件上传,下载
上传 1.修改配置文件web.config,在<system.webServer>下面加入 <security> <requestFiltering > <r ...
- 使用Golang+Mongodb打造你的第一个站点
很多人推荐MEAN来开发站点.MEAN就是M:mongodb,E:expressjs.A:angular最后的N:nodejs. 但是如果你亲身的体会到了js的嵌套回调的话你就会想换换别的办法了.虽然 ...