20172313 2017-2018-2 《程序設計與數據結構》第八週學習總結

20172313 2017-2018-2 《程序設計與數據結構》第八週學習總結

教材學習內容總結

  1. 瞭解了在多態引用時的後綁定的概念。
  2. 學習練習如何利用繼承方式來實現多態性。
  3. 學習練習如何利用接口來實現多態性。
  4. 初步學習算法,瞭解學習了兩種對數組中的元素進行排序的方法。
  5. 瞭解學習了兩種在一組元素中尋找一個指定的目標元素的方法。
  6. 初步學習判斷什麼時候使用多態性設計對問題進行解決,並體會利用多態性所帶來的好處。

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

  • 問題1:在剛剛開始學習利用接口實現多態性的時候感受很奇怪,由於在原來學習接口的時候的時候知道Java中的接口是一組常量和抽象方法的集合,接口不能被實例化。在看到樹上的舉例 Speak special() = new Philosopher();的時候感到很疑惑,不明白爲何接口能夠被實例化。
  • 問題1解決方案:隨着學習的深刻後,瞭解到這裏並非對接口本身自己實例化,而是用於聲明一個對象引用變量指向實現該接口的類的對象。
  • 問題2:在學習對一組元素進行排序的時候有這樣一段代碼
public static void selectionSort(Comparable[] list) {
        int min;
        Comparable temp;
        
        for (int index = 0; index < list.length - 1; index++) {
            min = index;
            for (int scan = index + 1; scan < list.length; scan++)
                if (list[scan].compareTo(list[min]) < 0)
                    min = scan;
           
            // Swap the values
            temp = list[min];
            list[min] = list[index];
            list[index] = temp;
        }
    }
  • 這裏的temp是一個Comparable類的對象,不明白爲何能夠用list[min]對它進行賦值。
  • 問題2解決方案:對書本上的知識繼續學習並結合藍墨雲上的視頻學習後,這裏的list數組是一個形式參數,而在傳入的實際參數數組中保存的是一個個Contact對象,這裏是利用了多態使得對象引用變量指向其餘的對象。
  • 問題3:在開始學習二分搜索法的時候,看到書上給的示例,就想到若是待搜索的元素個數爲偶數的話,就會有兩個中點值,那麼這個時候要怎麼取中點?雖然書上後面也進行了解釋,不是很理解書上想要表達的意思。
  • 問題3解決方案:王老師在上課的時候對該問題進行了解答,由於是取中點,因此對兩個數取平均值在進行類型轉換轉換爲int行,這時候小數部分就被忽略掉了,這也就是書上所說的取兩個中點的第一個爲新的中點。

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

  • 問題1:在作編程項目pp10.4的時候發現用兩種方法進行排序獲得的結果不一致。
    html

  • 問題1解決方案:我檢查了一遍算法的代碼,由於是根據書上的例題進行改寫的,因此我就把目光放到了測試代碼上,通過仔細的檢查後,發如今我進行第二次排序的時候傳入的實際參數錯了,對參數進行改正代碼就能夠成功運行了。
    java

  • 問題2:在作編程項目pp10.5的時候運行代碼的時候提示了Exception in thread "main" java.lang.NullPointerException
    git

  • 問題2解決方案:一開始的時候我認爲是因爲我沒有在Movies類中寫排序的方法,我完成排序的操做是在測試時經過調用其餘類的方法來完成的。我對代碼進行了修改,可問題依舊沒有獲得解決。


    程序員

  • 我實在是找不出有什麼問題,只好求助於百度,找到了如下的解釋。我開始按照這個思路來找個人問題所在,原來在書上的例題中有一段擴充數組容量的代碼,因爲數組初始化的大小是100,在進行排序的時候,數組並未所有儲存元素,有一部分爲空因此也就致使了我上面問題的發生,我對這一段代碼修改爲以下,問題得以解決。

    算法

代碼託管

上週考試錯題總結

  • 錯題1: Inheritance through an extended (derived) class supports which of the following concepts?
    A . interfaces
    B . modulary
    C . information hiding
    D . code reuse
    E . correctness
  • 解析 經過擴展一個類並繼承它,新類沒必要從新實現任何這些繼承的方法或實例數據,從而節省了程序員的工做量。 所以,代碼重用是爲了您的須要擴展它而重用其餘代碼的好處。
  • 緣由 呃...未理解好題目所想要表達的意思。
  • 錯題2: Which of the following is an example of multiple inheritance?
    A . A computer can be a mainframe or a PC
    B . A PC can be a desktop or a laptop
    C . A laptop is both a PC and a portable device
    D . A portable device is a lightweight device
    E . Macintosh and IBM PC are both types of PCs
  • 解析 多重繼承意味着一個給定的類繼承了多個父類。 在上面列出的那些選項中,筆記本電腦繼承了來自PC和便攜式設備的特性。 A,B和E中的答案都是單個繼承的例子,其中一個類至少有兩個子類(在A中,計算機有兒童大型機和PC,B,PC有兒童臺式機和筆記本電腦,E,PC有孩子Macintosh 和IBM PC)。 答案D表示一個類的屬性。
  • 緣由 對繼承的概念理解混淆不清。
  • 錯題3: A variable declared to be of one class can later reference an extended class of that class. This variable is known as
    A . protected
    B . derivable
    C . cloneable
    D . polymorphic
    E . none of the above, a variable declared to be of one class can never reference any other type of class, even an extended class
  • 解析 多態意味着變量能夠有多種形式。 在普通狀況下,Java被強烈定義,即一旦聲明爲某個類型的變量永遠不會變爲不一樣的類型。 這是一個例外,多態變量能夠是任何類型的派生類(儘管不是同時,變量能夠從一種類型變爲另外一種類型)。
  • 緣由 我覺得這道題是想問變量前面要聲明爲何類型,沒有理解題意。
  • 錯題4: If you instantiate an Abstract class, the class or object you wind up with
    A . is also an Abstract class
    B . is a normal class
    C . is an Interface
    D . is a reference to an Object
    E . can't exist you cannot instantiate an Abstract class
  • 解析 你只能實例化具體類而不是抽象類。 可是你能夠擴展抽象類和接口。
  • 緣由 我把提意理解成寫抽象類的子類的類型是什麼...(英語很差是硬傷)

結對及互評

  • 博客中值得學習的或問題:
    • 排版精美,對於問題研究得很細緻,解答也很周全。
  • 代碼中值得學習的或問題:
    • 代碼寫的很規範,思路很清晰,繼續加油!

點評過的同窗博客和代碼

  • 本週結對學習狀況

其餘

感受這周的學習任務相較與上週又有了必定的提高,學起起來也更困難,但同時也是我更加意識到Java的學習是經過不斷的親身實踐和練習才能不斷提升的,書本上的內容和老師上課所講的不過是理論而已,只能輔助你學習,不能徹底依賴上課聽講,死啃書本。同時,在這周的測試中我也意識到了一個問題,不少題目的錯誤都是因爲我對題目的翻譯不到位致使理解錯了題意因此致使了錯誤,但願在之後的學習生活中能繼續不斷提升本身的英語能力。也但願本身能在之後經過努力不斷進步!編程

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一週 126 1/1 20/20
第二週 388/466 1/2 15/35
第三週 706/1162 1/3 17/52
第四周 1104/2266 1/4 20/72
第五週 1126/3392 1/5 15/87
第六週 906/4298 1/6 20/107
第七週 1233/5531 1/7 20/127
第八週 1391/6922 1/8 24/151
  • 計劃學習時間:24小時數組

  • 實際學習時間:24小時數據結構

  • 改進狀況:
    開學也有將近半個學期了,雖然本身的學習狀態相比於剛開學的時候有了必定的提高,可是相比於他人仍是感到本身的學習時間不夠多,學習態度不夠端正,在之後的學習生活中多學Java,我愛Java,Java使我快樂,Java使我身心愉悅!學習

參考資料

相關文章
相關標籤/搜索