201621123021《JAVA程序设计》第五周学习总结
生活随笔
收集整理的這篇文章主要介紹了
201621123021《JAVA程序设计》第五周学习总结
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
201621123021《JAVA程序設計》第五周學習總結
1. 本周學習總結
1.1 寫出你認為本周學習中比較重要的知識點關鍵詞
- 接口、comparator接口、comparable接口、has-a
1.2 嘗試使用思維導圖將這些關鍵詞組織起來。
?
2. 書面作業
1. 面向對象設計大作業(團隊項目,2-3人)
內容:繼續完善上次的大作業。
1.1 項目簡介表格
| 簡卓林 | Store | git[https://gitee.com/TongCan/ShoppingCart.git] |
| 董明超 | Good、ShoppingCart | git |
1.2 系統常用功能框架圖
1.3 系統總體類圖
?
1.4 購物車、商品、系統關鍵代碼截圖
購物車
import java.math.BigDecimal; import java.math.BigInteger; import java.util.ArrayList;public class ShoppingCart {private ArrayList<Good> goods = new ArrayList<>();public void add(Good good){ //購買商品==將商品放入購物車 goods.add(good);}@Overridepublic String toString() {return "ShoppingCart{" +"goods=" + goods +"}";}public BigDecimal sum(){BigDecimal res = new BigDecimal(0);for (Good good : goods) {res=res.add(good.getPrice());}return res;}public void deleteGood(int index){goods.remove(index-1);}public void deleteGood(Good o){goods.remove(o);} }?
商品
import java.math.BigDecimal;public class Good {private BigDecimal price;private String name;private int number;public Good(BigDecimal price, String name) {this.price = price;this.name = name;}public BigDecimal getPrice() {return price;}public void setPrice(BigDecimal price) {this.price = price;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "Good{" +"price=" + price +", name='" + name + '\'' +"}";}//數量編輯public int getNumber() {return number;}public void setNumber(int number) {this.number = number;} }?
商家
import java.math.BigDecimal;public class Good {private BigDecimal price;private String name;private int number;public Good(BigDecimal price, String name) {this.price = price;this.name = name;}public BigDecimal getPrice() {return price;}public void setPrice(BigDecimal price) {this.price = price;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "Good{" +"price=" + price +", name='" + name + '\'' +"}";}//數量編輯public int getNumber() {return number;}public void setNumber(int number) {this.number = number;} }?
1.5 其他:跟上次的系統比較,系統的設計等有何修改。其他感想。
- 更上一次系統相比本次系統的功能變得更多,更加強大。通過本次大作業我明白了面向對象的重要性。
2. abstract:閱讀GuessGame抽象類的設計與使用源代碼
2.1 Guess改造前代碼很簡單,而改造后的代碼使用了抽象類、抽象方法,看起來更復雜,這樣的改造到底有什么好處呢?
- 使用抽象類、抽象方法能夠使子類更加方便的實現多態。
2.2?GuessGame(改造后).java中有抽象方法與非抽象方法,你覺得抽象類中什么樣的方法應該聲明為abstract,什么方法不需要聲明為abstract直接實現即可。
- 當我們想要一個類實現不同的功能時可以使用抽象類。
- 當我們想要對類實現特定功能時可以不適用抽象類。
2.3 重要:在這個例子中,變化的是什么,不變的是什么?嘗試結合abstract等概念進行說明。
- 變化的是類從非抽象類變成了抽象類。
- 不變的是游戲的猜數字功能并沒有發生改變。
3. Comparable與Comparator
3.1 結合PTA 7-1中你的代碼說明,為什么某個類實現了Comparable接口,就可以直接使用Arrays.sort對該類型的數組進行排序?
public PersonSortable(String name, int age) {super();this.name = name;this.age = age;}?
- 因為Comparable接口中包含著對于數組的創建,所以可以使用Arrays.sort進行排序。
3.2 結合PTA 7-2 中你的代碼說明,有了Comparable接口為什么還需要Comparator接口呢?
- 因為本題需要進行兩種排序方式,一種按照年齡排序,一種按照姓名排序,此時Comparable接口被占用,則還需使用Comparator接口進行比較。
3.3 以前的作業Shape,Rectangle,Cirlce中,Shape類中什么方法應聲明為abstract?說出原因。
- Shape重計算周長的函數getPerimeter()和計算面積的函數getArea()應聲明為abstract,因為面積和周長在不同的圖形中實現功能的方法不一樣。
3.4 有很多Shape類型對象如Rectangle、Circle。希望使用Arrays.sort對他們進行排序,請寫出相應代碼。并簡述應在哪個類上實現Comparable接口比較好?
public int CompareTo(Shape o){if(this.getPerimeter()-o.getPerimeter()<0)return -1;else if(this.getPerimeter()-o.getPerimeter()>0)return 1;elsereturn 0; } Array.Sort(Shape);?
- 應在Shape中實現Comparable接口比較好,應為不管是周長還是面積都是包含在Shape類中。
3.5 以3.4你編寫的代碼為例,簡述面向Comparable接口編程、面向父類編程的好處。
- 面向接口編程和面向父類編程可以提高函數的靈活性,如題3.4中我對于面積、周長的比較程序靈活的選擇比較方法。
4. 面向接口案例分析
4.1 a.畫出類關系圖。b.StudentDao接口有什么用?
?
- b.StudentDao的作用是作為程序的接口,進行讀、寫、輸出功能。
4.2?StudenDaoListImpl與StudentDaoArrayImpl有何共同之處?有何區別?
- 共同之處:都是用來存儲學生信息的類。
- 區別:StudenDaoListImpl通過列表的方式來存儲數據,而StudentDaoArrayImpl通過數組的方式來存儲數據。
4.3 結合Test.java中的main函數,簡述面向接口編程的好處。
- 面向接口編程提高了程序了靈活性,如Test.java中數據的后臺來源可能不一樣,但是卻可以正確使用。
5. 什么是面向接口編程?面向接口編程的好處是什么?
- 面向接口編程即不管后臺數據是怎樣的形式,程序都可以對這些數據進行正確的處理,如題目中Test.java,我們有兩個數據后臺一個是List另一個是Array,接口可以對他們進行正確的處理,來實現對學生信息的正確處理。
- 面向接口編程的好處是提高程序運行的廣度,能夠讓數據對象成為一個集合,然后再進行統一處理。
3.碼云及PTA
3.1. 碼云代碼提交記錄
?
3.2 截圖PTA題集完成情況圖
?
3.3 統計本周完成的代碼量
| 1 | 0 | 0 | 0 | 0 |
| 2 | 0 | 0 | 0 | 0 |
| 3 | 0 | 0 | 0 | 0 |
| 4 | 437 | 437 | 7 | 7 |
| 5 | 905 | 468 | 13 | 6 |
轉載于:https://www.cnblogs.com/wenzun/p/7705183.html
總結
以上是生活随笔為你收集整理的201621123021《JAVA程序设计》第五周学习总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql之存储引擎和文件配置
- 下一篇: Angular内提供了一个可以快速建立测