20182306 2019-2020-1 《數(shù)據(jù)結(jié)構(gòu)與面向?qū)ο蟪绦蛟O(shè)計(jì)》第四周學(xué)習(xí)總結(jié)

教材學(xué)習(xí)內(nèi)容總結(jié)

object類(lèi):所有Java類(lèi)都直接或間接地由object類(lèi)派生。(Java的每一個(gè)類(lèi)都繼承toString和equals方法)
繼承主要表達(dá)的是“是”這個(gè)關(guān)系。子類(lèi)是父類(lèi)的一個(gè)更具體的類(lèi)。
super用來(lái)調(diào)用父類(lèi)的構(gòu)造方法。
對(duì)于層次結(jié)構(gòu),我覺(jué)得就是將共用性強(qiáng)的類(lèi)提高在較高的層次,這樣引用的時(shí)候,更加的方便。同時(shí),應(yīng)知道Object類(lèi)是沒(méi)有父類(lèi)的。

教材學(xué)習(xí)中的問(wèn)題和解決過(guò)程

  • 問(wèn)題1:子類(lèi)是否可以重寫(xiě)父類(lèi)的所有方法。
  • 問(wèn)題1解決方案:構(gòu)造方法時(shí)一個(gè)特殊的方法,與類(lèi)名相同,但是沒(méi)有返回類(lèi)型。如果試圖重寫(xiě)父類(lèi)的構(gòu)造方法,將會(huì)產(chǎn)生語(yǔ)法錯(cuò)誤,因?yàn)槌藰?gòu)造方法之外的所有方法都必須有返回類(lèi)型。
  • 問(wèn)題2:為什么抽象類(lèi)不包含抽象代碼
  • 問(wèn)題2解決方案:抽象類(lèi)可以沒(méi)有抽象方法,但是如果你的一個(gè)類(lèi)已經(jīng)聲明成了抽象類(lèi),即使這個(gè)類(lèi)中沒(méi)有抽象方法,它也不能再實(shí)例化,即不能直接構(gòu)造一個(gè)該類(lèi)的對(duì)象。如果一個(gè)類(lèi)中有了一個(gè)抽象方法,那么這個(gè)類(lèi)必須聲明為抽象類(lèi),否則編譯通不過(guò)。對(duì)于抽象方法,一定要用public abstract修飾抽象方法,而privateprotected不可以。如果一個(gè)類(lèi)中有抽象方法,那么這個(gè)類(lèi)一定是抽象類(lèi)。

代碼調(diào)試中的問(wèn)題和解決過(guò)程

  • 問(wèn)題1:Juint出現(xiàn)錯(cuò)誤
  • 問(wèn)題1解決方案:點(diǎn)擊小燈泡,選擇給出的方案中最便捷的一項(xiàng)
  • 問(wèn)題2:沒(méi)有輸入ToString
  • 問(wèn)題2解決方案:結(jié)果會(huì)輸出一串代碼,這個(gè)是地址,加入ToString輸出結(jié)果
  • 問(wèn)題3:代碼中出現(xiàn)中文,輸出會(huì)有亂碼。
  • 問(wèn)題3的解決方案:選擇GBK

代碼托管

上周考試錯(cuò)題總結(jié)

  • 錯(cuò)題1
    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
    解析: 長(zhǎng)度和toUpperCase消息沒(méi)有參數(shù),子字符串有兩個(gè)int參數(shù)。對(duì)于等于,必須將字符串作為參數(shù)傳遞,以便將接收消息的字符串與作為參數(shù)傳遞的字符串進(jìn)行比較。
  • 錯(cuò)題2
    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
    正確答案: E 你的答案: D
    解析:在A的情況下,0(一個(gè)int)的值被加寬到雙倍。在C的情況下,執(zhí)行生成0.3的加法,然后調(diào)用雙foo。D中的參數(shù)列表是非法的,因?yàn)樗瑑蓚€(gè)雙參數(shù),而不是1。
  • 錯(cuò)題3
    In a UML diagram for a class
    A .classes are represented as rectangles
    B .there may be a section containing the name of the class
    C .there may be a section containing the attributes (data) of the class
    D .there may be a section containing the methods of the class
    E .all of the above
    正確答案: E 你的答案: B
    解析:這四個(gè)屬性正確地描述了類(lèi)的UML表示。
  • 錯(cuò)題4
    Visibility modifiers include
    A .public, private
    B .public, private, protected
    C .public, private, protected, final
    D .public, protected, final, static
    E .public, private, protected, static
    正確答案: B 你的答案: E
    解析:公共、私有、受保護(hù)的控制變量和方法的可見(jiàn)性。最終控制變量、方法或類(lèi)是否可以進(jìn)一步更改或重寫(xiě)不可見(jiàn)性。靜態(tài)控制變量或方法是否與類(lèi)的實(shí)例或類(lèi)本身相關(guān)聯(lián)。
  • 錯(cuò)題5
    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
    正確答案: A 你的答案: D
    解析:聲明任何類(lèi)型的構(gòu)造函數(shù)(甚至是void)都是違反語(yǔ)法的,因此您將收到一個(gè)語(yǔ)法錯(cuò)誤。
  • 錯(cuò)題6
    The following method header definition will result in a syntax error: public void aMethod( );
    A .true
    B .false
    正確答案: A 你的答案: B
    解析:語(yǔ)法錯(cuò)誤的原因是因?yàn)樗浴埃弧狈?hào)結(jié)尾。相反,需要后面跟著{},括號(hào)中有0或更多的指令。抽象方法將以“;”結(jié)尾,但此標(biāo)頭并不定義抽象方法。
  • 錯(cuò)題7
    The interface of a class is based on those data instances and methods that are declared public.
    A .true
    B .false
    正確答案: A 你的答案: B
    解析:接口是外部代理與對(duì)象的交互方式。交互只能通過(guò)在類(lèi)的定義中聲明為公共的項(xiàng)來(lái)實(shí)現(xiàn)。
  • 錯(cuò)題8
    An object should be encapsulated in order to guard its data and methods from inappropriate access.
    A .true
    B .false
    正確答案: A 你的答案: B
    解析:封裝是一種概念,即應(yīng)該保護(hù)對(duì)象不被意外(或有目的)誤用。
  • 錯(cuò)題9
    Accessors and mutators provide mechanisms for controlled access to a well-encapsulated class.
    A .true
    B .false
    正確答案: A 你的答案: B
    解析:訪問(wèn)器提供對(duì)否則無(wú)法訪問(wèn)的變量的讀訪問(wèn)。變異器提供對(duì)其他不可訪問(wèn)變量的寫(xiě)訪問(wèn)。

結(jié)對(duì)及互評(píng)

評(píng)分標(biāo)準(zhǔn)

  1. 正確使用Markdown語(yǔ)法(加1分)

  2. 模板中的要素齊全(加1分)

  3. 教材學(xué)習(xí)中的問(wèn)題和解決過(guò)程, 3個(gè)問(wèn)題加3分

  4. 代碼調(diào)試中的問(wèn)題和解決過(guò)程, 2個(gè)問(wèn)題加2分

  5. 本周有效代碼超過(guò)300分行的(加2分)

  6. 感想,體會(huì)不假大空的加1分

  7. 排版精美的加一分

  8. 進(jìn)度條中記錄學(xué)習(xí)時(shí)間與改進(jìn)情況的加1分

  9. 有動(dòng)手寫(xiě)新代碼的加1分

  10. 課后選擇題有驗(yàn)證的加1分

  11. 錯(cuò)題學(xué)習(xí)深入的加1分

  12. 點(diǎn)評(píng)認(rèn)真,能指出博客和代碼中的問(wèn)題的加1分

  13. 結(jié)對(duì)學(xué)習(xí)情況真實(shí)可信的加1分

點(diǎn)評(píng)模板:

  • 博客中值得學(xué)習(xí)的或問(wèn)題:
    博客書(shū)寫(xiě)規(guī)范;
    博客中的錯(cuò)題整理的規(guī)范

  • 代碼中值得學(xué)習(xí)的或問(wèn)題:
    代碼增長(zhǎng)量多,說(shuō)明結(jié)對(duì)的同學(xué)這周很努力的在學(xué)習(xí)Java,我也要努力學(xué)習(xí)Java了

  • 基于評(píng)分標(biāo)準(zhǔn),我給本博客打分:15分。

點(diǎn)評(píng)過(guò)的同學(xué)博客和代碼

  • 本周結(jié)對(duì)學(xué)習(xí)情況
    • 20182313
    • 結(jié)對(duì)學(xué)習(xí)內(nèi)容
      編寫(xiě)自定義類(lèi),繪制UML類(lèi)圖,共同理解各種循環(huán)的異同之處,學(xué)習(xí)封裝的基本概念并做一一些淺顯的實(shí)踐。
  • 上周博客互評(píng)情況

學(xué)習(xí)進(jìn)度條

代碼行數(shù)(新增/累積) 博客量(新增/累積) 學(xué)習(xí)時(shí)間(新增/累積) 重要成長(zhǎng)
目標(biāo) 5000行 30篇 400小時(shí)
第一周 168/168 2/2 22/22
第二周 300/500 1/3 16/38
第三周 500/1000 2/5 22/60
第四周 605/1460 2/7
參考:軟件工程軟件的估計(jì)為什么這么難軟件工程 估計(jì)方法
  • 計(jì)劃學(xué)習(xí)時(shí)間:30小時(shí)

  • 實(shí)際學(xué)習(xí)時(shí)間:35小時(shí)

參考資料