Week04-面向對象設計與繼承

1. 本週學習總結

1.1 寫出你認爲本週學習中比較重要的知識點關鍵詞

繼承與多態;類型斷定和轉換;抽象類html

1.2 嘗試使用思惟導圖將這些關鍵詞組織起來。注:思惟導圖通常不須要出現過多的字。

2.書面做業

2.1. 面向對象設計(大做業1-該做業將做爲之後其餘做業的基礎,請務必完成)

2.1.1 講故事:用50字以上講一個你在網上商城購物或者在班級博客進行學習的故事。使用Markdown的加粗標記把關鍵名詞標註出來,使用語句塊標記把裏面關鍵的動詞標註出來。講故事範例:見參考資料UML類圖中如何繪製類圖

今每天氣晴朗,心情不錯,我準備在這個美妙的日子裏註冊一個淘寶號買一套衣服,註冊成功後輸入帳號密碼登錄而後搜索衣服,選擇本身喜歡的顏色和合適的尺碼,參考價格後放入購物車決定購買,可是我舍友也想要一件只能把數量變成2添加到購物車java

2.1.2 找出系統中包含的類及其屬性、方法,類與類之間的關係,並繪製相應類圖。注意:不必定非要體現繼承關係。只要能將系統描述完整便可。一開始設計的時候不要考慮太多,不要出現太多的類,僅出現必要的類,完成最小功能便可。對商城購物系統建議只作購物車模塊。

2.1.3 使用Java代碼實現這個系統(沒必要很完善)。粘貼運行截圖與關鍵代碼。未來要在這個基礎上逐漸完善、擴展成一個完整的面向對象的系統。合做完成:2-3人一個小組。

商品類[Goods]
屬性:git

private String GoodsName;//商品名稱
private double Price;//單價
static ArrayList goods = new ArrayList();//用於存儲商品信息編程

購物車[ShoppingCar]markdown

方法:eclipse

public void AddGoods()//添加商品
public void DeleteGoods() //刪除商品
public void AdjustNum() //調整數量
public void ClearCar()//清空購物車
public double TotalPrice()//商品總價函數

可選:團隊協做可以使用git與碼雲。在碼雲中新建項目。全部隊員都應在碼雲中該項目下均應有有提交記錄。截圖大家的提交記錄。學習

2.2. ManagerTest.zip代碼分析(繼承、多態)

分析ManagerTest.zip中的代碼,回答幾個問題:測試

2.2.1 簡述文件中表現出的繼承關係。哪些是共有方法,哪些是子類特有的屬性和方法?

  • 父類:Employee,子類:Manager;即Manager繼承Employee;
  • 共有方法:父類Emplyoyee有聲明爲public的都是共有方法;
  • 特有屬性聲明爲:private double bonus;方法public void setBonus(double b)

2.2.2 文件第26行e.getSalary(),究竟是調用Manager類的仍是Employee類的getSalary方法?

  • staff[0]調用了Manager類,staff[1]和staff[2]調用了Employee類的。

2.2.3 Manager類的構造函數使用super調用父類的構造函數實現了代碼複用,這樣有什麼好處?爲何不把父類構造函數中的相關代碼複製粘貼到Manager的構造函數中,這樣看起來不是更直觀嗎?

  • 實現代碼簡化,節省空間。若是複製黏貼,看起來難過浪費空間,並且若是須要修改時候更是要花費不少時間

2.3. Object類中的toString與equals

2.3.1 編寫Fruit類,屬性String name。若是覆蓋其toString()方法,其父類中的toString方法的代碼就沒有了嗎?編寫Fruit的toString()方法,在該方法中要將調用父類的toString方法獲得的字符串與本身特有的屬性name拼接起來,怎麼編寫?(使用代碼展現)

2.3.2 爲Fruit類編寫equals方法覆蓋父類相應方法,功能爲當兩個Fruit對象name相同時(忽略大小寫),返回true。(使用代碼證實你本身覆蓋的equals方法是正確的)


2.3.3 完成3.2後,使用ArrayList fruitList存儲多個fruit,添加時要求若是要添加的fruit對象在fruitList中已存在就不添加,不存在就添加。編寫相關測試代碼。並分析ArrayList的contains代碼與equals方法有何關係?


4. 實驗總結:

2.4.1 PTA編程題(形狀-繼承)。並回答:在本題中使用多態爲編程帶來了什麼好處。

  • 只用對抽象類進行修改,重複利用很棒。
  • 調用性提升不少,消除了類型之間的相互影響的關係。

2.4.2 PTA編程題(覆蓋)。並回答:編寫eqauls方法是須要注意些什麼?

equals方法的要求:
一、自反性:對於任何非空引用x,x.equals(x)應該返回true。
二、對稱性:對於任何引用x和y,若是x.equals(y)返回true,那麼y.equals(x)也應該返回true。
三、傳遞性:對於任何引用x、y和z,若是x.equals(y)返回true,y.equals(z)返回true,那麼x.equals(z)也應該返回true。
四、一致性:若是x和y引用的對象沒有發生變化,那麼反覆調用x.equals(y)應該返回一樣的結果。
五、非空性:對於任意非空引用x,x.equals(null)應該返回false。ui

http://www.cnblogs.com/silence-hust/p/4558701.html

2.4.3 程序填空、函數題(1-3)。

  • 6-1用super關鍵字來調用父類的對象便可。
  • 6-2一步一步按照題目作便可。
  • 6-3用eclipse自動生成後修改就行。

3. 碼雲及PTA

題目集:[jmu-Java-03-面向對象1-基礎-封裝繼承]

3.1. 碼雲代碼提交記錄

3.2 截圖PTA題集完成狀況圖

3.3 統計本週完成的代碼量

周次 總代碼量 新增代碼量 總文件數 新增文件數
1 70 70 5 5
2 207 207 4 4
3 205 205 11 11
4 81 81 4 4
相關文章
相關標籤/搜索