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

Stella981
• 阅读 660

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,把代码中选中的部分变成注释 20165219 《Java程序设计》实验三(敏捷开发与XP实践)实验报告

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

测试通过的截图

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

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

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

(三)重构

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

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

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

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

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

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

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

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

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

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

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

成果如下:

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

重构 将Code,Rename为Caesar,并为p赋初值0 20165219 《Java程序设计》实验三(敏捷开发与XP实践)实验报告

三、实验体会

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

四、PSP

步骤

耗时

百分比

需求分析

20min

8%

设计

60min

25%

代码实现

120min

50%

测试

10min

4%

分析总结

30min

13%

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
待兔 待兔
3个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
可莉 可莉
3年前
20165219 《Java程序设计》实验三(敏捷开发与XP实践)实验报告
20165219《Java程序设计》实验三(敏捷开发与XP实践)实验报告一、实验报告封面课程:Java程序设计班级:1652班姓名:王彦博学号:20165219成绩:指导教师:娄嘉鹏实验日期:2018年4月30日实验时间:15:4517:20
Wesley13 Wesley13
3年前
Java周总结3
撰写第三周课程总结及实验报告(一)Java实验报告班级计科一班  学号20188375  姓名汤云云  完成时间评分等级实验一Java开发环境与简单Java程序一、 实验目的(1) 熟悉JDK开发环境(2) 熟练掌握结构化程序设计方法二、 实验内容1.打印输
Wesley13 Wesley13
3年前
20165220 实验三 敏捷开发与XP实践 实验报告
!(https://oscimg.oschina.net/oscnet/b9a274a8aa73f183817cba5deb6205566e2.jpg)实验三敏捷开发与XP实践1实验要求:实验三敏捷开发与XP实践http://www.cnblogs.com/rocedu/p/4795776
可莉 可莉
3年前
20175212童皓桢 Java实验二
20175212童皓桢Java实验二面向对象程序设计实验报告实验内容初步掌握单元测试和TDD理解并掌握面向对象三要素:封装、继承、多态初步掌握UML建模熟悉S.O.L.I.D原则了解设计模式实验步骤
Stella981 Stella981
3年前
20175212童皓桢 Java实验二
20175212童皓桢Java实验二面向对象程序设计实验报告实验内容初步掌握单元测试和TDD理解并掌握面向对象三要素:封装、继承、多态初步掌握UML建模熟悉S.O.L.I.D原则了解设计模式实验步骤
可莉 可莉
3年前
20165235 实验一 Java开发环境的熟悉
20165235实验一Java开发环境的熟悉课程:JAVA程序设计姓名:祁瑛学号:20165235指导老师:娄嘉鹏实验日期:2018.4.2实验内容:java开发环境的熟悉一,实验内容及步骤实验一Java开发环境的熟
Stella981 Stella981
3年前
20165235 实验一 Java开发环境的熟悉
20165235实验一Java开发环境的熟悉课程:JAVA程序设计姓名:祁瑛学号:20165235指导老师:娄嘉鹏实验日期:2018.4.2实验内容:java开发环境的熟悉一,实验内容及步骤实验一Java开发环境的熟
Python进阶者 Python进阶者
9个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这