關鍵字:接口、繼承、多態、interface。
老師這周主要講的是接口以及接口的一些特色,Interface關鍵字,has-a相較於繼承的is-a,接口實現的是has-a的關係,接口所抽象出來的是共同的行爲。具體介紹了comparator接口的方法。 ArrayList()實現的是Comparable接口對對象的排序。
內容:繼續完善上次的大做業。
注意: 再過幾回課要講Java圖形界面編程,到時候要將該系統升級爲圖形界面。系統的業務邏輯部分應該變化不大,變化較大的地方的是輸入與輸出部分。編碼的時候,請不要將處理輸入(System.in)與輸出(System.out)的代碼與某個業務處理方法綁死。
參考資料:html
使用Processon畫圖
做業提交結構以下:java
項目碼雲地址(點擊後要求可直接跳到該項目首頁)。
This is git
團隊成員表格git
學生 | 負責任務 | 博客地址 |
---|---|---|
羅志凱 | 用戶類的編寫 | 博客地址 |
林裕恆 | 註冊類的編寫 | 博客地址 |
此次代碼與上次比較,主要是添加了一個菜單頁面,還有就是輸入輸出並非綁定在某一個類上,使代碼更加靈活。其餘就是本身的知識儲備仍是不夠的,我會繼續增強。
改造前:
改造後:
編程
用抽象類的方法實現輸入輸出,使得程序更加靈活,不須要綁定在某一個類上。數組
只要對於一些類中具備共同行爲,能夠將其定義爲抽象類。然而對於不一樣子類中特定的方法,具體方法的實現就不須要定義爲抽象類。
這個遊戲中變化的是輸入輸出的實現上,使用抽象類的方法增長了程序的靈活性;不變的是遊戲的執行功能——猜數字。
查看`Arrays.sort`的源代碼能夠知道,這個方法能夠實現對對象數組進行各類排序,其實現方法就是依賴於`compareTo`方法。
實現了Comparable接口,這是一個內比較器,我以爲它有點像C++的操做符重載,在類內部定義了一種比較方式。而Comparator接口就和C++(畢竟常常sort(v.begin, v.end(), cmp);)的差很少 了,參數是兩個對象,而後對於不一樣的結果返回正數、0和負數。這樣的話,即便要排序的對象沒有實現Comparable接口或者它的排序方式我不滿意,我均可以本身使用本身的比較方法。並且還 能夠定義不少的排序方法,降序、升序、隨便什麼序……
像計算矩形、圓形、圓柱等的周長以及面積應該聲明爲abstract;由於每一個的計算方法極近類似,雖然具體實現細節不一樣,可是具體的功能差很少。
shape實現的抽象類更好。數據結構
面向對象以及面向父類可以使得程序看上去更加精簡,另一方面也可使得整個程序更加靈活。
StudentDao接口總共有三個抽象類方法,分別是寫入學生數據、讀取學生數據和顯示學生信息。經過boolean變量能夠判斷是否對學生數據寫入成功。
二者實現的數據結構並不相同,StudenDaoListImpl使用的是ArrayList函數來實現的,然而StudentDaoArrayImpl所使用的是數組來實現的,可是二者仍是沒有太大的差異,由於ArrayList的本 質仍是經過數組來實現的。
第一個就是相似咱們前面講繼承時提到的多態,多個子類去繼承一個父類,而後能夠由父類統一調用某些方法,而在運行時的時候根據具體對象的類型來調用不一樣的方法,也就是用接口來實 現多態; 第二個就是合理的利用接口可以使得程序變得更加靈活,更加精簡,更加針對對象; 第三提升了系統的靈活性。
以上兩道題目感受基本上差很少,就放到一塊兒說了吧。 接口從更深層次的方面來理解,應是定義與實現的分離。接口自己反映了系統設計人員對系統的抽象理解。接口應有兩類:第一類是對總體的抽象,它可對應爲一個抽象體;第二類是對某一 方面的抽象,即造成一個抽象面; 那麼面向接口既然這麼好,其有什麼好處呢。接下來就講一下面向接口的好處:第一個就是相似咱們前面講繼承時提到的多態,多個子類去繼承一個父類,而後能夠由父類統一調用某些方 法,而在運行時的時候根據具體對象的類型來調用不一樣的方法,也就是用接口來實現多態;第二個就是合理的利用接口可以使得程序變得更加靈活,更加精簡,更加針對對象;第三提升了系 統的靈活性。
附上參考連接框架
在碼雲的項目中,依次選擇「統計-Commits歷史-設置時間段」, 而後搜索並截圖
函數
周次 | 總代碼量 | 新增代碼量 | 總文件數 | 新增文件數 |
---|---|---|---|---|
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 |