面向對象程序設計_第二階段總結

1.前言:

  本次博客用於表述在學習面向對象知識的第二階段中獲得的知識總結,還有表述一些在編程過程中獲得的心得。

2.作業過程總結:

  ①總結三次作業之間的知識迭代關係;

  • 正則表達式    

  5-6次作業中要求使用正則表達對數據進行合法的校驗。第五次作業要求在一串數字中提取關鍵數據,而第六次作業這是在多現實裏面提取每一項並對每一項的數據進行識別分析提取。從易到難。

  • 類間關係應用(關聯、聚合、依賴、繼承)

  本階段學習中,圖像類的構建貫穿整個階段。

  從最基礎的一個4個圖形類設計到後面類間關係應用

  • 繼承與多態

  在進行圖形類設計中,加入了繼承與多態,提高了程序的健壯性

 

  • ArrayList類的應用

  在對現有數據進行識別篩選提取時還需要分類,通過ArrayList類將數據進行分組,通過數組的方式進行儲存

  ②如何通過作業逐步理解面向對象的封裝性、繼承性與多態性三大技術特性;

    封裝性:在處理數據的過程中,由於數據的多樣性和相似性,不同的數據很可能在不同類之間含有不同的含義,利用封裝性能完成對數據的控制,減少錯誤。

·     本階段作業中,在定義圓的類時,構造方法中將參數的值賦給類內定義的radius時由於構造參數與類內radius類似,造成數據賦值失敗,通過封裝性能有效減免錯誤的發生。

    this.radius = radius

  

    繼承性:父類和子類的使用減少了數據的重複性,同時通過繼承的方式可以獲取父類中的得到的數據

        本階段中並未要求我們從父類中提取數據,只有將父類中的方法提取出來使用。

 

    多態性:指具有不同功能的函數可以使用相同的函數名,這樣就可以用一個函數名調用不同內容的函數。在面向對象方法中一般是這樣表述多態性:向不同的對象發送同一條消息,不同的對象在接收時

        會產生不同的行為(即方法)。同繼承性相同可以減少數據的重複性,並且還增加了程序的靈活性,增加了程序額可擴展性。

  ③作業過程中遇到的問題及解決方法

  1. 線程出錯(NullPointerException)

 

 

   原因:類設計中構造方法未寫導致線程出錯

   總結:構造方法錯誤將導致線程出錯

 

  2.正則表達式判斷出錯

  原因:計算機無法靈活分析目標

  解決辦法:使用(?= exp)解決

  

 

 

 

 

 

 

  3.ArrayList使用問題

  錯誤:Index n  out of bounds for length

  

 

 

   檢查後發現原因:在調用add()方法時出錯將導致ArrayList大小小於預計值,當index大於實際長度時將導致報錯。

   通過調試可以檢測add()是否正常使用。

 

  4.運行超時

  解決方案:優化代碼,減少不必要的檢測。

 

   ④每次作業花費的時間比例

    本階段第一次作業:15h

         本階段第二次作業:  8h

         本階段第三次作業:3h

 

  ⑤對編程過程的嚴謹性的認識及教訓

    認識:編程過程需時刻保證嚴謹性,否則小錯成大錯

    教訓:莫名出錯,找不到

  2.OO設計心得


  ①對面向對象三大技術特性之間關係的理解

    封裝將數據變得可操作化

    繼承則提高數據復用性

    多態則使不同數據有不同的處理

    三者都是在提高數據效率。
  ②面向對象設計的基本原則理解(單一職責原則及「開-閉」原則)  

  • 單一製作原則

      功能細化,每個類行使其獨特的功能。

      每個類功能獨立,當功能需要拓展時只需在某個類進行拓展,而當某個功能存在bug時則可通過該功能的作用來確定他的類。

  • “開-閉”原則  

   避免因為數據修改導致的錯誤。

 

  ③OO編程思維的理解

    將構成問題分解成各個對象,建立對象是為了描述某個事物在步驟中的行為。

    
  ④類設計心得

    每個類應該實行其獨特的作用,通過設計多個類可以提高代碼的可讀性。

 

3.測試的理解與實踐


  ①測試對於編碼質量的重要性

    測試有助於提高代碼的質量。在測試過程中,通過輸入不同情況的數據可以找到代碼缺陷以及一些隱晦的錯誤,從而改進代碼,提高代碼的健壯性。


  ②查閱資料,假設使用Junit進行程序的測試是否可行

    可行;

    先思考測試再變成可有效減少錯誤
4.課程收穫


  總結這四周來在OO方面的教訓及收穫


5.對課程的建議
  ①第三階段作業難度、題量的建議

   1.提高難度,減少題目數,每題知識點豐富,充滿聯繫

 

   2.增加題目數量,細化分數,通過迭代的方法提升難度。


  ②課程內容講解方面的建議

   現在挺好