做業05-繼承、多態、抽象類與接口

1. 本週學習總結

1.1 寫出你認爲本週學習中比較重要的知識點關鍵詞
接口 Comparable Comparator 比較排序
1.2 嘗試使用思惟導圖將這些關鍵詞組織起來。注:思惟導圖通常不須要出現過多的字。
java

2. 書面做業

做業參考文件下載
PTA題集:面向對象2-進階-多態、接口與內部類
1. 面向對象設計大做業(團隊項目,2-3人)
內容:繼續完善上次的大做業。
注意: 再過幾回課要講Java圖形界面編程,到時候要將該系統升級爲圖形界面。系統的業務邏輯部分應該變化不大,變化較大的地方的是輸入與輸出部分。編碼的時候,請不要將處理輸入(System.in)與輸出(System.out)的代碼與某個業務處理方法綁死。
參考資料:
使用Processon畫圖
做業提交結構以下:
1.1 項目簡介表格:
編程

我主要負責 用戶和註冊方面;個人隊友還沒完成。數組

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

2.1 Guess改造前代碼很簡單,而改造後的代碼使用了抽象類、抽象方法,看起來更復雜,這樣的改造到底有什麼好處呢?
改造前,未使用抽象類,只能由控制檯輸出;
改造後,使用抽象類,不只能夠在控制檯輸出也可使用對話框圖形界面輸入輸出。
2.2 GuessGame(改造後).java中有抽象方法與非抽象方法,你以爲抽象類中什麼樣的方法應該聲明爲abstract,什麼方法不須要聲明爲abstract直接實現便可。
定義抽象父類中未實現的方法時須要用到abstract,在不一樣子類中用不一樣的代碼實現方體,使不一樣的子類具備同方法不一樣功能。具備方法不須要聲明爲abstract。
2.3 重要:在這個例子中,變化的是什麼,不變的是什麼?嘗試結合abstract等概念進行說明。
不變的是聲明的方法,變化的是抽象類GuessGame中聲明方法的實現形式函數

3. Comparable與Comparator

3.1 結合PTA 7-1中你的代碼說明,爲何某個類實現了Comparable接口,就能夠直接使用Arrays.sort對該類型的數組進行排序?
由於Comparable其接口中僅包含 Comparable方法。而在Arrays.sort中也用到了Comparable,。學習

3.2 結合PTA 7-2 中你的代碼說明,有了Comparable接口爲何還須要Comparator接口呢?
一個類一旦實現comparable,則比較的方式就固定下來了,比較形式單一;那本題須要對Name、Age都進行比較升序排序,此時Comparable就不適用就須要使用Comparator接口。
編碼

3.3 之前的做業Shape, Rectangle,Cirlce中,Shape類中什麼方法應聲明爲abstract?說出緣由。
例如計算圓和矩形的周長面積,由於圓和矩形的面積周長計算方法不一樣,因此應聲明爲abstract。
用abstract修飾的方法表示抽象方法,抽象方法沒有方法體。抽象方法用來描述系統具備什麼功能,但不提供具體的實現。
3.4 有不少Shape類型對象如Rectangle、Circle。但願使用Arrays.sort對他們進行排序,請寫出相應代碼。並簡述應在哪一個類上實現Comparable接口比較好?
Shape類實現Comparable比較好,由於圓和矩形都是屬於Shape類的,在其基礎上實現覆蓋重構,實現各自的方法

設計

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

面向Comparable接口編程的好處在於不用再去定義本身的特定的比較排序方法,Comparable接口就很好的幫助咱們實現比較排序的方法(經過CompareTo()進行比較、藉助Arrays.sort()實現排序)
面向父類編程的好處在於只需對父類進行相應的方法處理,好比3.4題咱們要對矩形與圓的周長和麪積進行比較排序,咱們對父類Shape進行操做,相應的須要對圓/矩形的周長/面積進行排序就經過繼承能夠實現,減小代碼的冗餘對象

4. 面向接口案例分析

閱讀Case-StudentDao.zip案例
4.1 a.畫出類關係圖。b.StudentDao接口有什麼用?
a:
b:以使調用接口的兩個類在各自類中定義本身的具體接口方法,方便不一樣的實現功能。blog

4.2 StudenDaoListImpl與StudentDaoArrayImpl有何共同之處?有何區別?
共同之處:二者均可以用來存儲學生信息,而且都聲明瞭StudentDao接口。
區別:StudenDaoListImpl使用ArrayList存儲學生信息,而StudentDaoArrayImpl是使用數組存儲學生信息。
4.3 結合Test.java中的main函數,簡述面向接口編程的好處。
接口隱藏了實際功能,但給用戶提供統一的操做界面和使用方式。在這題的代碼中sdm.diplayAllStudent();接口就是這樣,咱們不用去了解它的運行原理,只要調用他實現功能就能夠了。面向接口編程大大的簡化了代碼。

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

面向接口編程指的是系統每部分的實現和實現之間,經過interface所肯定的協議來共同工做。不一樣類之間的通訊,各模塊之間的聯通,在系統設計都是要考慮的,這也是系統設計的最主要工做內容。面向接口編程就是指按照這種思想來編程。在這題的代碼中sdm.diplayAllStudent();接口就是這樣,咱們不用去了解它是如何運行的,只要調用他實現功能就能夠了。面向接口編程大大的簡化了代碼,子類只能繼承一個父類卻能夠繼承多個接口,功能區分清晰,改起來方便。
結合題目4案例中的Test.java的代碼進行分析。不要百度原封不動照搬!

在碼雲的項目中,依次選擇「統計-Commits歷史-設置時間段」, 而後搜索並截圖
3.2 截圖PTA題集完成狀況圖

3.3 統計本週完成的代碼量

周次 總代碼量 新增代碼量 總文件數 新增文件數
1 183 183 9 9
2 498 315 15 6
3 718 220 26 11
4 921 203 31 5
相關文章
相關標籤/搜索