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 |
|
參考資料