20155237 《JAVA程序設計》實驗三(敏捷開發與XP實踐)實驗報告

20155237 《JAVA程序設計》實驗三(敏捷開發與XP實踐)實驗報告

實驗內容

  • 敏捷開發與XP實踐
    • XP基礎
    • XP核心實踐
    • 相關工具

實驗要求

1.沒有Linux基礎的同窗建議先學習《Linux基礎入門(新版)》《Vim編輯器》 課程java

2.完成實驗、撰寫實驗報告,實驗報告以博客方式發表在博客園,注意實驗報告重點是運行結果,遇到的問題(工具查找,安裝,使用,程序的編輯,調試,運行等)、解決辦法(空洞的方法如「查網絡」、「問同窗」、「看書」等一概得0分)以及分析(從中能夠獲得什麼啓示,有什麼收穫,教訓等)。報告能夠參考範飛龍老師的指導算法

實驗步驟與結果

Code工具的使用

  • 在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));
}
}
  • 格式化

測試Complex代碼

重構代碼

  • 重構(Refactoring)就是經過調整程序代碼改善軟件的質量、性能,使其程序的設計模式和架構更趨合理,提升軟件的擴展性和維護性。設計模式

  • 重構的目標
    1.改進軟件設計使軟件更容易被理解
    2.幫你找到bug
    3.提升軟件的開發速度網絡

  • 重構搭檔代碼架構

重構java密碼學代碼

凱撒密碼

  • 加密過程app

  • 明文記爲m,密文記爲c,加密變換記爲E(k1,m)(其中k1爲密鑰),解密變換記爲D(k2,m)(k2爲解密密鑰)(在這裏k1=k2,不妨記爲k)。凱撒密碼的加密過程可記爲以下一個變換:
    c≡m+k mod n (其中n爲基本字符個數)編輯器

一樣,解密過程可表示爲:
m≡c+k mod n (其中n爲基本字符個數)c≡m+k mod n (其中n爲基本字符個數)工具

一樣,解密過程可表示爲:
m≡c+k mod n (其中n爲基本字符個數)性能

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);
     }
  • 合做完成重構
public class Caesar {
    public static void main(String args[]) throws Exception{
        String s=args[0];
        int key=Integer.parseInt(args[1]);
        String es="";*/
import java.util.Scanner;
public class Caesar {
    private String table; // 定義密鑰字母表
    private int key; // 定義密鑰key
    public Caesar(String table, int key) {
        // 根據不一樣的字母表和不一樣的密鑰生成一個新的凱撒算法,達到通用的目的
        super();
        this.table = table;
        this.key = key;
    }//重構參數部分
        /*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;
        }*/
        public String encrypt(String from) {
            //凱撒加密算法,傳入明文字符串,返回一個密文字符串
            String to = "";
            for (int i = 0; i < from.length(); i++) {
                to += table.charAt((table.indexOf(from.charAt(i))+key)%table.length());
            }
            return to;
        }//重構算法部分
        /*System.out.println(es);
    }
}*/
        public static void main(String[] args) {
            int key;
            System.out.println("請輸入要加密的字符串");
            Scanner scanner = new Scanner(System.in);
            String str =scanner.nextLine();
            System.out.println("請輸入密鑰");
            key=scanner.nextInt();
            Caesar caeser = new  Caesar("abcdefghijklmnopqrstuvwxyz", key);
            String result = caeser.encrypt(str);
            System.out.print(result);
        }
}

PSP(Personal Software Process)時間

步驟 耗時 百分比
需求分析 20min 16%
設計 20min 16%
代碼實現 30min 24%
測試 25min 20%
分析總結 30min 24%

分析與總結

經過本次試驗,對於編寫和編譯代碼有了新的認識。深一步的學會了IDEA的使用方法。基本瞭解了Code菜單的強大。學會了格式化代碼,體會到告終對學習的好處,理解了什麼是重構,對重構的條件和目標有了基本的瞭解,能對代碼進行簡單的重構。學習

相關文章
相關標籤/搜索