20172305 《程序設計與數據結構》第七週學習總結

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

教材學習內容總結

本週內容主要爲書的9.1-9.5的內容

  • 第九章

    1.子類和父類的關係、抽象類php

    2.保留字super和可見性修飾符protectedhtml

    3.類的層次結構及繼承方式java

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

  • 問題1:保留字super和可見性修飾符protected
  • 問題1解決方案:針對super的做用,一直沒有理解究竟是什麼意思,調用父類的構造方法,有什麼做用,父類的構造方法內包含的參數,在子類的構造方法內去建立不也是能夠的麼?可是,經過在打PP9.3的例子,發現本身經過編寫ReadMaterial父類和novel等五個子類的過程發現,super在實際編寫過程當中的簡便,針對和父類構造方法中相同的參數,能夠省去很大一部分去編寫相關的方法,經過繼承的方式就能夠,並且這樣的調用構造方法,省去了很多力氣。很大程度上的細化了父類方法,使子類有更強的針對性。==比如生物界的分類同樣,把各類各樣的生物分爲域、界、門、綱、目、科、屬、種,層層細化,域比如是最最原始的父類,不斷經過繼承細化父類的方法、擴充父類的方法,成爲一個繼承一個的子類。==可見性修飾符protected是一種不一樣於可見性修飾符public和private的獨特一種。git

    • 使用super引用能夠調用父類的構造方法。
    • 當一個變量或方法聲明爲protected可見性時,子類就能夠引用它,而且使父類保持了必定的封裝性。protected可見性時的封裝性不如private可見性嚴格,但比public可見性更強。
  • 問題2:父類和子類
  • 問題2的解決方案:父類和子類的關係是一種經過繼承來實現的一種更細化的子類,基於父類實現的一種「擴充」,就像我在上一個問題中說的那樣,經過一個個繼承的方式不斷「擴充」子類使其方法不斷的細化,不斷的貼近具體的目標。省去了對於父類和子類的共同方法,能夠避免重複。程序員

  • 問題3:抽象類和接口
  • 問題3的解決方案:抽象類與接口的問題,理解的並非很深入。web

    • 在面向對象的概念中,咱們知道全部的對象都是經過類來描繪的,可是反過來卻不是這樣。並非全部的類都是用來描繪對象的,若是一個類中沒有包含足夠的信息來描繪一個具體的對象,這樣的類就是抽象類。抽象類每每用來表徵咱們在對問題領域進行分析、設計中得出的抽象概念,是對一系列看上去不一樣,可是本質上相同的具體概念的抽象。
    • 不一樣點:抽象類能夠含非抽象的方法和常量、數據。
    • 相同點:二者都不能實例化。

    問題4:類的層次結構及繼承方式
    問題4的解決方案:所謂類的層次結構就是類的不斷繼承,不斷髮展,可是類的繼承是單向的,因此父類是一個簡單的,相同性方法的一個集合。經過一個又一個的子類不斷實現具體化(終於體會到面向對象的簡便)。類的繼承方式,通俗點說就是用extends鏈接父類和子類,用於子類的繼承(簡簡單單的一個單詞就能夠把有共同特徵的內容僅寫一遍就能夠了。)編程

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

  • 問題1:PP9.1
  • 問題1解決方案: 這個編程項目的要求是要在第五章的Coin類上進行派生,可是對於Coin類的理解,它只不過是返回爲硬幣的正面或反面,可是本題的要求是要返回硬幣的面值,那麼「面值」到底是什麼意思?是指硬幣的正面和反面,仍是硬幣所表明的價值。藍墨雲班課答疑內,趙乾宸同窗的提問中,被斷定爲是正面和反面,可是我更傾向於返回的面值,因此我在繼承父類方法後,進行修改父類的flip方法,進行重寫方法,對於父類中原有的方法進行改寫。在改寫的同時我又進行了NumberFormat類的添加,使其輸出的面值帶有人民幣符號。(可能與老師的要求有些相違背,可是在大方向上仍是一致的。)
    數組

  • 問題2:PP9.3
  • 問題2解決方案:針對9.3的編寫,自我感受沒有什麼太大的問題,就是要編寫一堆的類,經過繼承達到符合題意。因此這就要在編寫以前要進行僞代碼的編寫:
    閱讀材料的共有屬性:書頁數、做者(主編)、書的類型等幾方面。經過UML的建模,進行了簡單的構圖進行表示。同時,我在針對不一樣的子類進行了不一樣的方法擴充、構造方法內參數的添加,進行更具體的表述。 經過這些子類的編寫,更加感覺到面向對象的開發到底是什麼意思了,就像個人初中數學老師說「數學來源生活,又高於生活。」java語言是服務於人類的一種高級語言,存在的意義就是便利生活中的繁雜事情,就像這道題目同樣,感受在此基礎上進行一部分的修飾和改寫,就能夠造成一個圖書館叢書的信息管理,經過輸入輸出就能夠把叢書進行整理與規劃。數據結構

  • books子類中進行是否帶有圖片或拼音,進行判斷適合的人羣讀此書
  • magazine子類中增添雜誌內文章數量的參數
  • definitions子類中增添學術刊物發表範圍、學術學科,經過發行範圍是國家仍是全球進行判斷該學術刊物的影響力及可信度、價值等
  • novel子類進行添加做者的國籍
  • textbook子類進行單元的計數、叢書適合的學習科目,什麼語文、數學、天然等。
  • 用UML表述的PP9.3
  • 小說
  • 圖書
  • 雜誌
  • 學術刊物
  • 課本

代碼託管

上週考試錯題總結

  • 錯題1:The "off-by-one" error associated with arrays arises because(與數組相關的「逐一個」錯誤出現是由於)oop

    • A.the first array index is 0 and programmers may start at index 1, or may use a loop that goes one index too far(數組索引是0,程序員能夠從索引1開始,也可使用一個索引過遠的循環。)

    • B.the last array index is at length + 1 and loops may only iterate to length, missing one

    • C.the last array element ends at length - 1 and loops may go one too far

    • D.programmers write a loop that goes from 0 to length - 1 whereas the array actually goes from 1 to length

    • E.none of the above, the "off-by-one" error has nothing to do with arrays
    • 錯誤解析:數組被初始化爲= new type[x],其中x是數組的大小數組內存放的長度。然而,該數組的索引爲0到x - 1,所以,程序員的off-by-one的問題是由於程序員將編寫代碼來嘗試訪問索引1到x,所謂的邊界檢查就是數組的長度與索引值之間的差1進行的檢查。

  • 錯題2:if a and b are both int arrays, then a = b; will(若是a和b都是int數組,那麼a = b;

    • A.create an alias(建立一個別名)

    • B.copy all elements of b into a

    • C.copy the 0th element of b into the 0th element of a

    • D.return true if each corresponding element of b is equal to each corresponding element of a (that is, a[0] is equal to b[0], a[1] is equal to b[1] and so forth) and return false otherwise

    • E.return true if a and b are aliases and return false otherwise
    • 錯誤解析:針對這道題,我在作的時候有點蒙,因此在百度上進行搜索,查到一個博客的內容就是針對此題的,經過對博客的快速理解,我認爲我應該選擇B,可是卻錯誤了。經過解析:「=」是一個賦值運算符。若是兩個變量都是原語,比左邊的變量副本右邊變量(若是a和b是int值,b = 5,而後將成爲5)。然而,由於a和b是數組的引用變量設置爲參考變量b,致使a和b都引用同一個數組在內存中,或者他們如今彼此的別名。是第三章的別名的知識點,就像書中所示圖例同樣,相互成爲別名,指向相同的地址、相同的對象。

  • 錯題3:A Java main method uses the parameter (String[ ] variable) so that a user can run the program and supply "command-line" parameters. Since the parameter is a String array, however, the user does not have to supply any parameters.(Java主方法使用參數(String[] variable),以便用戶能夠運行程序並提供「命令行」參數。因爲參數是一個字符串數組,所以用戶沒必要提供任何參數。)
    • A.true

    • B.false
    • 錯誤解析:主方法須要參數,以防程序員但願容許用戶提供命令行參數。在java命令以後,在命令行輸入的任何內容都將被接受爲命令行參數。若是是由空格分隔的幾個單詞,那麼每一個單詞都做爲一個單獨的字符串數組元素存儲。例如,「java foo。class hi there「將在variable[0]中存儲「hi」,variable[1]中存儲「there」以供程序使用。

  • 錯題4:So long as one is only accessing the elements of an ArrayList, its efficiency is about the same as that of an array. It's only when one begins to insert or remove elements towards the front portion of an ArrayList that its efficiency deteriorates.(要只訪問ArrayList的元素,它的效率與數組的效率差很少。只有開始在ArrayList的前部分插入或移除元素時,它的效率纔會惡化。)
    • A.true

    • B.false
    • 錯誤解析:ArrayList是做爲數組實現的,只要其中一個只是訪問ArrayList的元素,效率與數組的效率是同樣的。可是,當對ArrayList的前部分進行插入或刪除時,就會發生大量的元素複製,從而下降其效率。

  • 本章內容相對易於理解,對數組的理解掌握的也比較好,明顯比上次考試考的順手,可是也有幾道題作錯,說明仍是有書上內容沒看到位的地方。對於錯誤4的問題想到了ArrayList類是以數組的形式進行存儲的,可是對於「效率」的問題就沒有意識上去,仍是本身僅僅侷限於表面,沒有細探究其中內容致使的。

結對與互評

點評(方藝雯)

  • 博客中值得學習的或問題:
    • 問題和詳細的解答、同時在博客開頭位置進行了各類的概念的解釋,有助於對本章的理解。
    • 截圖特別詳細,可是不多見到用IDEA進行的截圖,因此建議下次使用IDEA,你會發現那個會好用的。
    • 博客排版仍相對單調,方藝雯--<span style="color:顏色">方藝雯--<font face="STCAIYUN">均可以成爲增添博客亮點的方式
  • 代碼中值得學習的或問題:
    • commit的提交粒度詳細,會一直向你學習的。
    • 代碼寫的規範、並且針對錯誤代碼有深入的認識和獨到的理解,特別是虛擬機和IDEA 之間的運行同種代碼出現的「\t」問題。
  • 基於評分標準,我給本博客打分:15分。

  • 得分狀況以下: - 正確使用Markdown語法(加1分)
    • 模板中的要素齊全(加1分)
    • 教材學習中的問題和解決過程, 五個問題加5分
    • 代碼調試中的問題和解決過程, 四個問題加4分
    • 感想,體會不假大空的加1分
    • 點評認真,能指出博客和代碼中的問題的加1分
    • 代碼規範加1分
    • 有動手寫新代碼的加1分

      點評(王禹涵)

  • 博客中值得學習的或問題:
    • 截圖不是很全面,但願下次能夠改正。
    • 博客排版相對單調,與以前的風格相比,開始走下坡路(喜歡之前的風格)。
  • 代碼中值得學習的或問題:
    • 建議能夠更詳細的寫一些代碼出現的問題。
    • 問題4的內容有些問題,建議修改一下。
  • 基於評分標準,我給本博客打分:9分。

  • 得分狀況以下: - 正確使用Markdown語法(加1分)
    • 模板中的要素齊全(加1分)
    • 教材學習中的問題和解決過程, 兩個問題加2分
    • 代碼調試中的問題和解決過程, 四個問題加4分
    • 感想,體會不假大空的加1分
    • 代碼規範加1分

互評對象

  • 本週結對學習狀況
    • 20172304方藝雯
    • 20172323王禹涵

    • 結對學習內容
      • 第九章(繼承的問題)
        • 1.子類和父類的關係、抽象類

        • 2.保留字super和可見性修飾符protected

        • 3.類的層次結構及繼承方式

感悟

第九章的內容是基於第四章和第七章繼續講解如何自創類、更簡便的使用類,經過繼承的方式,能夠把相同特徵的有關方法進行集中做爲父類,可是經過本週的編寫也發現本身在類的編寫方面有很大不足,對於簡單的能夠很清晰編寫成功,可是對於有些複雜的就不得不寫寫僞代碼、照着書上的例子進行敲碼。

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一週 136/136 1/1 15/15
第二週 570/706 1/2 20/35
第三週 613/1319 1/3 23/58
第四周 1249/2568 1/5 30/88
第五週 904/3472 1/6 30/118
第六週 540/4012 1/7 30/118
第七週 826/4838 1/7 30/178

參考資料

相關文章
相關標籤/搜索