日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

java程序面向对象show,20165309 实验二 Java面向对象程序设计

發布時間:2025/3/8 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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環境變量。

測試通過的截圖如下:

完善產品代碼。

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

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

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

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

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

int capacity()返回當前容量。

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

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

測試結果如下:

(二)對設計模式示例進行擴充,讓其支持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();

}

}

運行結果如下:

代碼在碼云鏈接里。

(三)以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的格式。

測試結果:

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

(四)面向對象三要素

抽象

封裝、繼承與多態

使用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制作)

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

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

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

問題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

總結

以上是生活随笔為你收集整理的java程序面向对象show,20165309 实验二 Java面向对象程序设计的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。