1. 程式人生 > >2018-2019-2-20175327 蜂凱南 實驗三 《敏捷開發與XP實踐》實驗報告

2018-2019-2-20175327 蜂凱南 實驗三 《敏捷開發與XP實踐》實驗報告

圖片 密碼 縮進 彈出菜單 分享 part 非對稱 相加 clas

2018-2019-2-20175327 蜂凱南 實驗三 《敏捷開發與XP實踐》實驗報告

實驗三 Java面向對象程序設計

一.實驗內容:

  • 安裝alibaba 插件,解決代碼中的規範問題。在IDEA中使用工具(Code->Reformate Code)格式化代碼,研究一下Code菜單,比較功能。

  • 在碼雲上把自己的學習搭檔加入自己的項目中,下載搭檔實驗二的Complex代碼,加入不少於三個JUnit單元測試用例,測試並上傳代碼至碼雲

  • 下載搭檔的代碼,完成重構內容的練習。

  • 結合重構,git,代碼標準,以結對的方式完成Java密碼學相關內容的學習。

二.實驗步驟:

(一)安裝alibaba 插件,解決代碼中的規範問題。在IDEA中使用工具(Code->Reformate Code)把下面代碼重新格式化,再研究一下Code菜單,找出一項讓自己感覺最好用的功能。

  • 參考 http://www.cnblogs.com/rocedu/p/6371315.html#SECCODESTANDARD 安裝alibaba 插件,解決代碼中的規範問題。
  • 打開preferences ->Plugins在搜索框輸入alibaba即可看到Alibaba Java Code Guidelines插件,點擊Install進行安裝,然後重啟IDE生效:
    技術分享圖片

  • 使用比較簡單:在項目名稱上單擊右鍵,在彈出菜單上選擇編碼規約掃描:
    技術分享圖片

  • 在IDEA中使用工具(Code->Reformate Code)格式化代碼,並學習Code菜單的功能IDEA中的Code菜單如下:
1.Override Methods(Ctrl+O):重載基本類的方法;
2.Implement Methods(Ctrl+I):完成當前類 implements 的(或者抽象基本類的)接口的方法;
3.Generate(Alt+Insert):創建類裏面任何字段的 getter 與 setter 方法;
4.Surround With(Ctrl+Alt+T):使用if-else、try-catch、do-while等包裝代碼段;
5.Insert Live Template(Ctrl-J):執行一些記不起來的 Live Template 縮寫;
6.Comment with Line Comment(Ctrl+斜杠)/Comment with Block Comment(Ctrl+Shift+斜杠):用 Ctrl+斜杠 與 Ctrl-Shift-/ 來註釋(或反註釋)代碼行與代碼塊。 用Ctrl+斜杠單行註釋標記(“ //… ”)來註釋(或反註釋)當前行或者選擇地代碼塊。而 Ctrl+Shift+斜杠則可以用塊註釋標記(“ /* */”)把所選塊包圍起來。要反註釋一個代碼塊就在塊中任何一個地方按 Ctrl+Shift+斜杠 即可;
7.Reformat Code(Ctrl+Alt+L):將代碼按標準格式縮進;
8.show reformat file dialog:按照格式自動對齊
9.Optimize imports:可以優化imports,去除不必要的imports
10.Move Line/statement Down/Up:將某行、表達式向下、向上移動一行

技術分享圖片

(二)在碼雲上把自己的學習搭檔加入自己的項目中,確認搭檔的項目加入自己後,下載搭檔實驗二的 Complex代碼,加入不少於三個JUnit單元測試用例,測試成功後git add .; git commit -m "自己學號 添加內容";git push;提交搭檔項目git log的截圖,包含上面git commit的信息,並加上自己的學號水印信息。

  • 將搭檔拉入自己碼雲項目
    技術分享圖片

  • 下載搭檔代碼
public class Complex {
    double RealPart=0;
    double ImagePart=0;
    public Complex(){}
    public Complex(double RealPart,double ImagePart){
        this.RealPart=RealPart;
        this.ImagePart=ImagePart;

    }
    public double getRealPart(){
        return RealPart;
    }
    public double getImagePart(){
        return ImagePart;
    }
    public String toString(){
        String s = "";
        double r=RealPart;
        double i=ImagePart;
        if(r==0&&i==0){
            s="0";
        }
        else if(r==0&&i!=0){
            s=i+"i";
        }
        else if(r!=0&&i==0){
            s=r+"";
        }
        else if(r!=0&&i<0){
            s=r+""+i+"i";
        }
        else
        {
            s=r+"+"+i+"i";
        }
        return s;
    }
    public boolean equals(Object obj){
        if(this==obj){
            return true;
        }
        else return false;
    }

    public Complex ComplexAdd(Complex a){
        return new Complex(RealPart+a.getRealPart(),ImagePart+a.getImagePart());
    }
    public Complex ComplexSub(Complex a){
        return new Complex(RealPart-a.getRealPart(),ImagePart-a.getImagePart());
    }
    public Complex ComplexMulti(Complex a){
        double r=RealPart*a.getRealPart()-ImagePart*a.getImagePart();
        double i =ImagePart*a.getRealPart()+RealPart*a.getImagePart();
        return new Complex(r,i);
    }
    public Complex ComplexDiv(Complex a){
        double r=(RealPart * a.ImagePart + ImagePart * a.RealPart) / (a.ImagePart * a.ImagePart + a.RealPart * a.RealPart);
        double i=(ImagePart * a.ImagePart + RealPart * a.RealPart) / (a.RealPart * a.RealPart + a.RealPart * a.RealPart);
        return new Complex(r,i)
    }
}
  • 對搭檔代碼進行測試
mport static org.junit.Assert.*;

public class ComplexTest {

    @org.junit.Test
    public void getRealPart() {
    }

    @org.junit.Test
    public void getImagePart() {
    }

    @org.junit.Test
    public void complexAdd() {
    }

    @org.junit.Test
    public void complexSub() {
    }
}

測試結果:
技術分享圖片

  • 測試成功後git add .; git commit -m "自己學號 添加內容";git push;提交搭檔項目git log的截圖,包含上面git commit的信息

克隆搭檔鏈接:
技術分享圖片

上傳代碼:
技術分享圖片
技術分享圖片

git log結果:
技術分享圖片

(三)完成重構內容的練習,下載搭檔的代碼,至少進行三項重構,提交重構後代碼的截圖,加上自己的學號水印。提交搭檔的碼雲項目鏈接。

  • 添加創建者信息
  • 給覆寫方法加上@Override註解
  • 方法名,參數名,成員變量,局部變量都統一使用lowerCamelCase,遵從駝峰形式。
    技術分享圖片

(四)以結對的方式完成Java密碼學相關內容的學習,結合重構,git,代碼標準。提交學習成果碼雲鏈接和代表性成果截圖,要有學號水印。

通過學習Java密碼學算法,了解了對稱及非對稱算法,以及如何進行秘鑰的共享的知識。

三、遇到問題及解決方案

  • 問題1:在上傳代碼時出現如下問題:
    技術分享圖片

  • 問題一解決方法:找準好友文件來創建代碼之後上傳即可

四、實驗體會

本次實驗主要學會了如何在idea中規範代碼,如何邀請搭檔加入自己的項目,還明白了如何進行內容的重構。在邀請搭檔加入自己項目的過程中,我們在互相加入各自2018java的項目的基礎上重新建了一個項目,這樣方便共同傳送文件,避免誤刪等偶然性失誤。與此同時,通過學習Java密碼學算法的博客,了解了對稱及非對稱密碼算法(及DES和RSA算法),以及如何進行秘鑰的共享的知識。

2018-2019-2-20175327 蜂凱南 實驗三 《敏捷開發與XP實踐》實驗報告