java程序面向對象show,20165309 實驗二 Java面向對象程序設計

2017-2018-2 20165309實驗二《Java面向對象程序設計》實驗報告

一、實驗內容

1. 初步掌握單元測試和TDD

2. 理解并掌握面向對象三要素:封裝、繼承、多態

3. 初步掌握UML建模

4. 熟悉S.O.L.I.D原則

5. 了解設計模式

二、實驗步驟

(一)單元測試

1.三種代碼:偽代碼、測試代碼、產品代碼

需求:在一個MyUtil類中解決一個百分制成績轉成“優、良、中、及格、不及格”五級制成績的功能。

先用自然語言寫出從意圖層面來解決問題的偽代碼:

百分制轉五分制:

如果成績小于60,轉成“不及格”

如果成績在60與70之間,轉成“及格”

如果成績在70與80之間,轉成“中等”

如果成績在80與90之間,轉成“良好”

如果成績在90與100之間,轉成“優秀”

其他,轉成“錯誤”

然后用Java語言將偽代碼“翻譯”成產品代碼MyUtil.java。

寫測試代碼MyUtilTest.java來檢驗產品代碼:

JUnit測試用例:

正常情況

錯誤情況(負數,超過100的數)

邊界情況(0,60,70,80,90,100)

在項目上右鍵選擇New->Directory建目錄test,右鍵單擊test目錄,在彈出的菜單中選擇Mark Directory as->Test Sources Root來設置SOURCEPATH環境變量。

測試通過的截圖如下:

2a3e027938f0253665248d9efa8995dd.png

完善產品代碼。

測試代碼和最終的產品代碼在代碼鏈接里。

2.測試驅動開發TDD(測試代碼->產品代碼)

在新目錄下創建StringBufferDemo類, 鼠標單擊類名旁出現的燈泡狀圖標,在彈出的菜單中Create Test。

測試StringBufferDemo類的方法charAt()、capacity()、indexOf()、length():

char charAt(int index)返回此序列中指定索引處的 char 值。

int capacity()返回當前容量。

int indexOf(String str)返回第一次出現的指定子字符串在該字符串中的索引。

int length()返回長度(字符數)。

測試結果如下:

d24a2c69ba6a554a8785bd1913e26fe3.png

(二)對設計模式示例進行擴充,讓其支持Long類

如果要求支持Long類,Document類要修改構造方法,這違反了OCP原則。封裝、繼承、多態解決不了問題,這時就需要設計模式了:

class Long extends Data

class LongFactory extends Factory

在MyDoc類中添加測試代碼: public class MyDoc {

static Document d;

public static void main(String[] args) {

d = new Document(new LongFactory());

d.DisplayData();

}

}

運行結果如下:

b5818b7eccca7be00208ee9aebe499f3.png

代碼在碼云鏈接里。

(三)以TDD的方式開發一個復數類Complex

偽代碼: Complex類要輸出實部、虛部,并按照a+bi的形式輸出復數。

Complex類中有兩個變量,實部A和虛部B。

方法:

getA(int a);返回實部

getB(int b);返回虛部

ComplexAdd(Complex c);實現復數相加

ComplexMinus(Complex c);實現復數相減

ComplexMulti(Complex c);實現復數相乘

ComplexDiv(Complex c);實現復數相除

toString(int a,int b);將復數輸出成a+bi的格式。

測試結果:

5f30162638632305a1c0a51ee9f57d90.png

產品代碼和測試代碼在碼云鏈接。

(四)面向對象三要素

抽象

封裝、繼承與多態

使用UML對實驗二中代碼進行建模

代碼: public abstract class Animal {

private String color;

public String getColor() {

return color;

}

public void setColor(String color) {

this.color = color;

}

public abstract String shout();

}

public class Cat extends Animal {

public String shout() {

return "喵喵";

}

public String toString() {

return "The Cat's color is " + this.getColor() +", and it shouts "+ this.shout() + "!";

}

}

public class Dog extends Animal

{

public String shout() {

return "汪汪";

}

public String toString() {

return "The Dog's color is " + this.getColor() +", and it shouts "+ this.shout() + "!";

}

}

UML圖(由網頁ProcessOn制作)

b5cf80a2764d6de4c83fc2693aac6a28.png

三、實驗中遇到的問題及解決

問題1:當時安裝IDEA的時候選擇的都是默認路徑,而且也不算是經常用,所以沒有找到Junit jar 包。

解決1:右鍵桌面上的IntelliJ IDEA Ultimate,點進屬性里面,復制地址再粘到“+”就方便找到了~

94e545a6b0d3751000f1d2fab808168e.png

問題2:對StringBuffer的了解不夠。

解決2:可以參考學習這個網址:www.runoob.com/java/java-stringbuffer.html。

解決3:long型的范圍是-2147483648~2147483647

問題4:在設計實現復數類時不知道怎么去拼接字符串。

解決4:嘗試concat()方法后仍存在問題,突然又意識到可以直接+....

四、實驗收獲

這次的實驗讓我學會了如何去寫測試代碼,也讓我規范了編寫代碼的習慣。跟著老師的博客教程和藍墨云上的要求去做的同時,我也意識到了自己對一些基礎方面的知識還不夠熟悉...得認真看書才是。

步驟

耗時

百分比

需求分析

15min

12.5

設計

20min

16.7

代碼實現

40min

33.3

測試

25min

20.8

分析總結

20min

16.7

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

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

相關文章

php dom 丟失內容,PHP DOMDocument缺失

我在運行$dom new DOMDocument(“1.0”,“utf-8”)時遇到一個奇怪的錯誤:警告:require_once(classes / DOMDocument.class.php)[function.require-once]:無法打開流:第5行的/var/www/html/cms/bootstrap.php中沒有這樣的文件或目…

jade軟件_TEM衍射斑點標定之DM軟件

雖然透射電子顯微鏡(TEM) 能在納米尺度上實現對待測樣品形貌、 尺寸的分析; 結合選區電子衍射(SAED),可以更進一步實現對待測樣品的晶體結構、 晶相組成的鑒定,從而提高樣品分析的準確度和可靠性。可是,每個剛接觸TEM的小白&#…

dorado 7 怎么樣_一點點奶茶怎么樣?消費者眼中的網紅奶茶

最近在朋友圈, -款奶茶火速躥紅,不錯,那正是近期瘋傳的網紅奶茶一點點奶茶。一點點奶茶是-款主打臺灣正宗波霸奶茶的茶飲品牌,而這樣的奶茶在現在的市場中就表現的十分有潛力, 尤其受年輕群體的喜歡!一點點奶茶怎么樣?它的崛起是無可厚非的,它那美麗的外形,別具-格的屬性&…

Mysql 啟動失敗沒日志,MySQL Server 5.7將無法啟動,并且未填充錯誤日志

我最近在Ubuntu 14.04上安裝了MySQL Server 5.7(通過ansible使用this role是具體的).首次安裝時啟動很好,但是當我嘗試重新啟動它時,它會永遠掛起:sudo service mysql restart* Stopping MySQL Community Server 5.7.13* MySQL Community Server 5.7.13 is already …

gatewayproperties 是空_楊丞琳演唱會踩空,從二樓高臺掉到一樓,手腳擦傷,引發網友熱議...

11月6日,據臺灣媒體報道,楊丞琳今晚在臺北舉辦連續三天的演唱會,她開場在兩層樓高的高臺上唱歌,結束后意外從高臺踩空掉到一樓,從二樓高臺掉到一樓,手腳擦傷。引發網友們的熱議。當時幸好身邊有工作人員抱住…

0 179 90 150matlab,matlab成功的函數擬合方法_更新中

學習心得一維插值方案 (1)二維數據內插值(表格查找) (3)等高線 (4)三維曲面 (5)等高線2 (6)三維曲面2 (7)matlab繪制溫度場(尚未深入研究) (12)二維曲線(非線性)擬合步驟 (17)三維曲線(非線性)擬合步驟 (18)三維曲線的畫法 (19)三維曲面的畫法 (20)一維插值方案clearyear 1900…

matlab中 %s 是什么意思,ie在matlab中是什么意思

MATLAB文件操作相關命令5.2.4 輸入輸出語句 (1) 實時交互輸入輸出 input;keyboard (2) 完全復制式的文件存取 *1) save save save 文件名 x save 文件名 x y z save 文件名 x y z –ascii save 文件名 x y z –ascii –double save 文件名 x …

mysql with as 用法_英語語法丨英語中just的用法總結,你掌握了嗎?

just在英語中是一個重要的單詞,它的使用方法很多樣。今天,這篇文章可以幫你正確使用這個英語中的關鍵詞!一、just作為時間表達1.Just Recently最近just常被用來表達,某事最近發生了。在現在完成時中,just可以用來表示…

檢測php加密方式,一種php加密方式

function RandAbc($length""){//返回隨機字符串$str"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";return str_shuffle($str);}$filenamedam.php;$T_k1RandAbc();//隨機密匙1$T_k2RandAbc();//隨機密匙2$vstrfile_get_contents($filename);//要…

easyx 備忘錄_報到?上課?我被自己的備忘錄騙到了

2020年6月的某一天小莔被一股神秘力量支配打開了手機里的備忘錄突然發現了自己曾經記錄下的一則消息小莔現在看到真的是回憶滿滿從一月到現在我們經歷了許多變數看到了世間的溫暖感受到了愛與希望其中遇到的一些感動我們可能會忘記就像我們成長的過程中也會經歷很多要做許多事情…

基于matlab的ldpc編碼的構造,基于LDPC編碼的GMSK調制與解調及matlab仿真實現(含錄像)...

基于LDPC編碼的GMSK調制與解調及matlab仿真實現(含錄像)(開題報告,論文10700字,程序代碼,錄像)摘 要隨著無線通信技術的不斷發展與進步,數字電視廣播、移動視頻點播等對數據吞吐量要求很高的業務逐漸變得可能。為了在有限的帶寬內用有限的發射功率保證信息在空間傳播…

linux查看內存_嵌入式操作系統的內存,你了解多少?

關注、星標公眾號,不錯過精彩內容來源:EDN電子技術設計linux 內存是后臺開發人員,需要深入了解的計算機資源。合理的使用內存,有助于提升機器的性能和穩定性。本文主要介紹 linux 內存組織結構和頁面布局,內存碎片產生…

結構體內部申請空間_墻體的重要承重結構以及作用方向分類

內容提要:墻體是房屋的重要承重結構,墻體也是建筑物的主夏圍護結構。其造價、工程量和自重往往是建筑物所有構件中所占份額最大的,因此在建筑設計中,合理地選擇墻體的材料、結構方案、構造做法十分重要。墻體在建筑物中所處的不同…

現代php中文版,現代PHP

PrefacePart Ⅰ. Language Features1.The New PHPPastPresentFuture2.FeaturesNamespacesWhy We Use NamespacesDeclarationImport and AliasHelpful TipsCode to an InterfaceTraitsWhy We Use TraitsPrefacePart Ⅰ. Language Features1.The New PHPPastPresentFuture2.Featu…

fastcopy比正常復制快多少_高中三年,每個階段考多少分才正常?快對比一下

原標題:高中三年,每個階段考多少分才正常?快對比一下高一階段眾所周知,在高一階段并沒有文理科之分,除去英語、語文、數學,還有政、史、地、理、化、生六門課程。語數外各占150分,另外6門各占10…

java 調用tomcat api,調用servlet接口流程

使用Servlet接口的整體流程目前對JavaWeb的理解是:用一次提交過程來表示,當點擊一個提交的標簽。會將url傳到tomcat服務器,在tomcat的配置文件中找到管理javaweb項目的配置文件server.xml,在server.xml中配置管理web項目的路徑。從…

pve萬兆網卡驅動_無線環境下打游戲,還能不能更穩?附各類AX網卡換裝思路

無線環境下打游戲,還能不能更穩?附各類AX網卡換裝思路 1.寫在前面 去年這個時候我還是建議大家持觀望狀態,然后從今年上半年開始新發布的手機就已經把Wi-Fi 6作為標配了。第三季度開始新發的筆記本和主板也已經全面轉向標配ax網卡&#x…

php縮放庫,php的縮放圖像類使用

標題: php的縮放圖像類使用作者:李英江日期: 2006-11-25 14:54:05轉載請保留作者內容: http://www.cgsir.com使用縮略圖有個好處就是可以減少用戶下載的時間,為此要在上傳圖片時生成一張比原圖小的圖片,一般的PHP空間都…

網頁設計工資一般多少_理發師工資一般多少錢一個月

現在社會物價上漲,就連理發的價格也上漲了,但是雖然價格上漲了,質量卻未必保證了。理發師在現在生活中可是少不了的,尤其是對女性朋友來說,發型設計可是至關重要的,因此雖然理發的價格上漲,但是…

php百度坐標轉騰訊坐標,PHP騰訊與百度坐標轉換

public function coordinate_switch($a,$b){//百度轉騰訊坐標轉換$x (double)$b - 0.0065;$y (double)$a - 0.006;$x_pi 3.14159265358979324;$z sqrt($x * $x$y * $y) - 0.00002 * sin($y * $x_pi);$theta atan2($y,$x) - 0.000003 * cos($x*$x_pi);$gb number_format($…