zoukankan      html  css  js  c++  java
  • 20165201 实验三敏捷开发与XP实践

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


    敏捷开发与XP实践-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));
    }
    }
    

    实验内容及结果截图:

    • Code->Reformate Code

    • 重新格式化之后

    • 我发现Code->Surround with...功能很好用,例如我们想改变自己代码的部分逻辑结构,加个if语句,直接用这个功能就好了,先选择范围

    • 再点Code->Surround with...

    • 选要添加的语句~

    • 结果如下

    敏捷开发与XP实践-2

    实验目的与要求:

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

    • 提交搭档项目git log的截图,包含上面git commit的信息,并加上自己的学号水印信息。

    实验内容及结果截图:

    • 搭档的Complex代码
    import java.lang.*;
    public class Complex {
        // 定义属性并生成getter,setter
        public void setRealpart(double R){
            RealPart=R;
        }
        public double getRealpart(){
            return RealPart;
        }
        public void setImagePart(double I){
            ImagePart=I;
        }
        public double getImagePart(){
            return ImagePart;
        }
    
        double RealPart;
        double ImagePart;
        // 定义构造函数
        public Complex(double R,double I){
            RealPart=R;
            ImagePart=I;
        }
    
        //Override Object
        public boolean equals(Complex obj){
            if(this.getRealpart()==obj.getRealpart() && this.getImagePart()==obj.getImagePart())
                return true;
            else
                return false;
        }
        public String toString(){
            return RealPart+"+"+ImagePart+"i";
        }
    
        // 定义公有方法:加减乘除
        public Complex ComplexAdd(Complex a){
            return new Complex(this.RealPart+a.RealPart,this.ImagePart+a.ImagePart);
        }
        public Complex ComplexSub(Complex a){
            return new Complex(this.RealPart-a.RealPart,this.ImagePart-a.ImagePart);
        }
        public Complex ComplexMulti(Complex a){
            return new Complex(this.RealPart*a.RealPart-this.ImagePart*a.ImagePart,
                    this.RealPart*a.ImagePart+this.ImagePart*a.RealPart);
        }
        public Complex ComplexDiv(Complex a){
            double x=this.RealPart;
            double y=this.ImagePart;
            double m=a.RealPart;
            double n=a.ImagePart;
            return new Complex((x*m+y*n)/(m*m+n*n),(y*m-x*n)/(m*m+n*n));
        }
    }
    
    • 加入不少于三个JUnit单元测试用例,并且测试成功
      我加入了

      @Test
      public void testAdd_2(){
          assertEquals("5.0+0.0i",p3.ComplexAdd(p4).toString());
          System.out.println(p3.ComplexAdd(p4));
      }
      @Test
      public void testSub_2(){
          assertEquals("-1.0+2.0i",p3.ComplexSub(p4).toString());
          System.out.println(p3.ComplexSub(p4));
      }
      @Test
      public void testMut_2(){
          assertEquals("7.0+1.0i",p3.ComplexMulti(p4).toString());
          System.out.println(p3.ComplexMulti(p4));
      }
      @Test
      public void testDiv_2(){
          assertEquals("0.5+0.5i",p3.ComplexDiv(p4).toString());
          System.out.println(p3.ComplexDiv(p4));
      }
      
    • 全部代码如下

    import junit.framework.TestCase;
    import org.junit.Test;
    public class ComplexTest extends TestCase {
        Complex p1=new Complex(1,1);
        Complex p2=new Complex(1,-1);
        Complex p3=new Complex(2,1);
        Complex p4=new Complex(3,-1);
        @Test
        public void testAdd(){
            assertEquals("2.0+0.0i",p1.ComplexAdd(p2).toString());
            System.out.println(p1.ComplexAdd(p2));
        }
        @Test
        public void testSub(){
            assertEquals("0.0+2.0i",p1.ComplexSub(p2).toString());
            System.out.println(p1.ComplexSub(p2));
        }
        @Test
        public void testMut(){
            assertEquals("2.0+0.0i",p1.ComplexMulti(p2).toString());
            System.out.println(p1.ComplexSub(p2));
        }
        @Test
        public void testDiv(){
            assertEquals("0.0+1.0i",p1.ComplexDiv(p2).toString());
            System.out.println(p1.ComplexDiv(p2));
        }
        @Test
        public void testAdd_2(){
            assertEquals("5.0+0.0i",p3.ComplexAdd(p4).toString());
            System.out.println(p3.ComplexAdd(p4));
        }
        @Test
        public void testSub_2(){
            assertEquals("-1.0+2.0i",p3.ComplexSub(p4).toString());
            System.out.println(p3.ComplexSub(p4));
        }
        @Test
        public void testMut_2(){
            assertEquals("7.0+1.0i",p3.ComplexMulti(p4).toString());
            System.out.println(p3.ComplexMulti(p4));
        }
        @Test
        public void testDiv_2(){
            assertEquals("0.5+0.5i",p3.ComplexDiv(p4).toString());
            System.out.println(p3.ComplexDiv(p4));
        }
    }
    
    • 提交搭档项目git log的截图,包含上面git commit的信息

    敏捷开发与XP实践-3

    实验目的与要求:

    • http://www.cnblogs.com/rocedu/p/4795776.html, Eclipse的内容替换成IDEA

    • 完成重构内容的练习,下载搭档的代码,至少进行三项重构,提交重构后代码的截图,加上自己的学号水印。提交搭档的码云项目链接。

    实验内容及结果截图:

    • 搭档的代码如下:
    import java.sql.*;
    
    public class shm {
    	public static void main(String args[]) {
    		Connection con = null;
    		Statement sql;
    		ResultSet rs;
    		float di = 50.0f;
    		float gao = 50.0f;
    		String country_low = "A";
    		String country_high = "B";
    		try {
    			/* 加载JDBC_MySQL驱动 */
    			Class.forName("com.mysql.jdbc.Driver");
    		} catch (Exception e) {
    		}
    		String uri = "jdbc:mysql://localhost:3306/world?useSSL=true";
    		String user = "root";
    		String password = "";
    		try {
    			con = DriverManager.getConnection(uri, user, password); //连接代码
    		} catch (SQLException e) {
    		}
    		try {
    			sql = con.createStatement();
    			rs = sql.executeQuery("SELECT * FROM country"); //查询mess表
    			while (rs.next()) {
    				String name = rs.getString(2);
    				float LifeExpectancy = rs.getFloat(8);
    				if (LifeExpectancy < di && LifeExpectancy>0) {
    					di = LifeExpectancy;
    					country_low = name;
    				}
    				if (LifeExpectancy > gao) {
    					gao = LifeExpectancy;
    					country_high = name;
    				}
    			}
    			con.close();
    		}
    		catch (SQLException e) {
    			System.out.println(e);
    		}
    
    		System.out.printf("平均寿命最长的国家为: %s", country_high);
    		System.out.printf("平均寿命最短的国家为: %s
    ", country_low);
    	}
    }
    
    • 重构成功的截图如下:
      (我重构了类名shm->Life;变量名float di = 50.0f; float gao = 50.0f;->float low = 50.0f; float high = 50.0f;;并规范了注释)

    敏捷开发与XP实践-4

    实验目的与要求:

    实验内容及结果截图:

    • 我们的码云链接:
      DES算法
      RSA算法

    • 我们的代表性成果截图(DES算法)

      运行java Skey_DES,在当前目录下将生成文件key1.dat,其中包含的密钥可以用于使用Triple-DES算法的加密和解密

      先创建文件输出流对象,在其参数中指定文件名,如keykb1.dat。然后执行文件输出流的write( )方法将第2步中得到的字节数组中的内容写入文件

      加密结果是字节数组,对其可作各种处理,如在网上传递、保存在文件中等。我们将其保存在文件Senc.dat中

      先获取密文和秘钥,最后将明文生成字符串加以显示

    • 我们的代表性成果截图(RSA算法)

    实验过程中的问题

      这次的实验我们遇到了两个难题,重构代码的时候,我们自己写的代码本身就不够规范,给结对伙伴改代码就比较费劲,今后还要多加规范地练习;其次是对DES和RSA密码算法不够熟悉,密码学的课当时还没讲到,所以理解起来很晦涩难懂。

    实验体会与总结

      我深刻地体会到了结对学习的好处,那就是两个人能够及时互相找出并改正错误,一个班那么多人,不可能等老师帮着一个一个找,而结对形式恰恰弥补了这一点和搭档的合作很愉快

    步骤 耗时 百分比
    需求分析 5 8.3%
    设计 10 16.6%
    代码实现 20 33.3%
    测试 20 33.3%
    分析总结 5 8.3%
  • 相关阅读:
    jQuery 2.0.3 源码分析 Deferred(最细的实现剖析,带图)
    jQuery 2.0.3 源码分析 Deferrred概念
    jQuery 2.0.3 源码分析core
    jQuery 2.0.3 源码分析core
    JavaScript异步机制
    使用Node.js实现数据推送
    自定义jQuery插件Step by Step
    转 CSS hack:针对IE6,IE7,firefox显示不同效果
    ie6,ie7兼容性总结(转)
    QQ浏览器X5内核问题汇总
  • 原文地址:https://www.cnblogs.com/cbmwtsl/p/9000366.html
Copyright © 2011-2022 走看看