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

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

教材學習內容總結

1.進一步瞭解類與對象(類、屬性、操做)。簡單點理解就是好多個對象組成了一個類。
2.對於編寫類的分析。(實例數據、封裝、可見性修飾符、訪問器和修改器)。
3.用來描述類的結構及類間的關係:UML類圖。
4.方法的分析。(return語句、參數、局部數據、構造方法)。
5.軟件開發的四個過程。
6.明確類和對象(對象的類命名通常是名詞,類的行爲通常是動詞。)
7.靜態變量和靜態方法。(方法內的局部變量不能聲明爲static,靜態變量能夠由全部的類實例共享;靜態方法能夠經過類名稱來調用,沒必要實例化類的對象。)
8.類間關係(這章主要講了依賴關係和聚合關係。)
9.常用在構造方法中的this語句。
10.包含常量和抽象方法的接口(Comparable接口和Iterator接口)。html

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

  • 問題1:變量的做用域是什麼?
  • 解答:變量的引用範圍是該變量在程序中能夠引用的區域。聲明在類級的實例變量,能夠被類中的任何方法引用。聲明在一個特定方法中的局部變量(包括形式參數),都只能被該方法引用。程序員

  • 問題2:return語句怎麼使用?爲何不能一次返回多個實際參數?
  • 解答:方法的返回值類型必須與方法聲明首部中規定的返回值類型一致。當方法不返回任何值時,用void做爲返回值類型。一條return語句由保留字return和後續的可選表達式組成。執行return語句時,控制當即返回到調用方法,並返回表達定義式的返回值。數據結構

  • 問題3:靜態變量和靜態方法有什麼區別?
  • 解答:
    靜態變量有兩種狀況:
    靜態變量是基本數據類型,這種狀況下在類的外部沒必要建立該類的實例就能夠直接使用
    靜態變量是一個引用。這種狀況比較特殊,主要問題是因爲靜態變量是一個對象的引用,那麼必須初始化這個對象以後才能將引用指向它。
    所以若是要把一個引用定義成static的,就必須在定義的時候就對其對象進行初始化。
    靜態方法:與類變量不一樣,方法(靜態方法與實例方法)在內存中只有一份,不管該類有多少個實例,都共用一個方法。
    靜態方法與實例方法的不一樣主要有:
    靜態方法能夠直接使用,而實例方法必須在類實例化以後經過對象來調用。ide

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

  • 問題1:使用IDEA輸出中文爲亂碼。
    函數

  • 問題1解決方案:右下角選擇GBK就能夠正常輸出中文。
    學習

  • 問題2:comparable接口的實現
  • 問題2解決方案:
    原本思路爲,利用格式化將double型轉化爲string,接着再次轉化爲double型。但事實證實,本題核心仍是在於實現接口,回顧書本,再結合網上。這樣便可解決。this

代碼託管

(statistics.sh腳本的運行結果截圖)設計

上週考試錯題總結

  • 錯題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
    錯誤解析:經過擴展一個類並繼承它,新類不須要從新實現任何繼承的方法或實例數據,從而節省了程序員的工做量。所以,代碼重用是重用他人代碼的能力,經過擴展它來知足您的需求。經過繼承父類能夠大大的縮減代碼的重複,對於本身選擇接口類的問題,表示本身當時很迷,不知道怎麼回事就選擇了接口。3d

  • 錯題2:Which of the following is true regarding Java classes?(對於Java類,下面哪一個選項是正確的?)
    A.All classes must have 1 parent but may have any number of children (derived or extended) classes(全部的類都必須有一個父類,可是可能有任意數量的子類(派生的或擴展的)類。)
    B.All classes must have 1 child (derived or extended) class but may have any number of parent classes
    C.All classes must have 1 parent class and may have a single child (derived or extended) class
    D.All classes can have any number (0 or more) of parent classes and any number of children (derived or extended) classes
    E.All classes can have either 0 or 1 parent class and any number of children (derived or extended) classes
    錯誤解析:Java支持繼承,但不支持多重繼承,所以Java類能夠有任意數量的子元素,但只有一個父類。此外,因爲全部Java類都直接或間接地從對象類繼承,全部Java類都只有一個父類。在作此題的時候,考慮了終極父類--Object類,由於它沒有父類,因此選擇則了E選項,可是,老師說能夠把Object類看做本身是本身的父類的問題,我也表示很無奈。心疼這一分......

  • 錯題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:In order to determine the type that a polymorphic variable refers to, the decision is made(爲了肯定多態變量所指的類型,作出了決策。)
    A.by the programmer at the time the program is written
    B.by the compiler at compile time
    C.by the operating system when the program is loaded into memory
    D.by the Java run-time environment at run time(經過運行時的Java運行環境。)
    E.by the user at run time
  • 錯誤解析:多態變量能夠包含許多不一樣的類型,可是在程序執行以前,它不知道是哪種類型。在引用變量時,必須作出決策。這個決策是由運行時環境根據變量的最新分配而作出的。這道題也是有關多態的問題,因此看過第十章以後,是動態綁定的問題,效率較早期綁定低,可是動態綁定,體現了多態的靈活性。

  • 錯題5:Using the reserved word, super, one can(使用保留字super,能夠)
    A.access a parent class'constructor(s)
    B.access a parent class'methods and instance data
    C.access a child class'constructor(s)
    D.access a child class'methods and instance data
    E.none of the above
    錯誤解析:保留字super提供了一種機制,用於訪問父類的方法和實例數據(無論它們是否隱藏)。此外,可使用super來訪問父類的構造函數。正確答案是A和B的組合選項。

  • 錯題6: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(不能存在不能實例化一個抽象類)
    錯誤解析:您只能實例化具體的類而不是抽象類。可是您能夠擴展抽象類和接口。
    抽象類實際上是能夠實例化的,可是他的實例化方式不是經過new方式來建立對象,而是經過父類的引用來指向子類的實例來間接地實現父類的實例化(由於子類要實例化前,必定會先實例化他的父類。這樣建立了繼承抽象類的子類的對象,也就把其父類(抽象類)給實例化了).可是:接口是不能被實例化的(接口壓根就沒有構造函數)。

  • 錯題7:A derived class has access to all of the methods of the parent class, but only the protected or public instance data of the parent class.(派生類能夠訪問父類的全部方法,但只訪問父類的受保護或公共實例數據。)
    A.true
    B.false
    錯誤解析:因爲方法也能夠聲明爲私有的,所以派生類沒法訪問任何私有方法。所以,派生類只能訪問父類的受保護和公共方法和實例數據。沒有看到訪問全部方法,因此經過後半句就直接認爲對了。

  • 錯題8:If class AParentClass has a protected instance data x, and AChildClass is a derived class of AParentClass, then AChildClass can access x but can not redefine x to be a different type.(若是類AParentClass有一個受保護的實例數據x,而AChildClass是一個派生類的AParentClass,那麼AChildClass能夠訪問x,但不能從新定義x爲另外一種類型。)
    A.true
    B.false

  • 錯題9
    Aside from permitting inheritance, the visibility modifier protected is also used to
    A. permit access to the protected item by any class defined in the same package
    B. permit access to the protected item by any static class
    C. permit access to the protected item by any parent class
    D. ensure that the class cannot throw a NullPointerException
    E. define abstract elements of an interface
    正確答案: A 個人答案: B
    解析:受保護的可見性修飾符用於以受保護的方式控制對項目的訪問。保護是訪問限於當前類(如私人項目),同一包中的類或此類的擴展類。

  • 錯題10
    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
    正確答案: C 個人答案: E
    解析:多重繼承意味着一個給定的類繼承了多個父類。在上面列出的那些中,筆記本電腦繼承了來自PC和便攜式設備的特性。A,B和E中的答案都是單個繼承的例子,其中一個班級至少有兩個孩子(在A中,計算機有兒童大型機和PC,B,PC有兒童臺式機和筆記本電腦,E,PC有孩子Macintosh和IBM PC)。答案D表示一個類的屬性。

  • 錯題11
    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. closeable
    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
    正確答案: D 個人答案: A
    解析:多態意味着變量能夠有多種形式。在普通狀況下,Java被強烈定義,即一旦聲明爲某個類型的變量永遠不會變爲不一樣的類型。這是一個例外,多態變量能夠是任何類型的派生類(儘管不是同時,變量能夠從一種類型變爲另外一種類型)。

  • 錯題12
    Using the reserved word, super, one can
    A. access a parent class ‘constructor(s)
    B. access a parent class ‘methods and instance data
    C. access a child class ‘constructor(s)
    D. access a child class ‘methods and instance data
    E. none of the above
    正確答案: E 個人答案: B
    解析:super保留字提供了訪問父類的方法和實例數據(無論它們是否隱藏)的機制。另外,可使用super訪問父類的構造器。因此正確的答案是A和B的組合,這不是一個選項,因此正確答案是E.

  • 錯題13
    Why shouldn't an abstract method be declared final?
    A. There's nothing wrong with doing so
    B. Abstract methods cannot be overridden and they must be if a concrete class ever is to be instantiated
    C. So long as the Abstract method never actually is used in by any other method, there's no problem with doing this
    D. As long as the Abstract method is declared in a Class (not an Interface), there's nothing wrong with doing this
    E. None of the above
    正確答案: B 個人答案: E
    解析:爲了使抽象方法變得具體,它必須被覆蓋。聲明一個方法是最終的,所以不可能覆蓋它。這是一個矛盾,是被禁止的。

  • 錯題14
    If class AParentClass has a protected instance data x, and AChildClass is a derived class of AParentClass, then AChildClass can access x but cannot redefine x to be a different type.
    A. true
    B. false
    正確答案: B 個人答案: A
    解析:派生類能夠從新定義父類的任何實例數據或方法。父類的版本如今隱藏了,可是能夠經過使用super來訪問,就像在super.x中同樣。

  • 錯題15
    Although classes can be inherited from one-another, even abstract classes, interfaces cannot be inherited.
    A. true
    B. false
    正確答案: B 個人答案: A
    解析:接口具備普通類所具備的全部繼承屬性。所以,您能夠建立一個Interface繼承層次結構,就像您能夠建立一個Class繼承層次結構同樣。然而,你不能作的是實例化他們必須實現的接口。

    結對及互評

評分標準

  1. 正確使用Markdown語法(加1分):
    • 不使用Markdown不加分
    • 有語法錯誤的不加分(連接打不開,表格不對,列表不正確...)
    • 排版混亂的不加分
  2. 模板中的要素齊全(加1分)
    • 缺乏「教材學習中的問題和解決過程」的不加分
    • 缺乏「代碼調試中的問題和解決過程」的不加分
    • 代碼託管不能打開的不加分
    • 缺乏「結對及互評」的不能打開的不加分
    • 缺乏「上週考試錯題總結」的不能加分
    • 缺乏「進度條」的不能加分
    • 缺乏「參考資料」的不能加分
  3. 教材學習中的問題和解決過程, 一個問題加1分

  4. 代碼調試中的問題和解決過程, 一個問題加1分

  5. 本週有效代碼超過300分行的(加2分)
    • 一週提交次數少於20次的不加分
  6. 其餘加分:
    • 週五前發博客的加1分
    • 感想,體會不假大空的加1分
    • 排版精美的加一分
    • 進度條中記錄學習時間與改進狀況的加1分
    • 有動手寫新代碼的加1分
    • 課後選擇題有驗證的加1分
    • 代碼Commit Message規範的加1分
    • 錯題學習深刻的加1分
    • 點評認真,能指出博客和代碼中的問題的加1分
    • 結對學習狀況真實可信的加1分
  7. 扣分:
    • 有抄襲的扣至0分
    • 代碼做弊的扣至0分
    • 遲交做業的扣至0分

點評

  • 博客中值得學習的或問題:
    • 同窗們已經有意識的碰見錯誤就截圖,給後面寫博客的各類方便不少,我一直忘記只能從新敲一遍。
  • 代碼中值得學習的或問題:
    • 條條大路通羅馬,好多同窗能夠曲線思惟弄出代碼,聽他們講解後真的很佩服。
  • 基於評分標準,我給本博客打分:11分。得分狀況以下:正確使用Markdown語法+1.教材學習中的問題和解決過程+2.代碼調試中的問題和解決過程+2.感想,體會不假大空+1.錯題學習深刻+1.點評認真,能指出博客和代碼中的問題+1.結對學習狀況真實可信+1.課後題有驗證+1,進度條有記錄+1.

  • 參考示例

點評過的同窗博客和代碼

  • 本週結對學習狀況
    • 20182305
    • 結對照片
    • 結對學習內容
      1.明確類和對象(對象的類命名通常是名詞,類的行爲通常是動詞。)
      2.靜態變量和靜態方法。(方法內的局部變量不能聲明爲static,靜態變量能夠由全部的類實例共享;靜態方法能夠經過類名稱來調用,沒必要實例化類的對象。)
      3.類間關係(這章主要講了依賴關係和聚合關係。)
      4.常用在構造方法中的this語句。
  • 上週博客互評狀況

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

  • 每節課的考試讓我十分吃不消,不僅是英語單方面的問題,Java也有許多問題亟待解決,由於課本版本不一樣,找起知識點來比較麻煩。
  • 第四周過去,已經能夠獨立使用IDEA編寫一些程序,可是仍然複雜的不會,命令字符類還很生疏,還得多看多練。
  • 在完成課後練習時甚至一度忘記git和junit的配置,只能重複配置後再git,還有UML的使用還亟待熟練。

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一週 200/200 2/2 20/20
第二週 350/500 2/4 24/38
第三週 512/1000 3/7 22/60
第四周 1158/1300 4/9 35/90

參考資料

相關文章
相關標籤/搜索