java第四周學習總結


一、 本周學習總結

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

  • 重載
  • static關鍵字
  • final關鍵字
  • 繼承與多態
  • 抽象類 abstract

1.2 嘗試使用思維導圖將這些關鍵詞組織起來。注:思維導圖一般不需要出現過多的字。

二、 書面作業

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

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

為了更好的學習java,我們決定上某寶買一本java學習輔導書。首先登陸某寶輸入賬號密碼,然后在搜索框輸入java學習輔導書,點擊搜索。點擊進去,查看書籍的定價,再綜合比較之后決定買這本書,選擇數量三本加入購物車。在購物車中選擇結算

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

String account;//賬號
String password;//密碼

  • Goods類:

String Name;//商品名稱
double Price;//價格

  • ShoppingCar 類:

String Name;//商品名稱
int num;//數量
static double AllSum;//總和
double Price;//價格
方法:

  • Login類

String Account //賬號
String Password //密碼
類圖如下:

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

(跟華輝一組)
測試數據:

Goods g1 = new Goods("A",3);
Goods g2 = new Goods("B",4);
Goods g3 = new Goods("C",1.1);
Goods g4 = new Goods("D",12.5);
Goods g5 = new Goods("E",3.1);


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

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

答:

  • 父類:Manager;子類:Employee。
  • 共有方法:getSalary()
  • 子類特有的屬性和方法:屬性bonus、方法public void setBonus(double b)
2.2 文件第26行e.getSalary(),到底是調用Manager類的還是Employee類的getSalary方法?

答:Employee中的getSalary,因為e是Employee類型的,JVM會根據實際對象類型來調用相應的子類的代碼。

2.3 Manager類的構造函數使用super調用父類的構造函數實現了代碼復用,這樣有什么好處?為什么不把父類構造函數中的相關代碼復制粘貼到Manager的構造函數中,這樣看起來不是更直觀嗎?

答:

  • 減少代碼的繁雜程度,提高代碼利用率。
  • 用super也很直觀,主要還是復制粘貼這種做法太累贅了,代碼肯定還是要精簡易懂一些。

3. Object類中的toString與equals

3.1 編寫Fruit類,屬性String name。如果覆蓋其toString()方法,其父類中的toString方法的代碼就沒有了嗎?編寫Fruit的toString()方法,在該方法中要將調用父類的toString方法得到的字符串與自己特有的屬性name拼接起來,怎么編寫?(使用代碼展示)

答:父類的方法不會沒有
編寫代碼如下圖:

拼接只要把類中的語句return super.toString();加上+name就可以了

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

比較的三個水果名字分別為A、A、B
equals的代碼和比較的輸出結果如下圖:

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

提示:直接使用ArrayList的contains方法實現判斷對象是否存在。
代碼如圖:

contains用到了equals()的方法來進行比較。

4. 實驗總結:

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

JVM會根據實際對象類型來調用相應的代碼,比如getArea(),針對父類寫了getArea(),對其子類同樣適用的同時,JVM會根據實際對象類型來調用相應的子類的getArea(),這樣代碼更系統,更加清晰更好理解,而且體現了多態在繼承的基礎上的作用。

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

重寫equals方法的要求:
1、自反性:對於任何非空引用x,x.equals(x)應該返回true。
2、對稱性:對於任何引用x和y,如果x.equals(y)返回true,那么y.equals(x)也應該返回true。
3、傳遞性:對於任何引用x、y和z,如果x.equals(y)返回true,y.equals(z)返回true,那么x.equals(z)也應該返回true。
4、一致性:如果x和y引用的對象沒有發生變化,那么反復調用x.equals(y)應該返回同樣的結果。
5、非空性:對於任意非空引用x,x.equals(null)應該返回false。

總結:此題主要是定義PersonOverride類並覆蓋其toStringequals方法
首先創造PersonOverride類,並按題目要求寫出有參構造函數、無參構造函數
然后就是寫toString()equals
其余部分就是main了按照題目的給的
題目給的main的要求已經很詳細了,就不贅述了,按照要求一步一步寫就好了
一定認真看清題目,最后的要使用System.out.println(Arrays.toString(PersonOverride.class.getConstructors()));輸出所有函數。

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

6-1 提交一直出錯,沒有完成。
6-2 根據題目要求一步一步創建及輸出

輸入整數n,創建n個對象,放入同一個數組中。
如果輸入c,則new Computer(); //注意:Computer是系統中已有的類,無需自己編寫
如果輸入d,則根據隨后的輸入創建Double類型對象。
如果輸入i,則根據隨后的輸入創建Integer類型對象。...........等

6-3 主要還是equals的重寫,具體上面提及過了,注意五大要求。

三、碼雲及PTA

3.1. 碼雲代碼提交記錄

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

3.2 截圖PTA題集完成情況圖

需要有兩張圖(1. 排名。2.PTA提交列表)

3.3 統計本周完成的代碼量

周次 行數 新增行數 文件數 新增文件數
1 115 115 17 17
2 421 306 24 7
3 698 277 30 6
5 1085 387 38 8


免責聲明!

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



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