java程序面向对象show,20165309 实验二 Java面向对象程序设计
2017-2018-2 20165309實驗二《Java面向?qū)ο蟪绦蛟O(shè)計》實驗報告
一、實驗內(nèi)容
1. 初步掌握單元測試和TDD
2. 理解并掌握面向?qū)ο笕?#xff1a;封裝、繼承、多態(tài)
3. 初步掌握UML建模
4. 熟悉S.O.L.I.D原則
5. 了解設(shè)計模式
二、實驗步驟
(一)單元測試
1.三種代碼:偽代碼、測試代碼、產(chǎn)品代碼
需求:在一個MyUtil類中解決一個百分制成績轉(zhuǎn)成“優(yōu)、良、中、及格、不及格”五級制成績的功能。
先用自然語言寫出從意圖層面來解決問題的偽代碼:
百分制轉(zhuǎn)五分制:
如果成績小于60,轉(zhuǎn)成“不及格”
如果成績在60與70之間,轉(zhuǎn)成“及格”
如果成績在70與80之間,轉(zhuǎn)成“中等”
如果成績在80與90之間,轉(zhuǎn)成“良好”
如果成績在90與100之間,轉(zhuǎn)成“優(yōu)秀”
其他,轉(zhuǎn)成“錯誤”
然后用Java語言將偽代碼“翻譯”成產(chǎn)品代碼MyUtil.java。
寫測試代碼MyUtilTest.java來檢驗產(chǎn)品代碼:
JUnit測試用例:
正常情況
錯誤情況(負數(shù),超過100的數(shù))
邊界情況(0,60,70,80,90,100)
在項目上右鍵選擇New->Directory建目錄test,右鍵單擊test目錄,在彈出的菜單中選擇Mark Directory as->Test Sources Root來設(shè)置SOURCEPATH環(huán)境變量。
測試通過的截圖如下:
完善產(chǎn)品代碼。
測試代碼和最終的產(chǎn)品代碼在代碼鏈接里。
2.測試驅(qū)動開發(fā)TDD(測試代碼->產(chǎn)品代碼)
在新目錄下創(chuàng)建StringBufferDemo類, 鼠標單擊類名旁出現(xiàn)的燈泡狀圖標,在彈出的菜單中Create Test。
測試StringBufferDemo類的方法charAt()、capacity()、indexOf()、length():
char charAt(int index)返回此序列中指定索引處的 char 值。
int capacity()返回當前容量。
int indexOf(String str)返回第一次出現(xiàn)的指定子字符串在該字符串中的索引。
int length()返回長度(字符數(shù))。
測試結(jié)果如下:
(二)對設(shè)計模式示例進行擴充,讓其支持Long類
如果要求支持Long類,Document類要修改構(gòu)造方法,這違反了OCP原則。封裝、繼承、多態(tài)解決不了問題,這時就需要設(shè)計模式了:
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();
}
}
運行結(jié)果如下:
代碼在碼云鏈接里。
(三)以TDD的方式開發(fā)一個復(fù)數(shù)類Complex
偽代碼: Complex類要輸出實部、虛部,并按照a+bi的形式輸出復(fù)數(shù)。
Complex類中有兩個變量,實部A和虛部B。
方法:
getA(int a);返回實部
getB(int b);返回虛部
ComplexAdd(Complex c);實現(xiàn)復(fù)數(shù)相加
ComplexMinus(Complex c);實現(xiàn)復(fù)數(shù)相減
ComplexMulti(Complex c);實現(xiàn)復(fù)數(shù)相乘
ComplexDiv(Complex c);實現(xiàn)復(fù)數(shù)相除
toString(int a,int b);將復(fù)數(shù)輸出成a+bi的格式。
測試結(jié)果:
產(chǎn)品代碼和測試代碼在碼云鏈接。
(四)面向?qū)ο笕?/p>
抽象
封裝、繼承與多態(tài)
使用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圖(由網(wǎng)頁ProcessOn制作)
三、實驗中遇到的問題及解決
問題1:當時安裝IDEA的時候選擇的都是默認路徑,而且也不算是經(jīng)常用,所以沒有找到Junit jar 包。
解決1:右鍵桌面上的IntelliJ IDEA Ultimate,點進屬性里面,復(fù)制地址再粘到“+”就方便找到了~
問題2:對StringBuffer的了解不夠。
解決2:可以參考學(xué)習(xí)這個網(wǎng)址:www.runoob.com/java/java-stringbuffer.html。
解決3:long型的范圍是-2147483648~2147483647
問題4:在設(shè)計實現(xiàn)復(fù)數(shù)類時不知道怎么去拼接字符串。
解決4:嘗試concat()方法后仍存在問題,突然又意識到可以直接+....
四、實驗收獲
這次的實驗讓我學(xué)會了如何去寫測試代碼,也讓我規(guī)范了編寫代碼的習(xí)慣。跟著老師的博客教程和藍墨云上的要求去做的同時,我也意識到了自己對一些基礎(chǔ)方面的知識還不夠熟悉...得認真看書才是。
步驟
耗時
百分比
需求分析
15min
12.5
設(shè)計
20min
16.7
代碼實現(xiàn)
40min
33.3
測試
25min
20.8
分析總結(jié)
20min
16.7
總結(jié)
以上是生活随笔為你收集整理的java程序面向对象show,20165309 实验二 Java面向对象程序设计的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python中加减乘除是什么数据类型_p
- 下一篇: 美好蕴育润康产品的核心优势是什么?