201521123108 《Java程序設計》第4周學習總結

1. 本章學習總結

2. 書面做業

Q1. 註釋的應用
使用類的註釋與方法的註釋爲前面編寫的類與方法進行註釋,並在Eclipse中查看。(截圖)
答:java

Q2. 面向對象設計(大做業1-很是重要)
2.1 講故事:將在網上商城購物或者在班級博客進行學習這一過程,講述爲一個故事。(不得少於50字)。
答:首先,進入淘寶商城,進行搜索,輸入所要的商品。再根據關鍵詞分類,快速尋找。到商品後點擊進商品頁面,查看詳情,詢問客服相關問題。滿意後加入購物車。點擊購物車,選擇要購買的書及書的數目,進行結算,最後支付,加入到個人訂單。數組

2.2 經過這個故事咱們能發現誰在用這個系統,系統中包含的類及其屬性方法,類與類之間的關係。嘗試找到這些類與屬性,並使用思惟導圖描述類、屬性、方法及類與類之間的關係。
答:購買者在用這個系統,橫向爲類,豎向爲屬性函數

2.3 嘗試使用Java代碼實現故事中描述的這一過程(沒必要很完善),未來要在這個基礎上逐漸完善、擴展成一個完整的面向對象的系統。(可選:加分)學習

參考資料:
UML類圖
面向對象案例-借款者姓名地址.zip
代碼生成類圖Eclipse插件-ModelGoon測試

Q3. ManagerTest.zip代碼分析
分析ManagerTest.zip中的代碼,回答幾個問題:
3.1 在本例中哪裏體現了使用繼承實現代碼複用?回答時要具體到哪一個方法、哪一個屬性。
答:class Manager extends Employee體現繼承代碼複用,Manager繼承了Employee的方法:public Employee(String n, double s, int year, int month, int day), public String getName(),public double getSalary(),public Date getHireDay(),public void raiseSalary(double byPercent);Manager繼承了Employee的屬性:private String name;private double salary;private Date hireDay。ui

3.2 Employee類及其子類Manager都有getSalary方法,那怎麼區分這兩個方法呢?
答:Manager類要調用父類的getSalary方法要加super.關鍵字,不然默認的是調用Employee類中定義的getSalary方法,由於子類中重寫了此方法覆蓋了父類的方法。而子類的方法對父類不可見,因此Employee類調用的是本身原來定義的方法。插件

3.3 文件第26行e.getSalary(),究竟是調用Manager類的getSalary方法仍是Employee類的getSalary方法。
答:調用Employee類的getSalary方法。設計

3.4 Manager類的構造函數使用super調用父類的構造函數實現了代碼複用,你以爲這樣的有什麼好處?爲何不把父類構造函數中的相關代碼複製粘貼到Manager的構造函數中,這樣看起來不是更直觀嗎?
答:不須要再寫相同的代碼,簡化了代碼。3d

Q4. Object類
4.1 編寫一個Fruit類及屬性String name,如沒有extends自任何類。使用System.out.println(new Fruit());是調用Fruit的什麼方法呢?該方法的代碼是從哪來的?嘗試分析這些代碼實現了什麼功能?
答:由於沒有extends關鍵字,因此係統默認object類爲父類,調用object類中的toString方法。對象

4.2 若是爲Fruit類添加了toString()方法,那麼使用System.out.println(new Fruit());調用了新增的toString方法。那麼其父類中的toString方法的代碼就沒有了嗎?若是同時想要複用其父類的toString方法,要怎麼操做?(使用代碼演示)
答:

4.3 Fruit類還繼承了Object類的equals方法。嘗試分析其功能?本身編寫一個equals方法覆蓋父類的相應方法,功能爲當兩個Fruit對象name相同時(忽略大小寫),那麼返回true。(使用代碼證實你本身覆蓋的equals方法是正確的)
答:

4.4 在4.3的基礎上使用ArrayList fruitList存儲多個fruit,要求若是fruitList中已有的fruit就再也不添加,沒有的就添加進去。請編寫相關測試代碼。並分析ArrayList的contains方法是如何實現其功能的?
答:

Q5. 代碼閱讀:PersonTest.java(abstract、多態)
5.1 畫出類的繼承關係
答:

5.2 讀懂main函數,將本身推測的出代碼運行結果與真正運行結果進行比較。嘗試分析緣由
答:按年齡遞增順序排列persons數組(正解) Person類是抽象類,不存在可實例化的對象,所以須要引用子類類型,因爲子類都繼承了父類的屬性與方法,所以,people之間能夠直接複用父類成員從而進行比較。

5.3 子類中裏面使用了super構造函數,做用是什麼?若是將子類中的super構造函數去掉,行不行?
答:super是用來調用父類的構造函數。由於父類中存在有參的構造函數,那麼子類就必須調用父類的構造函數進行初始化,不然報錯。

5.4 PersonTest.java中的代碼哪裏體現了多態?你以爲多態有什麼好處?多態和繼承有什麼關係嗎? 答 :子類繼承父類體現了多態。 多態的好處:加強程序的可擴展性及可維護性,使代碼更加簡潔。 多態和繼承的關係:多態是使用單一接口操做多種類型的對象。多態與繼承、方法重寫密切相關,繼承服務於多態,多態也不能單獨使用,即多態與繼承相互做用。

相關文章
相關標籤/搜索