王彪20162321 2016-2017-2 《程序設計與數據結構》第6周學習總結


王彪20162321 2016-2017-2 《程序設計與數據結構》第6周學習總結

教材學習內容總結

-1.關鍵概念

  • 1.繼承是從已有類派生一個新類的過程.
  • 2.繼承的目的之一是復用已有的軟件.
  • 3.繼承在父類和子類之間建立了 is-a 關系.
  • 4.保護可見性提供了繼承之間最恰當的封裝機制.
  • 5.可以使用super引用來調用父類的構造方法.
  • 6.子類可以重寫(重定義)繼承自父類的方法.
  • 7.一個類的子類可以是一個或多個其他類的父類,這樣形成了類層次.
  • 8.公共特性應該放到類層次中盡可能高的位置上.
  • 9.Java的所有類都直接或間接地派生於Object類.
  • 10.Java程序中的每個類都繼承類toString和equals方法.
  • 11.抽象類不能實例化,它提供的概念可由其他類來定義.
  • 12.派類於抽象父類的類必須重寫父類中所有的抽象方法,否則派生的類認為抽象類.
  • 13.私有成員也被子類繼承,但不能通過名字直接引用。不過可以間接引用它們.
  • 14.final修飾符可以用來限制繼承.

-2.重點總結

  • 1.構造方法不能繼承.
  • 2.抽象類不能生成對象
  • 3.如果一個類有抽象函數,那么它一定為抽象類.
  • 4.沒有抽象函數也可以定義為抽象類.
  • 5.在子類的構造函數當中,必須調用父類的構造函數.

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

  • 問題1:在書上的程序中的某些代碼不清楚作用.
    public class Book
    {protected int pages = 1500;    
    public void setPages (int numPages) 
    {pages = numPages;}
    public int getPages (){
    return pages;} 
    }

程序中有一段代碼

    {pages = numPages;}

而在Words類實例化時並沒有調用此函數,翻閱書發現還有很多相似的程序,不明所以.
解決過程:和劉先潤同時遇到此問題當時都有點懵,任何問題都難不倒實踐對吧,我在Words.java程序中調用此函數,發現並沒有出現編譯錯誤,而且它更改了成員變量pages的值,頓覺大悟,一個書類,可以有很多種書,文學,科學等,而不同書有不同的頁數,這是很符合實際情況的,代碼中首先就給pages賦值1500,但實際情況中不可能每本書都是1500頁吧,所以設計此函數,反應過來后還挺簡單的,每段代碼都有它的可取之處。

  • 問題2:理解 我們為了能在派生類中引用而聲名一個公有變量,那么這就違背了封裝的原則.
    解決過程:
    1.關於封裝:一個對象應該是自管理的,即對象的實例數據應該僅由該對象來修改.
    封裝提供了一個有效的途徑來保護數據不被意外的破壞。
    相比我們將數據(用域來實現)在程序中定義為公用的(public)我們將它們(fields)定義為私有的(privat)在很多方面會更好。
    2.關於保留字public :公有變量與封裝的原則相悖,它允許定義數據的類之外的代碼訪問或修改數據的值.
    3.繼承,封裝,多態,java封裝的概念,理解封裝

  • 問題3:重載與重寫
    解決過程:
    1.重載:在Java中可以讓多個方法使用相同的方法名但帶有不同的參數列表.
    2.重寫:當子類中定義的方法與父類中定義的方法有相同的名字和簽名時,我們說子類重寫了父類中的方法.
    3.Java的重寫和重載機制

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

  • 問題1:程序8.11中的問題
    public class FoodItem
    {
    final private int CALORIES_PER_GRAM=9;
    private int fatGrams;
    protected int servings;
    ...
    }

變量fatGrams為私有變量,所以他只能在所定義的類中使用,但是

    public class Pizza extends FoodItem
    {
    public Pizza (int fatGrams)
    {
    super (fatGrams,8);
    }
    }

而在子類Pizza中就引用了這個變量,頓覺不明

  • 解決過程:並沒有搞清楚,個人認為這兩個fatGrams應該表示兩個不同的量吧

代碼托管

結對及互評

這周主要是在幫助相互理解封裝的概念,結對項目還在改進,因為要拿T-shirt衫是吧

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

這周內容不是很多,但重在理解,分享發一些好地方

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第五周 200/1500 6/11 97/120
第六周 200/1700 7/11 110/120
第七周 000/0000 0/13 00/120

嘗試一下記錄「計划學習時間」和「實際學習時間」,到期末看看能不能改進自己的計划能力。這個工作學習中很重要,也很有用。
耗時估計的公式
:Y=X+X/N ,Y=X-X/N,訓練次數多了,X、Y就接近了。

參考:軟件工程軟件的估計為什么這么難軟件工程 估計方法

  • 計划學習時間:XX小時

  • 實際學習時間:XX小時

  • 改進情況:

(有空多看看現代軟件工程 課件
軟件工程師能力自我評價表
)

參考資料


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM