作业05-继承、多态、抽象类与接口
1. 本周學(xué)習(xí)總結(jié)
1.1 寫出你認(rèn)為本周學(xué)習(xí)中比較重要的知識點(diǎn)關(guān)鍵詞
接口,Comparable,Comparator
1.2 嘗試使用思維導(dǎo)圖將這些關(guān)鍵詞組織起來。
1.3 可選:使用常規(guī)方法總結(jié)其他上課內(nèi)容。
1.接口特點(diǎn):一個公開的界面
有統(tǒng)一定義的規(guī)范
2.面向接口編程就是面向共同行為編程,體現(xiàn)了多態(tài)性
3.Comparator比較器
2. 書面作業(yè)
1. 面向?qū)ο笤O(shè)計(jì)大作業(yè)
1.1 項(xiàng)目簡介表格:
| 學(xué)生 | 負(fù)責(zé)任務(wù) | 博客地址 |
|---|---|---|
| 孫江濤 | 用戶登錄類 | git地址 |
| 吳俊杰 | 購物車類 | git地址 |
1.2 系統(tǒng)常用功能框架圖
1.3 系統(tǒng)總體類圖
1.4 購物車、商品、系統(tǒng)關(guān)鍵代碼截圖
1.5 其他:跟上次的系統(tǒng)比較,系統(tǒng)的設(shè)計(jì)等有何修改。其他感想。
上周只給出了幾個函數(shù)的框架,這種豐富了一點(diǎn)具體內(nèi)容
2. abstract:閱讀GuessGame抽象類的設(shè)計(jì)與使用源代碼
2.1 Guess改造前代碼很簡單,而改造后的代碼使用了抽象類、抽象方法,看起來更復(fù)雜,這樣的改造到底有什么好處呢?
答:改造之前輸入輸出與控制臺綁定,而改造后無論想在哪個地方輸入輸出只要繼承抽象類即可
2.2 GuessGame(改造后).java中有抽象方法與非抽象方法,你覺得抽象類中什么樣的方法應(yīng)該聲明為abstract,什么方法不需要聲明為abstract直接實(shí)現(xiàn)即可。
答:類中具有共同行為的可以聲明為abstract,可以直接確定的方法就可以不用聲明為abstract.
2.3 重要:在這個例子中,變化的是什么,不變的是什么?嘗試結(jié)合abstract等概念進(jìn)行說明。
答:變化的是輸入輸出的方式,不變的是它的功能。同樣的功能可以在不同的環(huán)境下實(shí)現(xiàn),只需要繼承相應(yīng)的抽象類即可
3. Comparable與Comparator
3.1 結(jié)合PTA 7-1中你的代碼說明,為什么某個類實(shí)現(xiàn)了Comparable接口,就可以直接使用Arrays.sort對該類型的數(shù)組進(jìn)行排序?
答:因?yàn)镃omparable里包含CompareTo方法,所以有了Comparable接口就可以用Arrays.sort直接進(jìn)行排序
3.2 結(jié)合PTA 7-2 中你的代碼說明,有了Comparable接口為什么還需要Comparator接口呢?
答:因?yàn)镃omparator是比較器,它可以比較不同類型之間的排序,而Comparable不行
3.3 以前的作業(yè)Shape, Rectangle,Cirlce中,Shape類中什么方法應(yīng)聲明為abstract?說出原因。
答:在計(jì)算周長面積的方法應(yīng)該聲明為abstract,因?yàn)椴煌螤钣?jì)算的公式方法是不一樣的。而定義時不知道它具體的形狀,所以要聲明為抽象類
3.4 有很多Shape類型對象如Rectangle、Circle。希望使用Arrays.sort對他們進(jìn)行排序,請寫出相應(yīng)代碼。并簡述應(yīng)在哪個類上實(shí)現(xiàn)Comparable接口比較好?
Shape類上實(shí)現(xiàn)Comparable接口比較好,這樣它的所以子類對象都可以繼承它的代碼進(jìn)行面積排序
3.5 以3.4你編寫的代碼為例,簡述面向Comparable接口編程、面向父類編程的好處。
子類繼承者可以直接在父類代碼中修改在面向Comparable接口編程和面向父類編程中,比如在代碼中需要重寫compareTo()方法,只需要重寫父類Shape的抽象方法,不需要添加Comparable接口,然后直接調(diào)用用Arrays.sort()排序即可。
4. 面向接口案例分析
4.1 a.畫出類關(guān)系圖。b.StudentDao接口有什么用?
StudentDao定義了三種方法:顯示學(xué)生信息,讀取學(xué)生信息,寫入學(xué)生信息。這樣后期可以很方便的調(diào)用使用
4.2 StudenDaoListImpl與StudentDaoArrayImpl有何共同之處?有何區(qū)別?
答:它們都繼承StudentDao接口和StudentDao的方法,區(qū)別是實(shí)現(xiàn)是的具體方法不一樣
4.3 結(jié)合Test.java中的main函數(shù),簡述面向接口編程的好處。
答:從main函數(shù)可以看出,使用接口后直接用StudentDao調(diào)用學(xué)生性息,不需要去關(guān)心內(nèi)部其他函數(shù)的形式作用
5. 什么是面向接口編程?面向接口編程的好處是什么?
答:面向接口編程就是將定義和實(shí)現(xiàn)分離開。面向接口編程的最大好處就是在不確定操作環(huán)境的情況下,可以先在接口定義抽象方法,然后按具體情況去繼承抽象方法
3.碼云及PTA
3.1. 碼云代碼提交記錄
3.2 截圖PTA題集完成情況圖
3.3 統(tǒng)計(jì)本周完成的代碼量
| 行數(shù) | 新增行數(shù) | 文件數(shù) | 新增文件數(shù) |
|---|---|---|---|
| 1097 | 242 | 304 | 15 |
轉(zhuǎn)載于:https://www.cnblogs.com/jmu201621123074/p/7704959.html
總結(jié)
以上是生活随笔為你收集整理的作业05-继承、多态、抽象类与接口的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安装wxpython——python程序
- 下一篇: R语言实战 - 基本统计分析(2)- 频