201621123058《java程序設計》第五週學習總結

1. 本週學習總結

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

關鍵字:接口、繼承、多態、interface。

1.2 嘗試使用思惟導圖將這些關鍵詞組織起來。注:思惟導圖通常不須要出現過多的字。

1.3 可選:使用常規方法總結其餘上課內容。

老師這周主要講的是接口以及接口的一些特色,Interface關鍵字,has-a相較於繼承的is-a,接口實現的是has-a的關係,接口所抽象出來的是共同的行爲。具體介紹了comparator接口的方法。

            ArrayList()實現的是Comparable接口對對象的排序。

2. 書面做業

2.1. 面向對象設計大做業(團隊項目,2-3人)

內容:繼續完善上次的大做業。
注意: 再過幾回課要講Java圖形界面編程,到時候要將該系統升級爲圖形界面。系統的業務邏輯部分應該變化不大,變化較大的地方的是輸入與輸出部分。編碼的時候,請不要將處理輸入(System.in)與輸出(System.out)的代碼與某個業務處理方法綁死。
參考資料:html

使用Processon畫圖
做業提交結構以下:java

2.1.1 項目簡介表格:

項目碼雲地址(點擊後要求可直接跳到該項目首頁)。
This is git
團隊成員表格git

學生 負責任務 博客地址
羅志凱 用戶類的編寫 博客地址
林裕恆 註冊類的編寫 博客地址

2.1.2 系統經常使用功能框架圖

2.1.3 系統整體類圖

2.1.4 購物車、商品、系統關鍵代碼截圖(主要截取本身負責的部分)



2.1.5 其餘:跟上次的系統比較,系統的設計等有何修改。其餘感想。

此次代碼與上次比較,主要是添加了一個菜單頁面,還有就是輸入輸出並非綁定在某一個類上,使代碼更加靈活。其餘就是本身的知識儲備仍是不夠的,我會繼續增強。

2.2. abstract:閱讀GuessGame抽象類的設計與使用源代碼

2.2.1 Guess改造前代碼很簡單,而改造後的代碼使用了抽象類、抽象方法,看起來更復雜,這樣的改造到底有什麼好處呢?

改造前:

改造後:
編程

用抽象類的方法實現輸入輸出,使得程序更加靈活,不須要綁定在某一個類上。數組

2.2.2 GuessGame(改造後).java中有抽象方法與非抽象方法,你以爲抽象類中什麼樣的方法應該聲明爲abstract,什麼方法不須要聲明爲abstract直接實現便可。

只要對於一些類中具備共同行爲,能夠將其定義爲抽象類。然而對於不一樣子類中特定的方法,具體方法的實現就不須要定義爲抽象類。

2.2.3 重要:在這個例子中,變化的是什麼,不變的是什麼?嘗試結合abstract等概念進行說明。

這個遊戲中變化的是輸入輸出的實現上,使用抽象類的方法增長了程序的靈活性;不變的是遊戲的執行功能——猜數字。

2.3. Comparable與Comparator

2.3.1 結合PTA 7-1中你的代碼說明,爲何某個類實現了Comparable接口,就能夠直接使用Arrays.sort對該類型的數組進行排序?

查看`Arrays.sort`的源代碼能夠知道,這個方法能夠實現對對象數組進行各類排序,其實現方法就是依賴於`compareTo`方法。

2.3.2 結合PTA 7-2 中你的代碼說明,有了Comparable接口爲何還須要Comparator接口呢?

實現了Comparable接口,這是一個內比較器,我以爲它有點像C++的操做符重載,在類內部定義了一種比較方式。而Comparator接口就和C++(畢竟常常sort(v.begin, v.end(), cmp);)的差很少

          了,參數是兩個對象,而後對於不一樣的結果返回正數、0和負數。這樣的話,即便要排序的對象沒有實現Comparable接口或者它的排序方式我不滿意,我均可以本身使用本身的比較方法。並且還

          能夠定義不少的排序方法,降序、升序、隨便什麼序……

2.3.3 之前的做業Shape, Rectangle,Cirlce中,Shape類中什麼方法應聲明爲abstract?說出緣由。

像計算矩形、圓形、圓柱等的周長以及面積應該聲明爲abstract;由於每一個的計算方法極近類似,雖然具體實現細節不一樣,可是具體的功能差很少。

2.3.4 有不少Shape類型對象如Rectangle、Circle。但願使用Arrays.sort對他們進行排序,請寫出相應代碼。並簡述應在哪一個類上實現Comparable接口比較好




shape實現的抽象類更好。數據結構

2.3.5 以3.4你編寫的代碼爲例,簡述面向Comparable接口編程、面向父類編程的好處。(注意:必定要結合本身編寫的代碼)

面向對象以及面向父類可以使得程序看上去更加精簡,另一方面也可使得整個程序更加靈活。

2.4. 面向接口案例分析

2.4.1 a.畫出類關係圖。b.StudentDao接口有什麼用?

StudentDao接口總共有三個抽象類方法,分別是寫入學生數據、讀取學生數據和顯示學生信息。經過boolean變量能夠判斷是否對學生數據寫入成功。

2.4.2 StudenDaoListImpl與StudentDaoArrayImpl有何共同之處?有何區別?

二者實現的數據結構並不相同,StudenDaoListImpl使用的是ArrayList函數來實現的,然而StudentDaoArrayImpl所使用的是數組來實現的,可是二者仍是沒有太大的差異,由於ArrayList的本

                 質仍是經過數組來實現的。

2.4.3 結合Test.java中的main函數,簡述面向接口編程的好處。

第一個就是相似咱們前面講繼承時提到的多態,多個子類去繼承一個父類,而後能夠由父類統一調用某些方法,而在運行時的時候根據具體對象的類型來調用不一樣的方法,也就是用接口來實

                現多態;
            
                第二個就是合理的利用接口可以使得程序變得更加靈活,更加精簡,更加針對對象;

                第三提升了系統的靈活性。

2.5. 什麼是面向接口編程?面向接口編程的好處是什麼?

以上兩道題目感受基本上差很少,就放到一塊兒說了吧。

                接口從更深層次的方面來理解,應是定義與實現的分離。接口自己反映了系統設計人員對系統的抽象理解。接口應有兩類:第一類是對總體的抽象,它可對應爲一個抽象體;第二類是對某一

                方面的抽象,即造成一個抽象面;

                那麼面向接口既然這麼好,其有什麼好處呢。接下來就講一下面向接口的好處:第一個就是相似咱們前面講繼承時提到的多態,多個子類去繼承一個父類,而後能夠由父類統一調用某些方

                法,而在運行時的時候根據具體對象的類型來調用不一樣的方法,也就是用接口來實現多態;第二個就是合理的利用接口可以使得程序變得更加靈活,更加精簡,更加針對對象;第三提升了系

                統的靈活性。

 
附上參考連接框架

3.碼雲及PTA

3.1. 碼雲代碼提交記錄

在碼雲的項目中,依次選擇「統計-Commits歷史-設置時間段」, 而後搜索並截圖
函數

3.2 截圖PTA題集完成狀況圖


3.3 統計本週完成的代碼量

周次 總代碼量 新增代碼量 總文件數 新增文件數
1 0 0 0 0
2 0 0 0 0
3 0 0 0 0
4 0 0 0 0
5 697 697 16 16
6 1288 591 22 6
相關文章
相關標籤/搜索