博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
20165219 《Java程序设计》实验三(敏捷开发与XP实践)实验报告
阅读量:5208 次
发布时间:2019-06-14

本文共 3553 字,大约阅读时间需要 11 分钟。

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

一、实验报告封面

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

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

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

实验序号:实验三

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

实验内容:

  1. XP基础

  2. XP核心实践

  3. 相关工具

实验要求:

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,把代码中选中的部分变成注释

1296533-20180426213116463-891534498.jpg

(二)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)));  }}

测试通过的截图

1296533-20180426213144090-2119371364.jpg

git log的截图

1296533-20180426213152616-1842254480.jpg

1296533-20180426213218052-2140634808.png

(三)重构

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

1296533-20180426213237957-1829146792.jpg

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

1296533-20180426213254819-164502746.jpg

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

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

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

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

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

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

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

成果如下:

1296533-20180426213321027-534397955.jpg

重构

将Code,Rename为Caesar,并为p赋初值0
1296533-20180426213331110-997300826.jpg

三、实验体会

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

四、PSP

步骤 耗时 百分比
需求分析 20min 8%
设计 60min 25%
代码实现 120min 50%
测试 10min 4%
分析总结 30min 13%

转载于:https://www.cnblogs.com/wyb-1998/p/8955156.html

你可能感兴趣的文章
YII缓存依赖的应用
查看>>
决策树在机器学习的理论学习与实践
查看>>
Biee 11g权限详解
查看>>
minggw 安装
查看>>
Jquery操作cookie,实现简单的记住用户名的操作
查看>>
[BZOJ1196][HNOI2006]公路修建问题 二分答案+最小生成树
查看>>
PHP基础入门(二)
查看>>
[Luogu P3119] [USACO15JAN]草鉴定Grass Cownoisseur (缩点+图上DP)
查看>>
【原创】大数据基础之Zookeeper(4)应用场景
查看>>
18款在线代码片段测试工具
查看>>
20.C++- &&,||逻辑重载操作符的缺陷、,逗号重载操作符的分析
查看>>
静态变量数组实现LRU算法
查看>>
在SQL中怎么把一列字符串拆分为多列
查看>>
中文系统 上传file的input显示英文
查看>>
css样式写一个三角形
查看>>
比callback更简洁的链式执行promise
查看>>
android permission
查看>>
javascript获取textarea中所选文本的开始位置、结束位置和选择的文本
查看>>
【译】在Asp.Net中操作PDF - iTextSharp - 使用字体
查看>>
事务备份还原分离附加
查看>>