20182310第六週學習總結

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

教材學習內容總結

1.利用繼承實現多態性:html

  • 當用類名聲明瞭一個引用變量時,這個變量能夠指向該類的任何一個對象,也能夠引用經過繼承與它所聲明的類型有關的任何類的對象。
  • 而且這種關係對整個類層次結構都有效。例如:Animal creature = new Horse(Animal是Mammel的父類,Horse是Mammel的子類)

2.利用接口實現多態性:
類名能夠用於聲明對象引用變量,接口名也能夠用於作聲明對象引用變量的類型。
一個接口引用變量能夠指向任何實現該接口類的對象。java

3.接口名能夠用做方法參數,使得任何一種實現同一接口的類對象均可以做爲參數傳給方法。 方法的參數可使多態性的,使得方法所接收的參數具備靈活性。linux

4.solid原則:
面向對象的原則是面向對象設計的核心, 面向對象五大原則有SRP、OCP、LSP、DIP、ISPgit

SRP(Single Responsibility Princple單一職責原則)一個設計元素只作一件事。以前一直在討論這件事,(上帝類與小類)小類容易複用.
高內聚低耦合:與本身無關的拿出去,使用時調用,靈活程序員

OCP(Open Close Princple)
「Closed for Modification; Open for Extension」:對擴充開放 對修改封閉
OCP背後的機制:抽象和多態
軟件實體(類。模塊。函數)應該對算法

LSP:(Liskov Substitution Principle 里氏替換原則)Liskov是這個原則的提出者。理解起來就像大於5的數必定大於2,子能存在的地方父必定能夠。小程序

DIP(Dependence Inversion Principle 依賴倒置原則)要依賴於抽象,不要依賴於具體。
子類能夠被基類替代 不能濫用繼承數組

ISP:(Interface Segregation Principle 接口分隔原則)一個接口至關於劇本中的一種角色,而此角色在一個舞臺上由哪個演員來演則至關於接口的實現。所以一個接口應當簡單的表明一個角色,接口隔離原則講的就是同一個角色提供寬、窄不一樣的接口,以對付不一樣的客戶端。安全

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

  • 問題1:接口能夠實現接口嗎?接口能夠繼承接口嗎?
  • 問題1解決方案:接口能夠繼承接口,而且能夠繼承不僅一個接口,可是不能實現接口。由於接口的成員方法都具備抽象屬性,不具備方法體,沒法實現繼承的接口。
  • 問題2:字節流和字符流究竟是什麼?定義在java.io包中的那麼多方法都怎麼系統的理解?
  • 問題2解決方案:在java.io包中操做文件內容的主要有兩大類:字節流、字符流,兩類都分爲輸入和輸出操做。在字節流中輸出數據主要是使用OutputStream完成,輸入使的是InputStream,在字符流中輸出主要是使用Writer類完成,輸入流主要使用Reader類完成。(這四個都是抽象類)。InputStream 和OutputStream,兩個是爲字節流設計的,主要用來處理字節或二進制對象,Reader和 Writer.兩個是爲字符流(一個字符佔兩個字節)設計的,主要用來處理字符或字符串。字節流可用於任何類型的對象,包括二進制對象,而字符流只能處理字符或者字符串; 2. 字節流提供了處理任何類型的IO操做的功能,但它不能直接處理Unicode字符,而字符流就能夠。

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

  • 問題1:在一開始的package時找不到文件,運行失敗。

  • 問題1解決方案:修改package路徑,或者是將文件及子文件移動到當前目錄。
  • 問題2:在編寫文件類時,路徑輸入失敗,致使文件沒法運行。

  • 問題2解決方案:不要精確到具體文件夾,直接指向大文件夾。

代碼託管

上週考試錯題總結

  • 錯題1:
    服務器

  • 錯題1解決方案:語句if(list [j] <temp)c ++; 將列表中的每一個元素與temp進行比較,而且僅在元素小於temp時纔將其添加到c,所以它將對列表中小於temp的元素進行計數,並將結果存儲在c中。
  • 錯題2:

  • 錯題2解決方案:在「選擇排序」的每一個連續遍歷中,找到最小的未排序值並與當前數組索引交換(當前索引從0開始,一直到數組的第二個位置)。 在第一遍中,最小的元素2與索引0交換,所以2和9交換位置。
  • 錯題3:

  • 錯題3解決方案:封裝是對代碼部分的隔離,這樣它們就不會被意外修改; 繼承提供代碼重用; 多態性提供了一個名字,許多語義。 抽象是有用的屬性,但不是機制。 遞歸是一種控制結構,提供了一種不一樣的方式來表達循環或重複。
  • 錯題4:

  • 錯題4解決方案:上載是徹底安全的,它是Java支持的單一繼承結構的產物。 相比之下,向下轉換必須由程序員明確完成。 Java只會自動向上投射一個方向。 向上和向下轉換的規則不取決於所使用的可見性修飾符。
  • 錯題5:

  • 錯題5解決方案:用於聲明引用的類型沒必要是類的名稱,它能夠是接口名稱。 在這種狀況下,引用將引用實現該接口的類的具體實例。
  • 錯題6:

  • 錯題6解決方案:這是使用接口名稱聲明引用變量的多態函數之一。
  • 錯題7:

  • 錯題7解決方案:二進制搜索僅在數據已排序時纔有效。 二進制搜索算法經過假設在每對數據元素之間存在嚴格的關係來進行升序或降序。 沒有此順序,二進制搜索將沒法正確運行。
  • 錯題8:

  • 錯題8解決方案:B,C和D中的答案都是正確的,RuntimeExceptions是Throwable對象,而不是Error類的一部分,兩種RuntimeExceptions類型是ArithmeticException和NullPointerException。 不是RuntimeExceptions的異常包括各類已檢查的異常,可是RuntimeExceptions不是已檢查的異常。

結對及互評

評分標準

  • 博客中值得學習的或問題:
    • 學習:在總結問題時有附上詳細的圖片,而我老是忘記截圖
    • 問題:教材學習內容總結不夠詳細。
  • 代碼中值得學習的或問題:無
  • 基於評分標準,我給本博客打分:13分。得分狀況以下:
  1. 正確使用Markdown語法(加1分):
  2. 模板中的要素齊全(加1分)
  3. 教材學習中的問題和解決過程, 一個問題加1分

  4. 代碼調試中的問題和解決過程, 一個問題加1分
  5. 本週有效代碼超過300分行的(加2分)
  6. 其餘加分:
    • 感想,體會不假大空的加1分
    • 排版精美的加一分
    • 進度條中記錄學習時間與改進狀況的加1分
    • 有動手寫新代碼的加1分
    • 課後選擇題有驗證的加1分
    • 錯題學習深刻的加1分
    • 點評認真,能指出博客和代碼中的問題的加1分
    • 結對學習狀況真實可信的加1分

點評過的同窗博客和代碼

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

還有種沉浸在國慶的感受... Java三要素是重點,當上課測驗的時候發現本身不知不覺也學習了不少內容,仍是要回顧才能記得更清楚。

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 10000行 30篇 400小時
第一週 155/200 2/2 20/20 初步掌握linux命令、java小程序和jdb調試
第二 三週 470/625 2/4 20/40 學會scanner定義的使用,類的定義
第四周 1444/2069 2/4 20/60 下載安裝IDEA及其插件,學會TDD調試,編寫測試代碼
第五週 1917/3986 2/8 20/80 簡單的學會客戶端和服務器的編寫
第六週 1324/5310 1/9 20/100 Java封裝,繼承,多態
相關文章
相關標籤/搜索