1. 本周學習總結
初學面向對象,會學習到很多碎片化的概念與知識。嘗試學會使用思維導圖將這些碎片化的概念、知識點組織起來。請使用工具畫出本周學習到的知識點及知識點之間的聯系。步驟如下:
1.1 寫出你認為本周學習中比較重要的知識點關鍵詞,如類、對象、封裝等
1.2 用思維導圖將這些關鍵詞、關鍵概念組織起來。注意:一般來說不要在導圖中寫太多字。
參考資料:
2. 書面作業
1.以面向對象方式改造數據結構作業“有理數”(重點)
注意:屬性必須為private。
1.1 截圖你主要代碼(需要在程序中出現你的學號和姓名)並粘貼程序的git地址。
1.2 對比你的代碼與歷程的代碼,說明面向對象編程與面向過程編程有何區別?
參考資料:
有理數C語言例程下載
BigDecimal類的代碼,尤其是其中的方法設計。
2. 構造函數與初始化塊
2.1 結合PTA(構造函數與toString)說明構造函數有什么用?其形式有何特征?
2.2 如果一個類不寫構造函數,它有構造函數嗎?如果一個類中只有帶參的構造函數,它有沒有不帶參數的默認構造函數?
2.3 查看String類的源代碼,找出3個看得懂的String類的構造函數,並使用自己的話描述這3個構造函數的區別。
2.4 結合PTA(構造函數與初始化塊)說明初始化塊與構造函數的異同。並說明,初始化塊與構造函數誰先執行?初始化塊與靜態初始化塊有何不同,誰先執行?如果建立過個對象,靜態初始化塊會執行幾次?
3.代碼分析:Math類
3.1 使用java.lang.Math類的方法時,為什么不需要new出一個Math對象,然后調用該對象上相應的方法?
3.2 如果new Math()會產生什么錯誤?嘗試閱讀Math類源代碼,分析原因。
3.3 進一步:你覺得什么樣的對象需要new出來才能用,調用什么方法時不必創建相應對象就可以使用?(重點檢查)
4. 重載Overload
4.1 什么是重載?什么是構造函數重載?怎么才能區分兩個重載的方法?
4.2 在java.lang.Math類中舉出1個方法重載的例子?
5. 代碼閱讀: final
final修飾的變量不能改變,為什么如下代碼卻可正常運行?
final int[] NUMBS= {1,2,3,4,5}; NUMBS[2] = 1;
6. Java8中的時間日期類:編寫函數public static boolean isMondayToFriday()
功能:判斷今天如果是周一到周五,返回true,返回false。main函數中調用該函數,如果為true則輸出“工作日+姓名學號”,否則輸出"休息+姓名學號"。
截圖:關鍵代碼。
提示:使用LocalDateTime, DayOfWeek類
參考資料:
JAVA 8:健壯、易用的時間-日期API - ImportNew.pdf
Java8DateTimeTest.java
7. 封裝
7.1 結合PTA(形狀),請用自己的話簡單總結一下面向對象中封裝是什么意思?有何好處?**
7.2 和封裝有關的關鍵字有哪些?
8. 結對編程實踐(未完成本次作業得0分)
找一個水平相近的同學完成1-2題實驗題。開始編程前,可先對內容進行討論。
寫出體驗報告,包括以下內容:1.對方姓名。2.所完成的題目。3.使用結對這種方法進行編程的感想(非實驗總結)。4.照片(上次很多同學並未貼照片,請貼上)
9. 選做:使用阿里巴巴靜態代碼掃描工具 掃描自己的代碼
9.1 簡述自己代碼中在規范方面出現的問題
9.2 如何解決這些問題
10. 選做:Runnable Jar
我們以前編寫的程序,必須打開Eclipse或者將相應的.class文件拷貝出來在命令行下執行相應命令才能運行,如果.class文件較多且類文件中有包名,需要將完整的目錄結構及文件拷貝出來,才能運行。現在希望將Eclipse項目中的Java文件打成一個可運行的jar包,在命令行直接運行。改造題目6,使其從命令行接收參數,參數為年-月-日,如1999-09-09。最后將項目打成可運行的jar包,然后在命令行通過java -jar 運行,並截圖。參考文件如下:
3. 碼雲及PTA
3.1. 碼雲代碼提交記錄
- 在碼雲的項目中,依次選擇“統計-Commits歷史-設置時間段”, 然后搜索並截圖
3.2 截圖PTA題集完成情況圖
本周完成(構造函數與toString,構造函數與初始化塊,形狀)
需要有兩張圖(1. 排名。2.提交列表)
3.3 統計本周完成的代碼量
需要將每周的代碼統計情況融合到一張表中,可使用最新版的代碼統計工具的-history參數,詳細用法見項目wiki地址。表格如下所示:
| 周次 | 總代碼量 | 新增代碼量 | 總文件數 | 新增文件數 |
|---|---|---|---|---|
| 1 | 200 | 200 | 3 | 3 |
| 2 | 500 | 300 | 7 | 4 |
| 3 | 600 | 100 | 8 | 1 |
參考文件:
其他:
5. 閱讀代碼EmployeeTest.java,回答:
5.1 為什么Employee類的屬性應設置為private?你覺得設置為public好不好,為什么?
5.2 為Employee類增加一個無參構造函數,調用其有參構造函數,設置name為雇員1, salary為3000, hireDay的年月日為2017年3月5日。(粘貼關鍵代碼)
5.2 為Employee類再增加一個有參構造函數,參數只有name與salary,hideDay為當前日期。(粘貼代碼)
