20182327 2019-2020-1 《數據結構與面向對象程序設計》第六週學習總結

20182327 2019-2020-1 《數據結構與面向對象程序設計》第六週學習總結

教材學習內容總結

  • 一、多態與後綁定:多態是指一個引用變量在不一樣時刻指向不一樣對象。多態實現的基礎是後綁定(late/dynamic binding)
    多態存在的三個必要條件
    繼承
    重寫:是子類對父類的容許訪問的方法的實現過程進行從新編寫, 返回值和形參都沒法改變。
  • 二、.接口:一組抽象方法。接口能夠多重繼承。
  • 三、接口實現多態:接口名可用來聲明引用變量。調用接口變量時只能調用接口中定義的方法,由於編譯器只能斷定對象是接口類的,子類自定義的方法沒法響應。html

  • 四、異常與異常處理:
    • 異常是一個對象,與錯誤相似。異常能被拋出、捕獲,必要時進行處理。
    • 異常處理三種方式:
      不處理:程序非正常終止,打印錯誤信息和調用棧跟蹤
      在異常產生的地方處理:捕捉異常-try catch
      在程序的其餘地方處理:拋出異常-throws throw
  • 五、I/O異常(其中還有老師上課講的把數據寫入文本,和從文本中讀取數據內容)
    三種標準I/O流(in、out、err)
    可檢測的IOExceptions異常java

教材學習中的問題和解決過程

  • 問題1:throws和throw關鍵字有什麼區別?
  • 解答:
    一、使用throws聲明的方法表示此方法不處理異常,而由系統自動將所捕獲的異常信息「拋給」上級調用方法。使用throws聲明能實例化異常類對象,人爲拋出異常。
    • throw 在方法體內使用,throws 函數名後或者參數列表後方法體前。
    • throw 強調動做,而throws 表示一種傾向、可能但不必定實際發生。
  • 問題2:接口能夠實現接口嗎?
  • 問題2解決方案:不能實現接口,因接口的成員方法都具備抽象屬性,不具備方法體,沒法實現繼承的接口。
    • 具體如何實現沒有研究。

代碼調試中的問題和解決過程

  • 問題一:如何達到題目要求「直到輸入「DONE」爲止」?
  • 問題一解決方法:這個問題出現是由於我理解題目出現了問題,檢測到輸入得單詞爲「DONE」就中止,而後判斷總輸入字符串是否超過長度20個,若是是,就拋出異常。無異常的話能夠再次輸入。git

  • 問題二:IO操做及異常處理
  • 問題二解決方法:剛聽完IO的問題要嘗試去編寫IO的代碼,對應的writer和reader什麼的不瞭解,不過能夠參考參考學長學姐的代碼。代碼中有BufferedOutputStream和BufferedInputStream兩種可供理解,兩種字節流可使用,進行往文件裏面寫入讀出。算法

  • 問題三:讀取文件時遇到了空格,在I/O異常練習時,遇到了讀文件的操做,但讀取時遇到空格。
  • 問題三解決辦法:最後找到string.split方法,以某一特殊符爲界,分割字符串後將每一部分存入數組。數組

代碼託管

(statistics.sh腳本的運行結果截圖)數據結構

上週考試錯題總結

  • 錯題1:A Java program can handle an exception in several different ways. Which of the following is not a way that a Java program could handle an exception?
    A . ignore the exception
    B . handle the exception where it arose using try and catch statements
    C . propagate the exception to another method where it can be handled
    D . throw the exception to a pre-defined Exception class to be handled
    E . all of the above are ways that a Java program could handle an exception
    錯誤:D 正確:E
    解析:java處理異常的三種方式:1.根本不處理異常。2.當異常發生時處理異常。3.在程序的某個位置集中處理異常。函數

  • 錯題2:An exception can produce a "call stack trace" which lists:
    A . the active methods in the order that they were invoked
    B . the active methods in the opposite order that they were invoked
    C . the values of all instance data of the object where the exception was raised
    D . the values of all instance data of the object where the exception was raised and all local variables and parameters of the method where the exception was raised
    E . the name of the exception thrown
    錯誤:D 正確:B
    解析:調用oop

  • 錯題3:An exception that could also arise in the try statement that does not have an associated catch statement is:
    A . ClassNotFoundException
    B . IllegalArgumentException
    C . NegativeArraySizeException
    D . NullPointException
    E . OutOfMemoryException
    錯誤:A 正確:D
    解析:try語句後沒有catch語句會出現NullPointException學習

  • 錯題4:We compare sorting algorithms by examining
    A the number of instructions executed by the sorting algorithm
    B the number of instructions in the algorithm itself (its length)
    C the types of loops used in the sorting algorithm
    D the amount of memory space required by the algorithm
    E whether the resulting array is completely sorted or only partially sorted
    分析:這道題考到的知識點爲:不一樣的排序算法在執行時須要不一樣數量的指令。因此咱們經過檢查排序算法執行的指令數,來比較排序算法。因此應該選a。ui

  • 錯題5:Polymorphism is achieved by
    A . overloading(重載)
    B . overriding(重寫)
    C . embedding(嵌入)
    D . abstraction(抽象)
    E . encapsulation(封裝)
    分析:這道題考查的是多態性是經過什麼實現,我選擇的是的抽象,而答案是b重寫:重寫提供了多態性,由於適當的方法是根據當前被引用的對象而調用的,因此應該是重寫實現多態性。

  • 錯題6: All run-time Errors throw Exceptions.
    正確答案:B.false
    緣由:結果顯而易見,若是咱們用try-catch語句就能夠不拋出了。

  • 錯題7:A try statement must have at least one catch statement, but could have many catch statements, and may or may not have a finally clause.
    正確答案:A.true
    緣由:點錯了,使用try以後必需要有至少一個catch,至少在IDEA中若是沒有接下來的catch就會出現紅線提示,finally是無關緊要的,有需求就能夠用。

    結對及互評

評分標準

  1. 正確使用Markdown語法(加1分):
    • 不使用Markdown不加分
    • 有語法錯誤的不加分(連接打不開,表格不對,列表不正確...)
    • 排版混亂的不加分
  2. 模板中的要素齊全(加1分)
    • 缺乏「教材學習中的問題和解決過程」的不加分
    • 缺乏「代碼調試中的問題和解決過程」的不加分
    • 代碼託管不能打開的不加分
    • 缺乏「結對及互評」的不能打開的不加分
    • 缺乏「上週考試錯題總結」的不能加分
    • 缺乏「進度條」的不能加分
    • 缺乏「參考資料」的不能加分
  3. 教材學習中的問題和解決過程, 一個問題加1分

  4. 代碼調試中的問題和解決過程, 一個問題加1分

  5. 本週有效代碼超過300分行的(加2分)
    • 一週提交次數少於20次的不加分
  6. 其餘加分:
    • 週五前發博客的加1分
    • 感想,體會不假大空的加1分
    • 排版精美的加一分
    • 進度條中記錄學習時間與改進狀況的加1分
    • 有動手寫新代碼的加1分
    • 課後選擇題有驗證的加1分
    • 代碼Commit Message規範的加1分
    • 錯題學習深刻的加1分
    • 點評認真,能指出博客和代碼中的問題的加1分
    • 結對學習狀況真實可信的加1分
  7. 扣分:
    • 有抄襲的扣至0分
    • 代碼做弊的扣至0分
    • 遲交做業的扣至0分

點評模板:

  • 博客中值得學習的或問題:
    • 同窗們已經有意識的碰見錯誤就截圖,給後面寫博客的各類方便不少,我一直忘記只能從新敲一遍。
  • 代碼中值得學習的或問題:
    • 條條大路通羅馬,好多同窗能夠曲線思惟弄出代碼,聽他們講解後真的很佩服。
  • 基於評分標準,我給本博客打分:11分。得分狀況以下:正確使用Markdown語法+1.教材學習中的問題和解決過程+2.代碼調試中的問題和解決過程+2.感想,體會不假大空+1.錯題學習深刻+1.點評認真,能指出博客和代碼中的問題+1.結對學習狀況真實可信+1.課後題有驗證+1,進度條有記錄+1.

  • 參考示例

點評過的同窗博客和代碼

  • 本週結對學習狀況
  • 上週博客互評狀況

其餘(感悟、思考等,可選)

  • 每節課的考試讓我十分吃不消,不僅是英語單方面的問題,Java也有許多問題亟待解決,由於課本版本不一樣,找起知識點來比較麻煩。
  • 好多同窗好牛,本身好菜,各類把打好的代碼推翻重來,參考別人代碼改來改去把本身的程序變成了四不像,運行不了,本週更加熟悉了運行一個目的堆了四五個程序的Java常態,繼續虛心學習吧。
  • 實驗做業愈來愈難,我愈來愈菜,隨時gk。

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一週 200/200 2/2 20/20
第二週 350/500 2/4 24/38
第三週 512/1000 3/7 22/60
第四周 1158/1300 4/9 35/90
第五週 2905/3000 6/5 24/24
第六週 3927/4000 2/2 26/30

參考資料

相關文章
相關標籤/搜索