作業04-面向對象設計與繼承


1. 本周學習總結

1.1 寫出你認為本周學習中比較重要的知識點關鍵詞
1.2 嘗試使用思維導圖將這些關鍵詞組織起來。注:思維導圖一般不需要出現過多的字。
1.3 可選:使用常規方法總結其他上課內容。

2. 書面作業

1. 面向對象設計(大作業1-該作業將作為以后其他作業的基礎,請務必完成)

1.1 講故事:講一個你在網上商城購物或者在班級博客進行學習的故事。使用Markdown的加粗標記把關鍵名詞標注出來,使用語句塊標記把里面關鍵的動詞標注出來。講故事范例:請參考UML類圖中的如何繪制類圖
1.2 重點檢查:找出系統中包含的每個及其所屬性、方法類與類之間的關系,並繪制相應UML類圖。如下圖所示:

類圖繪制請參考資料:面向對象設計與UML類圖UML類圖幾種關系的總結
提示1:繪制類圖的時候,注意箭頭形狀。如,繼承使用實線空心箭頭由子類指向父類。實現使用虛線空心箭頭由實現類指向接口。常見的需要表現的關系為:繼承(帶空心三角箭頭實線)、實現(帶空心三角箭頭虛線)、依賴(帶箭頭虛線)。
提示2:類圖中的線段不要出現無意義的轉折。
提示3:類設計時不一定非要體現繼承關系,只要能將系統描述完整即可。一開始設計的時候不要考慮太多,不要出現太多的類,僅出現必要的類,完成最小功能即可。對商城購物系統建議只做購物車模塊。

1.3 給出系統中關鍵類的代碼(至少要有購物車、商品這兩個類的代碼)。選做:嘗試實現並運行該系統,並粘貼運行截圖與關鍵代碼。將來要在這個基礎上逐漸完善、擴展成一個完整的面向對象的系統。合作完成:2-3人一個小組。
可選:團隊協作可使用git與碼雲。在碼雲中新建項目。所有隊員都應在碼雲中該項目下均應有有提交記錄。截圖你們的提交記錄。
參考資料:

使用Processon畫圖
面向對象案例-借款者姓名地址.zip
直接由代碼生成類圖Eclipse插件-ModelGoon

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

分析ManagerTest.zip中的代碼,回答幾個問題:
2.1 簡述代碼中表現出的繼承關系。哪些是共有方法,哪些是子類特有的屬性和方法?
2.2 文件第26行e.getSalary(),到底是調用Manager類的還是Employee類的getSalary方法?
2.3 Manager類的構造函數使用super調用父類的構造函數實現了代碼復用,這樣有什么好處?為什么不把父類構造函數中的相關代碼復制粘貼到Manager的構造函數中,這樣看起來不是更直觀嗎?
2.4 多態與動態綁定有什么關系?使用代碼進行說明。

3. Object類中的toString與equals

3.1 編寫Fruit類,屬性String name。如果覆蓋其toString()方法,其父類中的toString方法的代碼就沒有了嗎?編寫Fruit的toString()方法,在該方法中要將調用父類的toString方法得到的字符串與自己特有的屬性name拼接起來,怎么編寫?(截圖代碼:出現學號與姓名)
3.2 為Fruit類編寫equals方法覆蓋父類相應方法,功能為當兩個Fruit對象name相同時(忽略大小寫),返回true。(截圖代碼:出現學號與姓名)
3.3 完成3.2后,使用ArrayList<Fruit> fruitList存儲多個fruit,添加時要求如果要添加的fruit對象在fruitList中已存在就不添加,不存在就添加。編寫相關測試代碼(截圖需包含代碼與運行結果,並在運行結果中出現自己的學號與姓名)。並截圖ArrayList中contains的關鍵代碼,分析其與equals方法有何關系?
提示:直接使用ArrayList的contains方法實現判斷對象是否存在。
3.4 結合PTA函數題Object,回答:為什么使用Object類型的數組可以存儲任何類型的對象?

4. 實驗總結:(無自己的總結,均打0分)

4.1 PTA編程題(形狀-繼承)。並回答:在完成本題時,使用了多態特性,你認為這種特性為完成該題帶來了什么好處。
4.2 PTA編程題(覆蓋)。並回答:編寫eqauls方法是需要注意些什么?使用自反性、對稱性、傳遞性、一致性、非空性通過代碼來驗證自己寫的equals方法對不對。
參考資料:1.怎樣正確改寫equals方法
2.重載equals方法時要遵守的通用約定--自反性,對稱性,傳遞性,一致性,非空性
4.3 程序填空、函數題(1-3)。需寫自己的總結,禁止截圖代碼。

選做:5. 代碼閱讀:EqualsTest.java(equals與hashCode)

5.1 為Employee類的equals函數的每一行加中文注釋並截圖。
5.2 為Manager類的equals函數的每一行加中文注釋並截圖。回答,編寫子類的equals方法需要注意什么?
5.3 查看ManagerhashCode源代碼。並回答,編寫子類的hashCode方法需要注意什么?
5.4 對EmployeehashCode源代碼加中文注釋。並結合數據結構中的知識,你覺得每個類中都有的hashCode方法有什么用?
參考鏈接:

EqualsTest.zip

3. 碼雲及PTA

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

3.1. 碼雲代碼提交記錄

  • 在碼雲的項目中,依次選擇“統計-Commits歷史-設置時間段”, 然后搜索並截圖

3.2 截圖PTA題集完成情況圖

本周完成(形狀-繼承,覆蓋)
需要有兩張圖(1. 排名。2.PTA提交列表)

3.3 統計本周完成的代碼量

需要將每周的代碼統計情況融合到一張表中。
表格格式如下所示:

周次 總代碼量 新增代碼量 總文件數 新增文件數
1 200 200 3 3
2 500 300 7 4
3 600 100 8 1

其他可參考的題目:

1. 注釋的應用

使用類的注釋方法的注釋為以前編寫的類與方法進行注釋,並在Eclipse中通過鼠標懸停查看相關注釋。(截圖)

3. Object類

3.1 編寫Fruit類,屬性String name。使用System.out.println(new Fruit());調用了Fruit的什么方法?該方法的代碼是從哪來的?這些代碼實現了什么功能?

6. 實驗總結:

5.3 PTA編程題(繼承覆蓋綜合練習)。並回答:使用Collections.sort對引用類型數組進行排序需要有一個什么前提條件?


免責聲明!

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



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