java敏捷开发的落地与实施_20165219 《Java程序设计》实验三(敏捷开发与XP实践)实验报告...

实验报告记录了Java程序设计中使用alibaba插件进行代码操作,如MoveLine、SurroundWith、单元测试案例编写,以及Caesar密码学项目中的重构和测试。作者体验了结对编程和代码规范性的重要性。
摘要由CSDN通过智能技术生成

20165219 《Java程序设计》实验三(敏捷开发与XP实践)实验报告

一、实验报告封面

课程:Java程序设计 班级:1652班 姓名:王彦博 学号:20165219 成绩:

指导教师:娄嘉鹏 实验日期:2018年4月30日

实验时间:15:45 - 17:20

实验序号:实验三

实验名称:敏捷开发与XP实践

实验内容:

XP基础

XP核心实践

相关工具

实验要求:

1 没有Linux基础的同学建议先学习《Linux基础入门(新版)》《Vim编辑器》 课程;

2 完成实验、撰写实验报告,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等)、解决办法(空洞的方法如“查网络”、“问同学”、“看书”等一律得0分)以及分析(从中可以得到什么启示,有什么收获,教训等);

3 实验报告中统计自己的PSP(Personal Software Process)时间;

4 严禁抄袭。

二、实验内容及步骤

(一)alibaba 插件与Code菜单

Move Line/statement Down/Up:将某行、表达式向下、向上移动一行

suround with:用 try-catch,for,if等包裹语句

comment with line/block comment:把选中它区域变成注释

show reformat file dialog:按照格式自动对齐

Optimize imports:优化imports

Insert Live Template:插入 Live Template 缩写

例如:comment with line/block comment,把代码中选中的部分变成注释

04b2ff7e1aefb674e0c9e97af5e94e60.png

(二)Complex代码添加测试用例

同伴代码

public class Complex {

// 定义属性并生成getter,setter

private double r;

private double i;

// 定义构造函数

public Complex(double r, double i) {

this.r = r;

this.i = i;

}

public static double getRealPart(double r) {

return r;

}

public static double getImagePart(double i) {

return i;

}

//Override Object

public boolean equals(Object obj) {

Complex complex = (Complex) obj;

if (complex.r != r) {

return false;

}

if (complex.i != i) {

return false;

}

return true;

}

public String toString() {

String str = new String();

if (i == 0) str = r + "";

else if (i < 0) str = r + "" + i + "i";

else str = r + "" + "+" + i + "i";

return str;

}

// 定义公有方法:加减乘除

Complex ComplexAdd(Complex a) {

return new Complex(r + a.r, i + a.i);

}

Complex ComplexSubtract(Complex a) {

return new Complex(r - a.r, i - a.i);

}

Complex ComplexMultiply(Complex a) {

return new Complex(r * a.r - i * a.i, r * a.i + i * a.r);

}

Complex ComplexDivide(Complex a) {

return new Complex((r * a.r + i * a.i) / (a.r * a.r + a.i * a.i), (i * a.r - r * a.i) / (a.r * a.r + a.i * a.i));

}

}

添加测试用例

import junit.framework.TestCase;

import org.junit.Test;

import static org.junit.Assert.*;

public class ComplexTest extends TestCase {

Complex a=new Complex(1,2);

Complex b=new Complex(-2,-1);

Complex d=new Complex(4,-2);

@Test

public void testequals(){

assertEquals(false,a.equals(b));

assertEquals(false,b.equals(c));

assertEquals(true,new Complex(1.0,2.0).equals(a));

}

@Test

public void testAdd(){

assertEquals(new Complex(-1,1),a.ComplexAdd(b));

assertEquals(new Complex(5,0),a.ComplexAdd(c));

}

@Test

public void testSubtract(){

assertEquals(new Complex(3,3),a.ComplexSubtract(b));

assertEquals(new Complex(-3,4),a.ComplexSubtract(c));

}

@Test

public void testMultiply(){

assertEquals(new Complex(0,-5),a.ComplexMultiply(b));

assertEquals(new Complex(17,4),new Complex(3,2.5).ComplexMultiply(c));

}

@Test

public void testDivide(){

assertEquals(new Complex(0,0.5),a.ComplexDivide(c));

assertEquals(new Complex(-2,-1),b.ComplexDivide(new Complex(1,0)));

}

}

测试通过的截图

725553dbac331cd7c308571ef529f02f.png

git log的截图

3259f66ad1d1046733f385fc99838645.png

dcc59fc8be9e200694f91c80a84b8812.png

(三)重构

Rename可以给类、包、方法、变量改名字,增加代码的可读性。

5b0f06f32850e6e603e95c1fefd7d806.png

Refactor->Encapsulate Field...用来封装成员变量

c2115b456044a69ed251dd6f14ebe276.png

Source->Generate toString()...用来产生一个toString方法

(四)以结对方式完成Java密码学的学习

凯撒密码的密钥是3,算法是将普通字母表中的字母用密钥对应的字母替换

凯撒密码的加密过程可记为如下一个变换:

c≡m+k mod n (其中n为基本字符个数)

同样,解密过程可表示为:

m≡c+k mod n (其中n为基本字符个数)

成果如下:

cbbaf6e2ca67e2ce37810decd123ecb5.png

重构

将Code,Rename为Caesar,并为p赋初值0

515e22140edad4cf4ea8d056a3be1b0f.png

三、实验体会

通过本次实验,又一次体会到了结对编程的魅力,通过学习重构代码,也理解了,代码的规范性以及可读性的重要意义。

四、PSP

步骤

耗时

百分比

需求分析

20min

8%

设计

60min

25%

代码实现

120min

50%

测试

10min

4%

分析总结

30min

13%

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值