20165218 實驗二 Java物件導向程式設計

來源:互聯網
上載者:User

標籤:開發   dea   ide   get   pre   setter   2.0   產品   turn   

實驗二 Java物件導向程式設計課程:java程式設計姓名:趙冰雨學號:20165218指導教師:婁嘉鵬實驗日期:2018.4.16實驗密級:Java開發環境的熟悉實驗內容、步驟與體會:(一)單元測試
  • 實驗要求

    參考 http://www.cnblogs.com/rocedu/p/6371315.html#SECUNITTEST

參考http://www.cnblogs.com/rocedu/p/6736847.html

提交最後三個測試案例都通過的

  • 實驗步驟
  1. 根據虛擬碼編寫產品代碼MyUtil.java
  2. 建立一個測試代碼MyUtil.java
  3. 測試多種情況,包括正常情況,異常情況(負分或大於100的乘積),邊界情況,並根據測試結果調整產品代碼(以上是自己編寫測試代碼的過程)
  4. 建立測試檔案夾test,並將其改成可作為原始碼編譯

  1. 在test檔案夾下建立MyUtilTest.jva,輸入代碼:
import org.junit.Test;import junit.framework.TestCase;public class MyUtilTest extends TestCase {    @Test    public void testNormal() {        assertEquals("不及格", MyUtil.percentage2fivegrade(55));        assertEquals("及格", MyUtil.percentage2fivegrade(65));        assertEquals("中等", MyUtil.percentage2fivegrade(75));        assertEquals("良好", MyUtil.percentage2fivegrade(85));        assertEquals("優秀", MyUtil.percentage2fivegrade(95));    }}
  1. 運行成功

  2. 出現語法錯誤時
    File->Project Structure

在IDEA安裝地址下找到如下三個檔案並添加即可

(二)物件導向的三要素
  • 實驗要求

    參考 積極主動敲代碼,使用JUnit學習Java
    (http://www.cnblogs.com/rocedu/p/4837092.html)

參考http://www.cnblogs.com/rocedu/p/6736847.html

以 TDD的方式研究學習StringBuffer,提交你的單元測試用例和測試通過的

  • 實驗步驟
  1. 編寫測試案例代碼
/** * Created by zby on 2018/4/16. */public class StringBufferDemo {    public static void main(String[] args) {        StringBuffer buffer = new StringBuffer();        buffer.append(‘S‘);        buffer.append("tringBuffer");        System.out.println(buffer.charAt(1));        System.out.println(buffer.capacity());        System.out.println(buffer.indexOf("tring"));        System.out.println("buffer = " + buffer.toString());        System.out.println(buffer.length());    }}
  1. 測試代碼
import junit.framework.TestCase;import org.junit.Test;/** * Created by zby on 2018/4/16. */import junit.framework.TestCase;import org.junit.Test;import static org.junit.Assert.*;public class StringBufferTest extends TestCase {    StringBuffer string1 = new StringBuffer("hellojava");//測試9個字元    StringBuffer string2 = new StringBuffer("To be or not to be");//測試18個字元    StringBuffer string3 = new StringBuffer("Quando abbandonare ogni speranza");//測試32個字元    @Test    public void testCharAt() {        assertEquals(‘h‘, string1.charAt(0));        assertEquals(‘e‘, string2.charAt(4));        assertEquals(‘a‘, string3.charAt(7));    }    @Test    public void testCapacity() {        assertEquals(25, string1.capacity());        assertEquals(34, string2.capacity());        assertEquals(48, string3.capacity());    }    @Test    public void testindexOf() {        assertEquals(0, string1.indexOf("he"));        assertEquals(9, string2.indexOf("not"));        assertEquals(7, string3.indexOf("abbando"));    }    @Test    public void testlength() {        assertEquals(9, string1.length());        assertEquals(18, string2.length());        assertEquals(32, string3.length());    }}
  1. 如果顯示測試失敗(如),根據提示修改測試代碼
  2. 測試成功
(三)設計模式初步
  • 實驗內容

    參考http://www.cnblogs.com/rocedu/p/6736847.html

對設計模式樣本進行擴充,體會OCP原則和DIP原則的應用,初步理解設計模式

用自己的學號%6進行取餘運算,根據結果進行代碼擴充:

0: 讓系統支援Byte類,並在MyDoc類中添加測試代碼錶明添加正確,提交測試代碼和運行結的,加上學號浮水印

  • 實驗步驟
  1. 設計編寫代碼Data.javaMyDoc.java
/** * Created by zby on 2018/4/16. */abstract class Data {    abstract public void DisplayValue();}class Integer extends Data {    int value;    Integer() {        value = 100;    }    public void DisplayValue() {        System.out.println(value);    }}class Byte extends Data {    byte value;    Byte() {        value = (byte) 20165218;    }    public void DisplayValue() {        System.out.println(value);    }}// Pattern Classesabstract class Factory {    abstract public Data CreateDataObject();}class IntFactory extends Factory {    public Data CreateDataObject() {        return new Integer();    }}class ByteFactory extends Factory {    public Data CreateDataObject() {        return new Byte();    }}//Client classesclass Document {    Data data;    Document(Factory factory) {        data = factory.CreateDataObject();    }    public void DisplayData() {        data.DisplayValue();    }}
public class MyDoc {    static Document d;    public static void main(String[] args) {        d = new Document(new ByteFactory());        d.DisplayData();    }}
(四)練習
  • 實驗內容

    提交:單元測試代碼和運行成功及碼雲上代碼連結,要加上學號浮水印

參考http://www.cnblogs.com/rocedu/p/6736847.html

任務:以TDD的方式開發一個複數類Complex,要求如下:

//虛擬碼// 定義屬性並產生getter,setterdouble RealPart;double ImagePart;// 定義建構函式public Complex()public Complex(double R,double I)//Override Objectpublic boolean equals(Object obj)public String toString()// 定義公有方法:加減乘除Complex ComplexAdd(Complex a)Complex ComplexSub(Complex a)Complex ComplexMulti(Complex a)Complex ComplexDiv(Complex a)
  • 實驗步驟
  1. 產品代碼
/** * Created by zby on 2018/4/16. */public class Complex {    // 定義屬性並產生getter,setter    private double RealPart;    private double ImagePart;    // 定義建構函式    public Complex() {    }    public Complex(double R, double I) {        this.RealPart = R;        this.ImagePart = I;    }    public double getRealPart() {        return RealPart;    }    public void setRealPart(double realPart) {        RealPart = realPart;    }    public double getImagePart() {        return ImagePart;    }    public void setImagePart(double imagePart) {        ImagePart = imagePart;    }    //Override Object    public boolean equals(Object obj) {        if (this == obj) {            return true;        }        if (!(obj instanceof Complex)) {            return false;        }        Complex complex = (Complex) obj;        if (complex.RealPart != ((Complex) obj).RealPart) {            return false;        }        if (complex.ImagePart != ((Complex) obj).ImagePart) {            return false;        }        return true;    }    public String toString() {        String string = "";        if (ImagePart > 0)            string = RealPart + "+" + ImagePart + "i";        if (ImagePart == 0)            string = RealPart + "";        if (ImagePart < 0)            string = RealPart + " " + ImagePart + "i";        return string;    }    // 定義公有方法:加減乘除    Complex ComplexAdd(Complex a) {        return new Complex(RealPart + a.RealPart, ImagePart + a.ImagePart);    }    Complex ComplexSub(Complex a) {        return new Complex(RealPart - a.RealPart, ImagePart - a.ImagePart);    }    Complex ComplexMulti(Complex a) {        return new Complex(RealPart * a.RealPart - ImagePart * a.ImagePart, ImagePart * a.RealPart + RealPart * a.ImagePart);    }    Complex ComplexDiv(Complex a) {        Complex d = new Complex();        d.RealPart = (this.RealPart * a.RealPart + this.ImagePart * a.ImagePart) / (a.RealPart * a.RealPart + a.ImagePart * a.ImagePart);        d.ImagePart = (this.ImagePart * a.RealPart - this.RealPart * a.ImagePart) / (a.RealPart * a.RealPart + a.ImagePart * a.ImagePart);        return d;    }}
  1. 測試代碼
/** * Created by zby on 2018/4/16. */import org.junit.*;import static org.junit.Assert.*;public class ComplexTest {    Complex a = new Complex(1, 2);    Complex b = new Complex(1, -4);    @Test    public void testAdd() {        assertEquals("2.0 -2.0i", a.ComplexAdd(b).toString());        System.out.println(a.ComplexAdd(b));    }    @Test    public void testSub() {        assertEquals("0.0+6.0i", a.ComplexSub(b).toString());        System.out.println(a.ComplexSub(b));    }    @Test    public void testMulti() {        assertEquals("9.0 -2.0i", a.ComplexMulti(b).toString());        System.out.println(a.ComplexMulti(b));    }    @Test    public void testDiv() {        assertEquals("-0.4117647058823529+0.35294117647058826i", a.ComplexDiv(b).toString());        System.out.println(a.ComplexDiv(b));    }}
  1. 測試結果
(五)UML圖繪製
  • 實驗內容

    使用WhiteStarUML對實驗二中的代碼進行建模,發類圖的,加上學號浮水印。

參考http://www.cnblogs.com/rocedu/p/6736847.html

  • 實驗步驟
  1. 開啟StarUML後,File->New建立一個檔案
  2. 單擊Class拖動到畫布上,修改類的名稱

斷行符號確認

  1. 按右鍵類,添加對象和方法()

  2. 雙擊對象或方法的名字可修改,單擊小加號可以添加一個新的對象或方法

  3. 點擊對象或方法,Properties->Visibility,修改存取權限

  4. 完成

代碼實現PSP時間圖
步驟 耗時 百分比
需求分析 20min 6%
設計 30min 9%
代碼實現 90min 27.3%
測試 120min 36.4%
分析總結 70min 21%
分析單元測試的好處
  1. 協助開發人員編寫代碼,提升品質、減少bug。
  2. 提升反饋速度,減少重複工作,提高開發效率。
  3. 保證你最後的代碼修改不會破壞之前代碼的功能。
  4. 讓代碼維護更容易。
  5. 有助於改進代碼品質和設計。
參考資料
  1. 實驗二《Java物件導向程式設計》的一點說明
  2. 為什麼要編寫單元測試?單元測試的優勢及優點
  3. 實驗二 Java物件導向程式設計
  4. Intellj IDEA 簡易教程

20165218 實驗二 Java物件導向程式設計

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.