201521123017 《Java程序設計》第4周學習總結

1. 本周學習總結

1109821-20170316205140760-232416103.png



2. 書面作業

Q1.注釋的應用
使用類的注釋與方法的注釋為前面編寫的類與方法進行注釋,并在Eclipse中查看。(截圖)

?
1109821-20170316205932698-1617455004.png


Q2.面向對象設計(大作業1,非常重要)
2.1 將在網上商城購物或者在班級博客進行學習這一過程,描述成一個故事。(不得少于50字,參考QQ群中PPT的范例)
2.2 通過這個故事我們能發現誰在用這個系統,系統中包含的類及其屬性方法,類與類之間的關系。嘗試找到這些類與屬性,并使用思維導圖描述類、屬性、方法及類與類之間的關系。
2.3 嘗試使用Java代碼實現故事中描述的這一過程(不必很完善),將來要在這個基礎上逐漸完善、擴展成一個完整的面向對象的系統。(可選:加分)

?
(2.1)網上商城購物:買家首先輸入所要的商品,在Shopping類在中,找到商品這個屬性中(用Commodity類定義的商品屬性,包含商品的名稱,價格,商品的大小及商品的所在地址),賣家觀看此商品的介紹,若為所需物品,則加入購物車,用到Shopping類中的shopcar屬性(Shopcar類定義,包含所加入的商品的單價,購買的個數及存放商品的地址),在購物車中查看訂單情況,若發現不需要,可以刪去訂單,計算總共的話費時,在Shopping類的total方法中計算,各類商品的單價*個數總和,返回該值顯示給買家看,買家付相等金額后完成購物過程
?
(2.2)

1109821-20170317111333026-1728047332.png



Q3.ManagerTest.zip代碼分析
分析ManagerTest.zip中的代碼,回答幾個問題:
3.1 在本例中哪里體現了使用繼承實現代碼復用?回答時要具體到哪個方法、哪個屬性。
3.2 Employee類及其子類Manager都有getSalary方法,那怎么區分這兩個方法呢?
3.3 文件第26行e.getSalary(),到底是調用Manager類的getSalary方法還是Employee類的getSalary方法。
3.4 Manager類的構造函數使用super調用父類的構造函數實現了代碼復用,你覺得這樣的有什么好處?為什么不把父類構造函數中的相關代碼復制粘貼到Manager的構造函數中,這樣看起來不是更直觀嗎?

?
(3.1)class Manager extends Employee()類,Manager繼承Employee;Manager屬性比Employee多了bonus,private double bonus;定義構造函數時public Manager(String n, double s, int year, int month, int day),由于Manager的全部屬性除bonus以外其他都一樣,故可以繼承父類的構造函數來賦值,用super(),但要放在構造函數第一行才行;在調用函數時,Manager類中方法,public double getSalary(),覆蓋Employee的方法getSalary(),Manager類中getSalary()中還有加入bonus
?
(3.2)主要區別是有無bonus,有bonus則是Manager類中的方法getSalary(),無則是Employee類的方法getSalary()
?
(3.3)調用Employee類的getSalary方法,定義boss時,boss.setBonus(5000)已經將bonus帶入getSalary()中計算,再將boss賦給staff[0],得到的獎金已是用Manager類的getSalary方法計算過的,調用時的是Employee類的getSalary方法
?
(3.4)可以省略與父類中相同的屬性的構造函數的編寫,節約成本,簡潔代碼;復制過去雖然直觀但是會使執行時間過長,運行過慢


Q4.Object類
4.1 編寫一個Fruit類及屬性String name,如沒有extends自任何類。使用System.out.println(new Fruit());是調用Fruit的什么方法呢?該方法的代碼是從哪來的?嘗試分析這些代碼實現了什么功能?
4.2 如果為Fruit類添加了toString()方法,那么使用System.out.println(new Fruit());調用了新增的toString方法。那么其父類中的toString方法的代碼就沒有了嗎?如果同時想要復用其父類的toString方法,要怎么操作?(使用代碼演示)
4.3 Fruit類還繼承了Object類的eqauls方法。嘗試分析其功能?自己編寫一個equals方法覆蓋父類的相應方法,功能為當兩個Fruit對象name相同時(忽略大小寫),那么返回true。(使用代碼證明你自己覆蓋的eqauls方法是正確的)
4.4 在4.3的基礎上使用ArrayList fruitList存儲多個fruit,要求如果fruitList中已有的fruit就不再添加,沒有的就添加進去。請編寫相關測試代碼。并分析ArrayList的contatins方法是如何實現其功能的?

?
(4.1)System.out.println(new Fruit());語句調用了Fruit的構造函數;在未寫構造函數時,系統會默認調用構造函數;輸出類名加地址形式
?
(4.2)新增的toString方法只是將String類中toString覆蓋掉,并非沒有,可以查找String類中toString方法的源代碼,在類中輸出
1109821-20170317213922948-102478467.png
?
(4.3)eqauls方法是比較兩個對象的內容是否相同(有分大小寫),若相同,則返回true,否則返回false

public boolean equals(String name1,String name2)
{if(name1.equalsIgnoreCase(name2)) return true;//使用String類中的.equalsIgnoreCase()函數,忽略大小寫else return false;
}

?
(4.4)代碼:

public class Main 
{public static void main(String[] args) {ArrayList<Fruit> fruitList=new ArrayList<Fruit>();//建立ArrayList<Fruit> fruitListfruitList.add(new Fruit());//加入new Fruit()Fruit a=new Fruit();if(!fruitList.contains(a)) fruitList.add(a);//若fruitList沒有a,則加入a,否則不操作}
}

ArrayList的contatins使用indexOf(),返回字符串在父串中首次出現的位置,若位置是大于等于0,返回true,否則返回false,ArrayList的contatins源代碼
1109821-20170317223402010-1455116158.png


Q5.代碼閱讀:PersonTest.java(abstract、多態)
5.1 畫出類的繼承關系
5.2 讀懂main函數,將自己推測的出代碼運行結果與真正運行結果進行比較。嘗試分析原因
5.3 子類中里面使用了super構造函數,作用是什么?如果將子類中的super構造函數去掉,行不行?
5.4 PersonTest.java中的代碼哪里體現了多態?你覺得多態有什么好處?多態和繼承有什么關系嗎?

?
(5.1)類的繼承關系
1109821-20170317225047729-792716038.png
?
(5.2)建立Person()數組person[],長度為4,peoples[0]=new Employee,peoples[1] = new Student,peoples[2] = new Programmer,peoples[3] = new Manager,接著根據年齡大小,由小到大排序輸出,與運行結果比較相同
?
(5.3)使用super方法,可以調用在子類中方法與參數相同的父類的屬性和方法;不行,若是去掉,則無法繼承父類中的屬性或方法,用不了,導致那些繼承的屬性用的是默認值
?
(5.4)體現多態的代碼:

peoples[0] = new Employee("zhang", "136", "1360", "1360@mail.com", 21, "female", 1000.0);
peoples[1] = new Student("wang", "110", "15959", "15959@163.com", 18, "male", "1");
peoples[2] = new Programmer("Gates", "usa", "911", "911@com", 59, "male", 100000.0, 50000.0);
peoples[3] = new Manager("Clark", "GE", "111", "111@mail.com", 10, "mail", 90000.1, 12000.3);

創建父類的對象可以構造多個不同的對象(不同的類),節約成本(例如求圓和長方形的面積和周長的和,可以創建一個父類class Shape(){},存放形狀屬性,繼承方法求面積和 和 周長和,這樣可以在圓和長方形中直接用super()引用這個方法,節約成本);只有子類繼承父類才能在建立對象時,有多個不同的對象(多態)



3. 碼云代碼提交記錄

1109821-20170318144138151-564344210.png




4. PTA實驗實驗總結

?
(1)繼承父類,在子類中使用父類的屬性和方法,用extends,后接父類,在子類中,若子類要使用與父類同名卻不同效果的方法時,可以自己編寫方法,在調用時,會調用子類的方法,覆蓋掉父類的童,同名方法
?
(2)抽象類的定義,用到abstract關鍵字,且抽象類是必須被繼承的,在求周長和 和 面積和就可以在抽象類中定義,求周長和 和 面積和的方法代碼一樣,可以在抽象類Shape中編寫
?
(3)調用父類的構造函數時(例如Manager和Employee,Manager比Employee多一個bonus,可以用super()來調用Employee的構造函數,前面的屬性一樣,只需再添加bonus的定義即可),要在子類的構造函數的第一行

轉載于:https://www.cnblogs.com/gemola/p/6561596.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/255061.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/255061.shtml
英文地址,請注明出處:http://en.pswp.cn/news/255061.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

完整的VAL3程序

start() begin//延時10秒 delay(5)//初始化變量call init()//清空原有運動堆棧resetMotion()//建立上電任務taskCreate "robotpower",100,robotpower()wait(isPowered())//建立生產任務taskCreate "ProductionCycle",10,ProductionCycle()//建立安全區域…

iOS WebView 加載本地資源(圖片,文件等)

NSString *path [[NSBundle mainBundle] pathForResource:"關于.docx" ofType:nil]; NSURL *url [NSURL fileURLWithPath:path]; NSLog("%", [self mimeType:url]); //webview加載本地文件&#xff0c;可以使用加載數據的方式 //第一個誒參數是一個N…

本文以H264視頻流為例,講解解碼流數據的步驟。

本文以H264視頻流為例&#xff0c;講解解碼流數據的步驟。 為突出重點&#xff0c;本文只專注于討論解碼視頻流數據&#xff0c;不涉及其它&#xff08;如開發環境的配置等&#xff09;。如果您需要這方面的信息&#xff0c;請和我聯系。 準備變量 定義AVCodecContext。如…

2008-2021年商業銀行數據(農商行、城商行、國有行、股份制銀行)

2008-2021年商業銀行數據&#xff08;農商行、城商行、國有行、股份制銀行&#xff09; 1、時間&#xff1a;2008-2021年 2、范圍&#xff1a;1700銀行 3 、指標&#xff1a;證券簡稱、year、證券代碼、資產總計、負債合計、所有者權益合計、利潤總額、凈利潤、貸款總額、存…

EPSON 任務同步 改寫

有時需要在多個任務執行之前來使它們同步。如果預先知道執行每項任務所需要的時間&#xff0c;它們就可以通過簡單地等待由最慢的任務產生的信號來實現同步。然而&#xff0c;如果不知道那個任務是最慢的&#xff0c;就需要使用一個更復雜的同步化機制&#xff0c;如下所示VAL …

線程池的簡單使用

創建指定線程數量的線程池 private static ExecutorService scheduledTaskFactoryExecutor null;private boolean isCancled false;private static class ThreadFactoryTest implements ThreadFactory { Overridepublic Thread newThread(Runnable r) { Thread threa…

異常--自定義異常類

為什么要調用父類構造器? http://blog.csdn.net/rockpk008/article/details/52951856 轉載于:https://www.cnblogs.com/dwj-ngu/p/6576382.html

利用ffmpeg來進行視頻解碼的完整示例代碼

&#xff08;轉&#xff09;利用ffmpeg來進行視頻解碼的完整示例代碼&#xff08;H.264&#xff09; Decode() { FILE * inpf; int nWrite; int i,p; int nalLen; unsigned char * Buf; int got_picture, consumed_bytes; unsigned char *DisplayBuf; Displ…

安卓觀看免費視頻

http://www.imooc.com/search/course?wordsAndroid%E6%94%BB%E5%9F%8E%E7%8B%AE%E7%AC%AC%E4%B8%80%E8%AF%BE&page3 http://www.imooc.com/course/list?candroid&src360onebox http://www.bilibili.com/video/av2788563/index_4.html http://www.imooc.com/course/pr…

EtherCAT 網站鏈接

http://www.ethercat.org.cn/cn.htm EtherCAT技術介紹 EtherCAT系統組成和工作原理 EtherCAT采用主從式結構&#xff0c;主站PC機采用標準的100Base-TX以太網卡&#xff0c;從站采用專用芯片。系統控制周期由主站發起&#xff0c;主站發出下行電報&#xff0c;電報的最大有效數…

IEC 6-1131/3的5種標準編程語言

用于開發控制系統和商業管理系統的TRACE MODE6編程工具面向不同領域的軟件工程師. TRACE MODE6包含的五種編程語言為&#xff1a;Techno SFC、Techno LD、Techno FBD、Techno ST和Techno IL. 這些語言是下列IEC 6-1131/3標準語言的擴展&#xff1a; SFC&#xff08;順序功能圖…

ngRx 官方示例分析 - 4.pages

Page 中通過構造函數注入 Store&#xff0c;基于 Store 進行數據操作。 注意 Component 使用了 changeDetection: ChangeDetectionStrategy.OnPush. OnPush means that the change detectors mode will be set to CheckOnce during hydration. /app/containers/collection-page…

用ffmpeg把yuv格式轉化為mpeg格式

http://blog.sina.com.cn/s/blog_5f5ad6a90100cs5k.html

方法:查詢MongoDB數據庫中最新一條數據(JAVA)

使用JAVA語言查詢MongoDB中某個數據庫某個集合的最新一條數據&#xff1a; MongoCollection<Document> cpu MongoClient.getDatabase("sysmgr").getCollection("cpu"); //獲取所需集合 Document dbo cpu.find().sort(descending("time"…

NoPause/NoEmgAbort的任務 與后臺任務的區別

NoPause/NoEmgAbort的任務示例 下面的例子顯示了一個程序&#xff0c;可以監視控制器的錯誤并根據錯誤編號在發生錯誤時切換I/O On/Off。 Function main Xqt ErrorMonitor, NoEmgAbort : FendFunction ErrorMonitor Wait ErrorOnIf 4000 < SysErr And Syserr < 5999 T…

30分鐘搞定后臺登錄界面(103個后臺PSD源文件、素材網站)(轉)

出處&#xff1a;http://www.cnblogs.com/best/p/6582294.html 目錄 一、界面預覽二、PSD源文件預覽三、工具分享四、資源說明五、素材下載網站六、下載去年八月時要做一個OA系統為了后臺界面而煩惱&#xff0c;后來寫了一篇博客&#xff08;《后臺管理UI的選擇》&#xff09;介…

Linux 查看服務器開放的端口號

在討論這個問題前&#xff0c;我們先來了解一下物理端口、邏輯端口、端口號等計算機概念。 端口相關的概念&#xff1a; 在網絡技術中&#xff0c;端口&#xff08;Port&#xff09;包括邏輯端口和物理端口兩種類型。物理端口指的是物理存在的端口&#xff0c;如ADSL Modem、集…

VC的文件路徑為什么要用雙斜杠

在編程時&#xff0c;打開文件的路徑在用單斜杠時&#xff0c;會出現問題&#xff0c;例如&#xff1a; image cvLoadImage("C:\Users\lyb\Documents\Visual Studio 2013\Projects\smooth\Debug\pic.png", 0);這樣的寫法在編譯時&#xff0c;不會出現編譯錯誤&#…

FFMpeg中apiexample.c例子分析——解碼分析

FFMpeg中apiexample.c例子分析——解碼分析 收藏 我們直接從 video_decode_example() 函數開始講&#xff0c;該函數實現了如何去解碼一個視頻文件&#xff0c;以 .mpeg 文 件為例。 &#xff08; 1 &#xff09;將緩存的末尾清 0 &#xff0c;從而確保讀操作不會越界導致破…