20135333蘇正生實驗二實驗報告

實驗報告html

課程:java

Java程序設計程序員

班級:編程

1353windows

姓名:設計模式

蘇正生單元測試

學號:測試

2015333優化

成績:this

 

指導教師:

婁家鵬

實驗日期:

2015.5.6

實驗密級:

 

預習程度:

 

實驗時間:

3:20~5:00

儀器組次:

 

必修/選修:

必修

實驗序號:

實驗二

實驗名稱:

Java面向對象程序設計

實驗目的:

1.掌握單元測試和TDD

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

3. 初步掌握UML建模

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

5. 瞭解設計模式

 

 

 

 

實驗儀器:

 

名稱

型號

數量

筆記本電腦

 

 

Msi GS70

 

 

 

1

 

 

                     

 

 

 

實驗內容:

1、     單元測試和TDD

 

 

源代碼1:

public class MyUtil{

   public static String percentage2fivegrade(int grade){

       //若是成績小於0,轉成「錯誤」

       if ((grade < 0))

           return "錯誤";

       //若是成績小於60,轉成「不及格」

       else if (grade < 60)

           return "不及格";

       //若是成績在60與70之間,轉成「及格」

       else if (grade < 70)

           return "及格";

       //若是成績在70與80之間,轉成「中等」

       else if (grade < 80)

           return "中等";

       //若是成績在80與90之間,轉成「良好」

       else if (grade < 90)

           return "良好";

       //若是成績在90與100之間,轉成「優秀」

       else if (grade <= 100)

           return "優秀";

       //若是成績大於100,轉成「錯誤」

       else

           return "錯誤";

   }

}

源代碼2:

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));

    }

}

2、     面向對象三要素

(1)抽象(2)封裝、繼承與多態

實驗記錄:

 

實驗代碼1:

public class AnimalTest {

         public static void main(String[]args){

                   Dog d=new Dog();

                   d.setColor("Yellow");

                   getInfo(d);

                  

                   Cat c=new Cat();

                   c.setColor("Black");

                   getInfo(c);

         }

         public static void getInfo(Dog d){

                   System.out.println(d.toString());

         }

         public static void getInfo(Cat c){

                   System.out.println(c.toString());

         }

}

實驗代碼2:

package dog;

 

public class DogTest {

         public static void main(String[] args){

                   Dog g=new Dog();

                   g.setColor("Yellow");

                   getInfo();

         }

public static void getInfo(Dog d){

         System.out.println(d.toString());

}

}

實驗代碼3:

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 Dog extends Animal{

    public String shout(){

        return "汪汪";

    }

       public String toString(){

        return "The Dog's color is " + this.getColor() +", and it shouts "+ this.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() + "!";

    }

}

3、設計模式初步

設計模式(design pattern)提供一個用於細化軟件系統的子系統或組件,或它們之間的關係圖,它描述通訊組件的公共再現結構,通訊組件能夠解決特定語境中的一個設計問題。

實驗過程:

 

實驗代碼:

// Server Classes 
abstract class Data { 
    abstract public void DisplayValue(); 
}
class Integer extends  Data {    
    int value; 
    Integer() {
         value=100; 
    }  
    public void DisplayValue(){
        System.out.println (value);
    } 
 } 
// Pattern Classes 
abstract class Factory { 
   abstract public Data CreateDataObject(); 
}
class IntFactory extends Factory { 
   public Data CreateDataObject(){
        return new Integer(); 
   } 
} 
//Client classes 
class Document {    
    Data pd; 
    Document(Factory pf){ 
       pd = pf.CreateDataObject(); 
    } 
    public void DisplayData(){
       pd.DisplayValue(); 
   } 
 } 
 //Test class
 public class MyDoc {
    static Document d;
    public static void main(String[] args) {
            d = new Document(new IntFactory()); 
            d.DisplayData(); 
    }    
}
四.使用TDD的方式設計並實現複數類Complex

總結

PSP(Personal Software Process)時間

步驟 耗時 百分比
需求分析 15分鐘 5.5%
設計   15分鐘 5.5%
代碼實現 90分鐘 33.3%
測試 120分鐘 44.4%
分析總結 30分鐘 12%

單元測試的好處:

「軟件的不少錯誤都來源於程序員對模塊功能的誤解、疏忽或不瞭解模塊的變化。如何能讓本身負責的模塊功能定義儘可能明確,模塊內部的改變不會影響其餘模塊,並且模塊的質量能獲得穩定的、量化的保證?單元測試就是一個頗有效的解決方案。」

沒錯,經過單元測試,不只能夠完善本身的編程邏輯和細節,並且對於代碼的完善性和可靠性有了更好的提升。特別是編程過程當中,代碼模塊和測試模塊共同成長起來的過程,讓整個編程更有邏輯性和嚴密性。

總結:本次實驗,從單元測試,工程——包——類,封裝、繼承、接口等多方面對java編程能力進行了提升,不只對於相關軟件有了全新的認識,並且對於本身的編程習慣有了更好的優化。雖然從實驗樓轉戰windows平臺,再經過虛擬機最終完成,耗時有點過長,可是在編程能力的提升的同時,也鍛鍊了本身的耐性和韌勁。實驗過程當中,和老師、同窗交流,也對於java有了新的認識。

 

20135333蘇正生

2015年5月7日  

相關文章
相關標籤/搜索