20175325 《JAVA程序设计》实验三《敏捷开发与XP实践》实验报告

20175325 《JAVA程序设计》实验三《敏捷开发与XP实践》实验报告

一、实验报告封面
课程:Java程序设计 班级:1753班 姓名:石淦铭 学号:20175325 成绩:
指导教师:娄嘉鹏 实验日期:2019年5月2日
实验时间:13:45 - 17:25
实验序号:实验三 实验名称:敏捷开发与XP实践

实验内容:
1.XP基础
2.XP核心实践
3.相关工具

二、实验内容及步骤:
(一)、实验一
1、题目:

  • 实验三 敏捷开发与XP实践 http://www.cnblogs.com/rocedu/p/4795776.html, Eclipse的内容替换成IDEA
  • 参考 http://www.cnblogs.com/rocedu/p/6371315.html#SECCODESTANDARD 安装alibaba 插件,解决代码中的规范问题。
  • 在IDEA中使用工具(Code->Reformate Code)把下面代码重新格式化,再研究一下Code菜单,找出一项让自己感觉最好用的功能。提交截图,加上自己学号水印。
public class CodeStandard {
public static void main(String [] args){
StringBuffer buffer = new StringBuffer();
buffer.append('S');
buffer.append("tringBuffer");
System.out.println(buffer.charAt(1));
System.out.println(buffer.capacity());
System.out.println(buffer.indexOf("tring"));
System.out.println("buffer = " + buffer.toString());
if(buffer.capacity()<20)
buffer.append("1234567");
for(int i=0; i<buffer.length();i++)
System.out.println(buffer.charAt(i));
}
}

2、解答:

  • 使用工具(Code->Reformate Code)把上面代码重新格式化,实验截图:
  • code菜单:
    • Move Line/statement Down/Up:将某行表达式向下/向上移动一行
    • generate可以自动创建类里面任何字段的 gettersetter 方法
    • Reformat Code:格式化代码
    • suround with:代码块环绕
    • comment with line/block comment:将选中区域变成注释
    • show reformat file dialog:格式自动对齐
    • Optimize imports:去除不必要的imports
    • Insert Live Template:插入Live Template 的缩写
  • 感觉好用的功能:Move Line/statement Down/Up(将某行、表达式向下/向上移动一行)

(二)、实验二
1、题目:

  • 在码云上把自己的学习搭档加入自己的项目中,确认搭档的项目加入自己后,下载搭档实验二的Complex代码,加入不少于三个JUnit单元测试用例,测试成功后git add .; git commit -m "自己学号 添加内容";git push;
  • 提交搭档项目git log的截图,包含上面git commit的信息,并加上自己的学号水印信息。

2、解答:

  • 搭档的实验二Complex代码:
public class Complex {
    // 定义属性并生成getter,setter
    double RealPart;
    double ImagePart;
    // 定义构造函数
    public Complex(){
        RealPart = 0;
        ImagePart = 1;
    }
    public Complex(double R,double I){
        ImagePart = I;
        RealPart = R;
    }

    //Override Object
    public boolean equals(Object obj){
        if(this == obj) {
            return true;
        }
        if(!(obj instanceof Complex)) {
            return false;
        }
        Complex complex = (Complex) obj;
        if(complex.RealPart != ((Complex) obj).RealPart) {
            return false;
        }
        if(complex.ImagePart != ((Complex) obj).ImagePart) {
            return false;
        }

        return true;
    }
    public String toString()   {
        String string = "";
        if (ImagePart > 0)
            string =  RealPart + "+" + ImagePart + "i";
        if (ImagePart == 0)
            string =  RealPart + "";
        if (ImagePart < 0)
            string = RealPart + " " + ImagePart + "i";
        return string;
    }
    // 定义公有方法:加减乘除
    Complex ComplexAdd(Complex a) {
        return  new Complex(RealPart+a.RealPart,ImagePart+a.ImagePart);
    }
    Complex ComplexSub(Complex a) {
        return new Complex(RealPart-a.RealPart,ImagePart-a.ImagePart);
    }
    Complex ComplexMulti(Complex a) {
        return new Complex(RealPart*a.RealPart,ImagePart*a.ImagePart);
    }
    Complex ComplexDiv(Complex a) {
        if(a.RealPart==0||a.ImagePart==0) {
            System.out.println("被减数不能为0");
            return new Complex();
        }

        double d = Math.sqrt(a.RealPart*a.RealPart)+Math.sqrt(a.ImagePart*a.ImagePart);
        return new Complex((RealPart*a.RealPart+ImagePart*a.ImagePart)/d,Math.round((RealPart*a.ImagePart-ImagePart*a.RealPart)/d));
    }
}
  • 进行的JUnit单元测试代码如下:
import junit.framework.TestCase;
import org.junit.Test;
public class ComplexTest extends TestCase {
    Complex a=new Complex(1,2);
    Complex b=new Complex(-2,-1);
    Complex c=new Complex(4,-2);
    Complex d=new Complex(4,-2);

    @Test
    public void testAdd(){
        assertEquals(new Complex(-1,1),a.ComplexAdd(b));
        assertEquals(new Complex(5,0),a.ComplexAdd(c));
    }
    @Test
    public void testSub(){
        assertEquals(new Complex(3,3),a.ComplexSub(b));
        assertEquals(new Complex(-3,4),a.ComplexSub(c));
    }
    @Test
    public void testMulti(){
        assertEquals(new Complex(0,-5),a.ComplexMulti(b));
        assertEquals(new Complex(8,6),a.ComplexMulti(c));
    }
    @Test
    public void testDiv(){
        assertEquals(new Complex(0,0.5),a.ComplexDiv(c));
        assertEquals(new Complex(-0.3,-0.4),b.ComplexDiv(c));
    }
}
  • 测试成功截图:

(三)、实验三
1、题目:

  • 实验三 敏捷开发与XP实践 http://www.cnblogs.com/rocedu/p/4795776.html, Eclipse的内容替换成IDEA
  • 完成重构内容的练习,下载搭档的代码,至少进行三项重构,提交重构后代码的截图,加上自己的学号水印。提交搭档的码云项目链接

2、解答

  • 重构(Refactor),就是在不改变软件外部行为的基础上,改变软件内部的结构,使其更加易于阅读、易于维护和易于变更 。
  • 一个完整的重构流程包括:

    • 从版本控制系统代码库中Check out code
    • 读懂代码(包括测试代码)
    • 发现bad smell
    • Refactoring
    • 运行所有的Unit Tests
    • 往代码库中Check in code
  • 完成重构后的代码截图:

(四)、实验四
1、题目:

  • 参考 http://www.cnblogs.com/rocedu/p/6683948.html,以结对的方式完成Java密码学相关内容的学习,结合重构,git,代码标准。
  • 提交学习成果码云链接和代表性成果截图,要有学号水印。

2、解答:

  • 密码学: 主要是研究保密通信和信息保密的学科, 包括信息保密传输和信息加密存储等。
  • Java密码学算法:

    • 体验加解密--凯撒密码
    • Java对称加密--DES算法
    • Java非对称加密--RSA算法
    • 使用密钥协定创建共享密钥
    • Java摘要算法- MD5
    • Java混合密码系统
  • 实验结果截图:

三、实验感想:
通过这次实验,体会到了结对编程的魅力,学习了重构代码,也理解了代码的规范性以及可读性的重要意义,规范的代码能使我们对代码内容一目了然。

四、PSP:

步骤 耗时 百分比
需求分析 10 10%
设计 15 15%
代码实现 40 40%
测试 20 20%
分析结果 15 15%

原文地址:https://www.cnblogs.com/sgm5/p/10802584.html

时间: 2024-08-06 02:19:49

20175325 《JAVA程序设计》实验三《敏捷开发与XP实践》实验报告的相关文章

20175212童皓桢 实验三敏捷开发与XP实践实验报告

20175212童皓桢 实验三敏捷开发与XP实践实验报告 实验内容 XP基础 XP核心实践 相关工具 实验步骤 一.Code菜单功能的研究 Move Line/statement Down/Up:将某行.表达式向下.向上移动一行 suround with:用 try-catch,for,if等包裹语句 comment with line/block comment:把选中它区域变成注释 show reformat file dialog:按照格式自动对齐 Optimize imports:可以优

20175312 2018-2019-2 实验三 敏捷开发与XP实践 实验报告

20175312 2018-2019-2 实验三 敏捷开发与XP实践 实验报告 实验步骤与运行结果 实验三 敏捷开发与XP实践-1 实验三 敏捷开发与XP实践 http://www.cnblogs.com/rocedu/p/4795776.html, Eclipse的内容替换成IDEA 参考 http://www.cnblogs.com/rocedu/p/6371315.html#SECCODESTANDARD 安装alibaba 插件,解决代码中的规范问题. 在IDEA中使用工具(Code->

20165220 实验三 敏捷开发与XP实践 实验报告

实验三 敏捷开发与XP实践-1 实验要求: 实验三 敏捷开发与XP实践 http://www.cnblogs.com/rocedu/p/4795776.html, Eclipse的内容替换成IDEA 参考http://www.cnblogs.com/rocedu/p/6371315.html#SECCODESTANDARD 安装alibaba 插件,解决代码中的规范问题. 在IDEA中使用工具(Code->Reformate Code)把下面代码重新格式化,再研究一下Code菜单,找出一项让自己

实验三 敏捷开发与XP实践 实验报告

课程:Java程序设计实验   班级:1353  姓名:余佳源  学号:20135321 成绩:                           指导教师:娄嘉鹏      实验日期:2015.6.4 实验密级:无            预习程度:                   实验时间:15:30~18:00 仪器组次:  21                    必修/选修: 选修                  实验序号:3 实验名称:敏捷开发与XP实践 实验内容 1. XP

20145207 实验三 敏捷开发与XP实践 实验报告

实验内容 XP基础 XP核心实践 相关工具 实验要求 1.没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器> 课程 2.完成实验.撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等).解决办法(空洞的方法如"查网络"."问同学"."看书"等一律得0分)以及分析(从中可以得到什么启示,有什么收获,教训等).报告可以

JAVA课程实验报告 实验三 敏捷开发与XP实践

北京电子科技学院(BESTI) 实     验    报     告 课程:Java程序设计  班级:1353  姓名:韩玉琪  学号:20135317 成绩:             指导教师:娄嘉鹏             实验日期:2015.5.29 实验密级:         预习程度:                     实验时间:15:30--18:00 仪器组次:         必修/选修: 选修             实验序号:3 实验名称:实验三 敏捷开发与XP实践 实

20165226 实验三 敏捷开发与XP实践

实验三 敏捷开发与XP实践 实验目的 一.安装alibaba 插件,解决代码中的规范问题.在IDEA中使用工具(Code->Reformate Code)格式化代码,研究一下Code菜单,比较功能. 二.在码云上把自己的学习搭档加入自己的项目中,下载搭档实验二的Complex代码,加入不少于三个JUnit单元测试用例,测试并上传代码至码云 三.下载搭档的代码,完成重构内容的练习. 四.结合重构,git,代码标准,以结对的方式完成Java密码学相关内容的学习. 实验内容及步骤 (一)安装aliba

20155327 实验三 敏捷开发与XP实践

20155327 实验三 敏捷开发与XP实践 实验内容 任务一 参考 http://www.cnblogs.com/rocedu/p/6371315.html#SECCODESTANDARD 安装alibaba 插件,解决代码中的规范问题. 在IDEA中使用工具(Code->Reformate Code)把下面代码重新格式化,再研究一下Code菜单,找出一项让自己感觉最好用的功能.提交截图,加上自己学号水印. public class CodeStandard { public static v

2018-2019-2 20175303 实验三敏捷开发与XP实践《Java开发环境的熟悉》实验报告

2018-2019-2 20175303 实验三敏捷开发与XP实践<Java开发环境的熟悉>实验报告 实验报告封面 课程:Java程序设计 班级:1753 姓名:柴轩达 学号:20175303 指导教师:娄嘉鹏 实验日期:2019年4月29日-5月2日 实验序号:3 实验名称:敏捷开发与XP实践 实验步骤 敏捷开发与XP实践-1 实验要求 参老师给的链接安装alibaba 插件,解决代码中的规范问题. 在IDEA中使用工具(Code->Reformate Code)把下面代码重新格式化,

2018-2019-20175322 实验三敏捷开发与XP实践《Java开发环境的熟悉》实验报告

2018-2019-20175322 实验三敏捷开发与XP实践<Java开发环境的熟悉>实验报告 实验内容 1.XP基础 2.XP核心实践 3.相关工具 实验要求 1.没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器> 课程 2.完成实验.撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等).解决办法(空洞的方法如"查网络"."问