20155229实验三 《Java面向对象程序设计实验三 敏捷开发与XP实践 》实验报告

实验题目

1.在IDEA中使用工具(Code->Reformate Code)把下面代码重新格式化,再研究一下Code菜单,找出一项让自己感觉最好用的功能。

2.下载搭档实验二的Complex代码,加入不少于三个JUnit单元测试用例

3.完成重构内容的练习,下载搭档的代码,至少进行三项重构

4.以结对的方式完成Java密码学相关内容的学习

实验步骤

(1)编码标准

  • 编程标准包含:具有说明性的名字、清晰的表达式、直截了当的控制流、可读的代码和注释,以及在追求这些内容时一致地使用某些规则和惯用法的重要性。

本次实验题目如下:

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

在IDEA中使用工具Code->Reformate Code将上面的代码格式化后,得到的结果为:

832288-20170507204236398-1677962865.jpg

然后再IDEA中,我还学到Code->Move Line UpCode -> Move Line Down能够将代码往上/下移动。

(2)添加单元测试用例

  • 搭档的Complex代码为:
/**

 * Created by Administrator on 2017/4/21.

 */
public class Complex {
    // 定义属性并生成getter,setter

    private double RealPart;
    private double ImagePart;

    public void setterRealPart(double realPart) {
        this.RealPart = realPart;
    }
    public void setterImagePart(double imagePart){
        this.ImagePart = imagePart;
    }
    public double getterRealPart(){
        return RealPart;
    }
    public double getterImagePart(){
        return ImagePart;
    }

    // 定义构造函数

    public Complex(){}
    public Complex(double R,double I){
        this.RealPart = R;
        this.ImagePart = I;
    }

    //Override Object

    public boolean equals(Object obj){
        if(this == obj){
            return true;
        }
        if(!(obj instanceof Complex)){
            return false;
        }
        Complex complex = (Complex) obj;
        if(getterRealPart()!=complex.getterRealPart()){
            return false;
        }
        if(getterImagePart()!=(complex.getterImagePart())){
            return false;
        }
        return true;
    }
    public String toString(){
        String s = new String(Double.toString(getterRealPart()));
        //  s.concat(Double.toString(getterRealPart()));

        if(getterImagePart()>0)
        s = s + '+';
        s = s + Double.toString(getterImagePart());
       // s.concat(Double.toString(getterImagePart()));

        s = s + 'i';
        return s;
    }

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

    Complex ComplexAdd(Complex a){
        Complex b = new Complex();
        b.ImagePart = this.ImagePart + a.ImagePart;
        b.RealPart = this.RealPart + a.RealPart;
        return b;
    }
    Complex ComplexSub(Complex a){
        Complex b = new Complex();
        b.ImagePart = this.ImagePart - a.ImagePart;
        b.RealPart = this.RealPart - a.RealPart;
        return b;
    }
    Complex ComplexMulti(Complex a){
        Complex b = new Complex();
        b.RealPart = this.RealPart * a.RealPart - this.ImagePart * a.ImagePart;
        b.ImagePart = this.RealPart * a.ImagePart + this.ImagePart * a.RealPart;
        return b;
    }
    Complex  ComplexDiv(Complex a) {
        Complex b = new Complex();
        b.RealPart = (this.RealPart * a.RealPart + this.ImagePart * a.ImagePart)/(a.RealPart*a.RealPart+a.ImagePart*a.ImagePart);
        b.ImagePart = (this.ImagePart * a.RealPart - this.RealPart * a.ImagePart)/(a.RealPart*a.RealPart+a.ImagePart*a.ImagePart);
        return b;
    }
}
  • ComplexTest代码为:

832288-20170507204504211-1606863690.jpg

  • 添加单元测试用例后为:

832288-20170507204604007-1177436180.jpg

  • git log的截图:

832288-20170507204732367-329502618.jpg

(3)重构

重构就是通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性。

重构目标
  • 改进软件设计使软件更容易被理解
  • 帮你找到bug
  • 提高软件的开发速度
重构时机
  • 在添加新功能时进行重构。
  • 在修改bug时进行重构。
  • 在代码复审时进行重构。
  • 到了最后的交付期限,不进行重构

下载的搭档的代码为:

832288-20170507204753461-394332635.jpg

重构后的代码为:
832288-20170507204805445-891338897.jpg

(4)结对学习java密码学内容

上周学习了java关于密码学的内容,在此基础上本周和搭档结对继续学习

首先我们学习了娄老师给的凯撒密码的代码:

public static void main(String args[]) throws Exception{
String s=args[0];
        int key=Integer.parseInt(args[1]);
        String es="";
        for(int i=0;i<s.length( );i++)
{  char c=s.charAt(i);
               if(c>='a' && c<='z') // 是小写字母
                  { c+=key%26;  //移动key%26位
                    if(c<'a') c+=26;  //向左超界
                    if(c>'z') c-=26;  //向右超界
                  }
               else if(c>='A' && c<='Z') // 是大写字母
{  c+=key%26;
                    if(c<'A') c+=26;
                    if(c>'Z') c-=26;
                  }
               es+=c;
           }
       System.out.println(es);
     }

在此基础上,我们对该代码进行了改编,最后得到的代码为:

832288-20170507204851351-1292168075.jpg

实验心得与体会

在本次实验中,首先了解了IDEA对代码特别方便的运用,这与虚拟机中的vim的命令是相似的;其次git colne了搭档的代码,在这过程中,最难完成的是,git后IDEA会出现各种错,且不太好解决,但实验二添加单元测试用例这是对上周学习的内容的复习。实验三让我了解了重构,重构在编写代码时能够使我们的代码更清晰,更简便。最后结对学习java密码学,这让我学到了结对学习的重要性,因为两个人会有不同的思路,这样能够筛选出好的思路进行编写代码。

我的PSP时间

步骤耗时百分比
需求分析30分钟18.75 %
设计30分钟18.75%
代码实现60分钟37.5%
测试30分钟18.75%
分析总结10分钟6.25%

参考资料

转载于:https://www.cnblogs.com/fyhtvxq/p/6822219.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值