20182334 2019-2020-1 《數據結構與面向對象程序設計》第四周學習總結

20182334 2019-2020-1 《數據結構與面向對象程序設計》第四周學習總結

教材學習內容總結

本週學習了第五章和第八章。html

第五章:git

  • 首先學習了類的定義,明確了關於類的不少知識,再經過類來編寫方法,把方法寫在同一個文件夾下,能夠調用。
  • 以後瞭解了UML類圖,並經過IDEA協助UML進行畫圖,使程序更加直觀。
  • 再學習了關於封裝的知識:爲了防止對數據的不合適的訪問,對象應該是封裝的。
  • 瞭解關於靜態變量和靜態方法,咱們經常使用的static就是用來聲明靜態變量的修飾符。Math類的全部方法都是靜態的。靜態變量由類中的全部實例所共享。
  • 依賴:通俗來講就是一個類調用其餘類的方法。
  • 聚合:是由各個對象組合而成的,描述爲has-a關係。
  • this引用:讓一個對象指向本身。

第八章:算法

  • 繼承:從一個已有的類派生一個新類的過程,目的是爲了更快更節約的完成程序。繼承會產生父類和子類,他們之間創建了is-a關係。保留字extends說明從已有類中派生一個新類。
  • 在封裝和私有的兩難境地中,出現了protected修飾符,既能夠提供最恰當的封裝機制,也保持了其在原來類中可見性修飾符規定的權限。在知足可引用的程度上:public > protected > private。
  • super引用:在一個類中指向父類。
  • 多重繼承:在Java中不支持多重繼承,出現了接口,提供了多重繼承的特性。
  • 類層次:一個類能夠是一個或多個其餘類的父類。

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

  • 問題1:在練習書上的例題時,寫類和方法時,在Linux裏遇到了麻煩,編譯一直沒法找到文件。
    小程序

  • 問題1解決方案:在詢問同窗後得知是由於沒有在同一文件夾下,我思索了一下子,
    發現的確如此,因而便更改目錄:
    數據結構

  • 問題2:在學習UML類圖時,不清楚各個圖形和箭頭等表明什麼意思,還有其增長變量或者定義,都不清楚。
    app

  • 問題2解決方案:在IDEA中有快捷鍵會自動生成類圖:shift+Ctrl+alt+u,

    ide

  • 問題3:在書上調用類時,不明白下圖畫圈的地方有什麼聯繫
    函數

  • 問題3解決方案:在聯繫C語言以後發現中間有不少共通的地方,好比說實參形參,數據的類型等,一聯繫後,發現其實很簡單。

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

  • 問題1:在寫一個小程序時,以下圖student在調用People的方法時,找不到run,沒法run。

    學習

  • 問題1解決方案:諮詢了老師,得知沒有主類,因此無法編譯,於加上了主類,編譯成功。
    測試

  • 問題2:在敲代碼的過程當中,發現void類型老是沒有返回值,

  • 問題2解決方案:搜索了下資料:

  • 問題3:在第一個實驗裏,我會產生邏輯錯誤,好比,我會忽略當成績小於0時的狀況,結果測試不成功,讓人頭大,

  • 問題3解決方案:後來才發現本身少想了一種狀況,立馬再次思考,發現是漏想了一種狀況,

  • 問題4:在StringBuffer裏我不明白charAt、indexOf分別是啥意思,因而在寫測試程序時,出現屢次測試不過。

  • 問題4解決方案:在看書查資料看老師發的教程後,明白charAt是指在一串字符串裏面猜你想要的字符,並判斷第幾位是,好比下圖,括號裏的數字表明字符串裏的第幾位,單引號裏面的字符是你猜想的。

那麼一明白這個道理後,測試經過。

  • 問題5:不明白indexOf是啥意思,小小的腦殼,大大的疑問。

  • 問題5解決方案:同上一個問題同樣,本身一遍一遍的測試,觀察中間的規律,以後再聽同窗的講解,明白其中的道理:所謂indexOf,以下圖,在括號裏的字符是你要猜它在字符串裏是第幾位開始,若是字符串裏沒有這個字符,那麼就是-1。

  • 問題6:在第4個實驗裏,不明白複數的算法,在定義方法時,會產生不少疑問和錯誤。

  • 問題6解決方案:世上無難事只怕有心人,在個人不懈努力下,我終於搞懂了一些這方面的知識。在定義方法時,要在原函數的基礎上,定義常量和方法。


代碼託管

上週考試錯題總結

  • 錯題1:A variable whose scope is restricted to the method where it was declared is known as a(n)
  • A .parameter
  • B .global variable
  • C .local variable
  • D .public instance data
  • E .private instance data

局部變量是那些聲明它們的方法的「局部」變量,也就是說,它們只能在方法內部訪問。全局變量是那些能夠從任何地方訪問的變量,而參數是傳遞給方法的變量。能夠將實例數據視爲整個對象的全局變量。故答案選 C .


  • 錯題2:An example of passing message to a String where the message has a String parameter would occur in which of the following messages?
  • A .length
  • B .substring
  • C .equals
  • D .toUpperCase
  • E .none of the above, it is not possible to pass a String as a parameter in a message to a String

長度和toUpperCase消息沒有參數,子字符串有兩個int參數。對於equals,必須將字符串做爲參數傳遞,以便接收消息的字符串能夠與做爲參數傳遞的字符串進行比較。故答案選 C .


  • 錯題3:Consider a method defined with the header: public void doublefoo(double x). Which of the following method calls is legal?
  • A .doublefoo(0);
  • B .doublefoo(0.555);
  • C .doublefoo(0.1 + 0.2);
  • D .doublefoo(0.1, 0.2);
  • E .all of the above are legal except for D

對於A,值0 (int)被擴大爲double。在C的狀況下,添加操做產生0.3,而後調用doublefoo。D中的參數列表是非法的,由於它包含兩個雙參數,而不是1。故答案爲 E .


  • 錯題4:What happens if you declare a class constructor to have a void return type?
  • A .You'll likely receive a syntax error
  • B .The program will compile with a warning, but you'll get a runtime error
  • C .There's nothing wrong with declaring a constructor to be void
  • D .The class' default constructor will be used instead of the one you're declaring
  • E .None of the above

It is a syntax violation to declare a constructor with any type even void so you'll receive a syntax error.故答案爲 A .


  • 錯題5:Formal parameters are those that appear in the method call and actual parameters are those that appear in the method header.
  • A .true
  • B .false

這個問題顛倒了兩個定義。形式參數是出如今方法頭中的參數,實際參數是方法調用中的參數(傳遞給方法的參數)。
故答案爲 B 。


  • 錯題6:The following method header definition will result in a syntax error: public void aMethod( );
  • A .true
  • B .false

語法錯誤的緣由是它以「;」符號結束。相反,它須要在{}後面加上括號內的0或更多的指令。抽象方法將以「;」結束,可是這個頭沒有定義抽象方法。故答案爲 A 。


  • 錯題7:Defining formal parameters requires including each parameters type.
  • A .true
  • B .false

爲了讓編譯器檢查方法調用是否正確,編譯器須要知道傳遞的參數的類型。所以,全部的形式參數(那些在方法頭中定義的參數)必須包含它們的類型。這是使Java成爲強類型語言的一個因素。
故答案爲 A 。


點評過的同窗博客和代碼

  • 本週結對學習狀況
    • 20182321

    • 結對照片

    • 結對學習內容

      • 學習繼承方面的知識,瞭解子類和父類之間的關係。
      • 學習類和方法之間的關係,並動手實踐,練習書上例題。
      • 在UML類圖裏,碰到的種種疑惑,都會互相問清楚。
  • 上週博客互評狀況

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

一週又飛快的過去了,這周在我看來,進步很大,在上週的學習過程當中,不明白類和方法之間的關係,但在這一週的不懈努力下,知道了如何學習這方面的知識,雖然學習的過程當中很不輕鬆,但在得到成就後會很開心。一個月過去了,本身也學到了不少東西,能明白本身的定位,也能清楚本身的水平,知道本身薄弱點在哪裏,如何補充、增強,在下一週的學習生活中,我會增強代碼的練習,增長代碼量,爭取敲到2500行。

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一週 212/212 2/2 17/17
第二週 132/344 2/4 17/34
第三週 689/1033 1/5 23/67
第四周 664/1697 2/7 20/87
  • 計劃學習時間:20小時

  • 實際學習時間:20小時

  • 改進狀況:學習的愈來愈有規律,能把握住時間,該學習的時候學習,該玩的時候玩。

參考資料

相關文章
相關標籤/搜索