201621123028《Java程序设计》第5周学习总结
作業(yè)05-繼承、多態(tài)、抽象類與接口
1.本周學(xué)習(xí)總結(jié)
1.1寫出你認(rèn)為本周學(xué)習(xí)中比較重要的知識(shí)點(diǎn)關(guān)鍵詞。
關(guān)鍵字:接口,interface關(guān)鍵字,implements關(guān)鍵字,has-a關(guān)系,Comparable,abstract。
1.2嘗試使用思維導(dǎo)圖將這些關(guān)鍵詞組織起來。注:思維導(dǎo)圖一般不需要出現(xiàn)過多的字。
1.3 可選:使用常規(guī)方法總結(jié)其他上課內(nèi)容。
2. 書面作業(yè)
PTA題集:面向?qū)ο?-進(jìn)階-多態(tài)、接口與內(nèi)部類
1. 面向?qū)ο笤O(shè)計(jì)大作業(yè)(團(tuán)隊(duì)項(xiàng)目,2-3人)
內(nèi)容:繼續(xù)完善上次的大作業(yè)。
注意:再過幾次課要講Java圖形界面編程,到時(shí)候要將該系統(tǒng)升級(jí)為圖形界面。系統(tǒng)的業(yè)務(wù)邏輯部分應(yīng)該變化不大,變化較大的地方的是輸入與輸出部分。編碼的時(shí)候,請(qǐng)不要將處理輸入(System.in)與輸出(System.out)的代碼與某個(gè)業(yè)務(wù)處理方法綁死。
作業(yè)提交結(jié)構(gòu)如下:
1.1 項(xiàng)目簡(jiǎn)介表格:
項(xiàng)目碼云地址(點(diǎn)擊后要求可直接跳到該項(xiàng)目首頁)。
團(tuán)隊(duì)成員表格
| 鄭玉波 | User類,ShoppingCart類 | 鄭玉波的碼云地址 |
| 占恒 | Commodity類,WalMart類 | 占恒的碼云地址 |
1.2 系統(tǒng)常用功能框架圖
提示:在XMind文本方框中,可通過按Shift+Enter將字豎起來。
1.3 系統(tǒng)總體類圖
1.4 購物車、商品、系統(tǒng)關(guān)鍵代碼截圖(主要截取自己負(fù)責(zé)的部分)
因?yàn)檫€沒有學(xué)到使用文件,所以現(xiàn)在的登錄與注冊(cè)只有大體框架。
1.5 其他:跟上次的系統(tǒng)比較,系統(tǒng)的設(shè)計(jì)等有何修改。其他感想。
和上次有所不同,在建議下將登錄和注冊(cè)作為方法而不是類,且放在了WalMart類中。
2. abstract:閱讀GuessGame抽象類的設(shè)計(jì)與使用源代碼
Guess改造前代碼很簡(jiǎn)單,而改造后的代碼使用了抽象類、抽象方法,看起來更復(fù)雜,這樣的改造到底有什么好處呢?
改造之前:
改造之后:
??這樣子改造將所要輸入和輸出的數(shù)字抽象化,這樣子就可以不僅僅在控制臺(tái)進(jìn)行這個(gè)猜字游戲,如果想在圖形界面等其他地方實(shí)現(xiàn)這個(gè)游戲就會(huì)非常方便,這個(gè)程序就非常靈活了。
2.2 GuessGame(改造后).java中有抽象方法與非抽象方法,你覺得抽象類中什么樣的方法應(yīng)該聲明為abstract,什么方法不需要聲明為abstract直接實(shí)現(xiàn)即可。
??顯然輸入輸出這個(gè)方法需要聲明為abstract,方便在不同環(huán)境下實(shí)現(xiàn)。而將所輸入的數(shù)字與隨機(jī)數(shù)字進(jìn)行比較可以不用聲明為抽象方法,因?yàn)椴还茉谑裁喘h(huán)境下這個(gè)方法都是一樣的。
2.3 重要:在這個(gè)例子中,變化的是什么,不變的是什么?嘗試結(jié)合abstract等概念進(jìn)行說明。
??很顯然,運(yùn)行環(huán)境是變化的,在文本下,在控制臺(tái)上或者在圖形界面等等,但是這些方法是不變的,都是輸入輸出,比較數(shù)字的函數(shù)也是相同的。雖然輸入輸出的方法是抽象的,但是當(dāng)出現(xiàn)了某個(gè)類用來告訴我們實(shí)現(xiàn)的環(huán)境是在哪里時(shí),這幾個(gè)方法也變得具體了。正如三生萬象,一個(gè)抽象最后會(huì)變成很多種的實(shí)現(xiàn)。當(dāng)抽象的方法被用到了,就實(shí)現(xiàn)了繼承的思想。
3. Comparable與Comparator
3.1 結(jié)合PTA 7-1中你的代碼說明,為什么某個(gè)類實(shí)現(xiàn)了Comparable接口,就可以直接使用Arrays.sort對(duì)該類型的數(shù)組進(jìn)行排序?
??總所周知,Arrays類中的sort方法是可以對(duì)對(duì)象數(shù)組進(jìn)行排序的,但是這是有前提的,就是所傳入的對(duì)象必須實(shí)現(xiàn)了接口Comparable(java.lang),而且還要覆蓋compareTo這個(gè)方法。
3.2 結(jié)合PTA 7-2 中你的代碼說明,有了Comparable接口為什么還需要Comparator接口呢?
??因?yàn)橛玫搅薃rrays.sort進(jìn)行排序,而它是對(duì)所有實(shí)現(xiàn)Comparable的對(duì)象進(jìn)行排序。如果這個(gè)時(shí)候相對(duì)某一個(gè)對(duì)象進(jìn)行排序,那僅僅的Comparable是不行的,這時(shí)Comparator出場(chǎng)了,它和Comparable不一樣的是,Comparator接口是在一個(gè)獨(dú)立的類中進(jìn)行比較的,而且它可以指定排序的順序。
3.3 以前的作業(yè)Shape, Rectangle,Cirlce中,Shape類中什么方法應(yīng)聲明為abstract?說出原因。
方法1abstract double getArea();和abstract double getPerimeter();聲明為抽象方法,因?yàn)閷?duì)于抽象類Shape,可以是很多不同的圖形,但是他們的面積和周長(zhǎng)的求法不一樣,所以要定義為抽象的。
3.4 有很多Shape類型對(duì)象如Rectangle、Circle。希望使用Arrays.sort對(duì)他們進(jìn)行排序,請(qǐng)寫出相應(yīng)代碼。并簡(jiǎn)述應(yīng)在哪個(gè)類上實(shí)現(xiàn)Comparable接口比較好?
應(yīng)在Shape類類里實(shí)現(xiàn)接口比較好。
3.5 以3.4你編寫的代碼為例,簡(jiǎn)述面向Comparable接口編程、面向父類編程的好處。(注意:一定要結(jié)合自己編寫的代碼)
我在Shape類中實(shí)現(xiàn)接口,那么在Rectangle類、Circle類中就能實(shí)現(xiàn)Comparable,這樣最后可以直接對(duì)Shape使用Array.sort進(jìn)行排序,增加了許多靈活性。
4. 面向接口案例分析
4.1 a.畫出類關(guān)系圖。b.StudentDao接口有什么用?
a.
b.StudentDao接口建立了三個(gè)方法,判斷學(xué)生信息寫入是否成功,讀取學(xué)生的信息和展示全部學(xué)生信息。
4.2 StudenDaoListImpl與StudentDaoArrayImpl有何共同之處?有何區(qū)別?
公共點(diǎn)是都是實(shí)現(xiàn)對(duì)學(xué)生信息的寫入等,不同點(diǎn)是StudenDaoListImpl是使用了ArrayList來動(dòng)態(tài)實(shí)現(xiàn)的,但是StudentDaoArrayImpl是用數(shù)組來實(shí)現(xiàn)的。
4.3 結(jié)合Test.java中的main函數(shù),簡(jiǎn)述面向接口編程的好處。
好處:
1.更加抽象,更加面向?qū)ο?br /> 2.提高編程的靈活性
3.實(shí)現(xiàn)高內(nèi)聚、低耦合,提高可維護(hù)性,降低系統(tǒng)維護(hù)成本。
這個(gè)代碼是來存放學(xué)生的信息的,在Test的類里面我們可以不用知道如何實(shí)現(xiàn)的,StudenDaoListImpl與StudentDaoArrayImpl兩種不同的結(jié)構(gòu)都能實(shí)現(xiàn)寫入并讀取學(xué)生的信息,方便了許多,更加的結(jié)構(gòu)化并提高了編程的效率。
5. 什么是面向接口編程?面向接口編程的好處是什么?
結(jié)合題目4案例中的Test.java的代碼進(jìn)行分析。不要百度原封不動(dòng)照搬!
面向接口的編程方式是面向?qū)ο笤O(shè)計(jì)的一個(gè)原則,使用這種編程思想,我們可以容易地寫出具有可復(fù)用性的代碼,這對(duì)于代碼的理解和維護(hù)具有很大的幫助
都知道接口不允許實(shí)例化,也就是說面向接口的編程和面向?qū)崿F(xiàn)編程不一樣,比如對(duì)于汽車所用的輪胎,拿面向?qū)崿F(xiàn)說,可能就要考慮輪胎的品牌,性能等,會(huì)降低編程的靈活和可復(fù)用的性能。但是面向接口編程不在乎輪胎的品牌,能轉(zhuǎn)動(dòng)就行。這樣就大大增強(qiáng)靈活性和可復(fù)用性。
3.碼云及PTA
題目集:面向?qū)ο?-進(jìn)階-多態(tài)接口內(nèi)部類
3.1. 碼云代碼提交記錄
- 在碼云的項(xiàng)目中,依次選擇“統(tǒng)計(jì)-Commits歷史-設(shè)置時(shí)間段”, 然后搜索并截圖
3.2 截圖PTA題集完成情況圖
需要有兩張圖(1. 排名圖。2.PTA提交列表圖)
3.3 統(tǒng)計(jì)本周完成的代碼量
需要將每周的代碼統(tǒng)計(jì)情況融合到一張表中。
| 1 | 191 | 191 | 18 | 18 |
| 2 | 571 | 380 | 19 | 1 |
| 3 | 1027 | 456 | 20 | 1 |
| 4 | 0 | 0 | 0 | 0 |
| 5 | 1359 | 332 | 25 | 5 |
| 6 | 2061 | 702 | 35 | 10 |
轉(zhuǎn)載于:https://www.cnblogs.com/bbshenme/p/7701799.html
總結(jié)
以上是生活随笔為你收集整理的201621123028《Java程序设计》第5周学习总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 我的Linux系统入坑之路!!!!
- 下一篇: React Native 模仿网易云音乐