20172316 2017-2018-2 《程序設計與數據結構》 實驗二報告

課程:《程序設計與數據結構》
班級: 1723
姓名: 趙乾宸
學號:20172316
實驗教師:王志強
實驗日期:2018年4月18日
必修/選修: 必修設計模式


1.實驗內容

  • 初步掌握單元測試和TDD
  • 理解並掌握面向對象三要素:封裝、繼承、多態
  • 初步掌握UML建模
  • 熟悉S.O.L.I.D原則
  • 瞭解設計模式
  • 完成藍墨雲上 (1)-(5)實驗。

2. 實驗過程及結果

  • 作中學,無論學的是個啥,先作完實驗內容就對了,實驗(1)-(5)按照順序完成。
  • 主要過程:看清教程中的要點和步驟,一步一步進行操做,中間遇到了一些問題(詳見下),並非什麼難以解決的問題。甚至一些代碼只須要複製過去進行簡單的操做,能夠說很方便了。
  • 結果:初步瞭解TDD,及S.O.L.I.D原則,實驗結果都基本正確。繼承運用的不少,因此熟練了許多。封裝主要體如今可見性保留字的選擇上。

3. 實驗過程當中遇到的問題和解決過程

  • 問題1:StringBuffer初始容量問題,依稀記得初始容量爲16,但Test時發現StringBuffer a = new StringBuffer("ManyWordMany")的初始容量爲28,爲何呢?
  • 問題1解決方案:經過多方查找(甚至直接查看 StringBuffer 類),確認了初始容量確確實實就是16。經過研究觀察發現,當我令a = "ManyWord"時,容量變爲24,可見 「初始容量」 的意思應該是在所給字符串的基礎上加上16

  • 問題2:複數乘法老是計算錯誤,使用(1+i)*(1+i)結果應爲2i,但結果顯示爲i。
  • 問題2解決方案:查看代碼,屢次檢查,與公式沒有任何差異
public Complex ComplexMulti(Complex complex){

    RealPart = RealPart * complex.getRealPart() - ImagePart * complex.getImagePart();  

    ImagePar = ImagePart * complex.getRealPart() + RealPart * complex.getImagePart();

    return new Complex(RealPart, ImagePart);
}

乍一看沒問題,實則犯了一個大錯! RealPart在上式被重定義了,那麼下式的RealPart再也不是應該取得值,計算出錯!簡易修改:數據結構

public Complex ComplexMulti(Complex complex){
        double a, b;
        a = RealPart * complex.getRealPart() - ImagePart * complex.getImagePart();
        b = ImagePart * complex.getRealPart() + RealPart * complex.getImagePart();
        return new Complex(a, b);
    }

解決!單元測試


其餘(感悟、思考等)學習

一切的一切盡在題中。測試

參考資料

《Java程序設計與數據結構教程(第二版)》
《Java程序設計與數據結構教程(第二版)》學習指導設計

相關文章
相關標籤/搜索