• 2018-2019-20175334实验二《Java面向对象程序设计》实验报告


    2018-2019-20175334实验二《Java面向对象程序设计》实验报告

    一、实验内容及步骤

    实验二面向对象程序设计-1

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

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

    • 提交最后三个测试用例都通过的截图,截图上要有画图加水印,输入自己的学号。

    • 正常情况:

    • 错误情况:

    • 边界情况:

    • 最终结果:

    实验一面向对象程序设计-2

    • 参考 积极主动敲代码,使用JUnit学习Java (http://www.cnblogs.com/rocedu/p/4837092.html)

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

    • 以 TDD的方式研究学习StringBuffer,提交你的单元测试用例和测试通过的截图,截图要加上学号水印。

    • 安装JUnitGenerator V2.0

    • 产品代码:

    public class StringBufferDemo {
        public StringBuffer setBuffer() {
            StringBuffer buffer = new StringBuffer();
            buffer.append('S');
            buffer.append("tringBuffer");
            System.out.println(buffer.charAt(1));
            System.out.println(buffer.length());
            System.out.println(buffer.capacity());
            System.out.println(buffer.indexOf("tring"));
            System.out.println(buffer.toString());
            return buffer;
        }
    }
    
    • 测试代码:
    import junit.framework.TestCase;
    import org.junit.Test;
    public class StringBufferDemoTest extends TestCase {
        StringBuffer buffer1 = new StringBuffer("StringBuffer");
        StringBuffer buffer2 = new StringBuffer("StringBufferStringBuffer");
        StringBuffer buffer3 = new StringBuffer("StringBufferStringBufferStringBuffer");
        @Test
        public void testcharAt() {
            assertEquals('S',buffer1.charAt(0));
            assertEquals('r',buffer1.charAt(11));
        }
        @Test
        public void testlength(){
            assertEquals(12,buffer1.length());
            assertEquals(24,buffer2.length());
            assertEquals(36,buffer3.length());
        }
        @Test
        public void testcapacity(){
            assertEquals(28,buffer1.capacity());
            assertEquals(40,buffer2.capacity());
            assertEquals(52,buffer3.capacity());
        }
        @Test
        public void testToString(){
            assertEquals("StringBuffer",buffer1.toString());
            assertEquals("StringBufferStringBuffer",buffer2.toString());
        }
        @Test
        public void testIndexOf(){
            assertEquals(0,buffer1.indexOf("Str"));
            assertEquals(5,buffer1.indexOf("gBu"));
        }
    }
    
    • 测试结果:

    实验二 面向对象程序设计-3

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

    • 对设计模式示例进行扩充,体会OCP原则和DIP原则的应用,初步理解设计模式
      用自己的学号%6进行取余运算,根据结果进行代码扩充:
      0: 让系统支持Byte类,并在MyDoc类中添加测试代码表明添加正确,提交测试代码和运行结的截图,加上学号水印
      1: 让系统支持Short类,并在MyDoc类中添加测试代码表明添加正确,提交测试代码和运行结的截图,加上学号水印
      2: 让系统支持Boolean类,并在MyDoc类中添加测试代码表明添加正确,提交测试代码和运行结的截图,加上学号水印
      3: 让系统支持Long类,并在MyDoc类中添加测试代码表明添加正确,提交测试代码和运行结的截图,加上学号水印
      4: 让系统支持Float类,并在MyDoc类中添加测试代码表明添加正确,提交测试代码和运行结的截图,加上学号水印
      5: 让系统支持Double类,并在MyDoc类中添加测试代码表明添加正确,提交测试代码和运行结的截图,加上学号水印

    • 产品代码::

    // Server Classes 
    abstract class Data {
        abstract public void DisplayValue();
    }
    class Integer extends  Data {
        int value;
        Integer() {
            value=300;
        }
        public void DisplayValue(){
            System.out.println (value);
        }
    }
    class Float extends  Data {
        float value;
        Float() {
            value=2.688F;
        }
        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();
        }
    }
    class FloatFactory extends Factory {
        public Data CreateDataObject(){
            return new Float();
        }
    }
    class Document {    //Client classes
        Data pd;
        Document(Factory pf){
            pd = pf.CreateDataObject();
        }
        public void DisplayData(){
            pd.DisplayValue();
        }
    }
    //Test class
    public class MyDoc {
        static Document d,f;
        public static void main(String[] args) {
            d = new Document(new IntFactory());
            d.DisplayData();
            f = new Document(new FloatFactory());
            f.DisplayData();
        }
    }
    
    • 测试结果:

    实验二 面向对象程序设计-4

    • 提交:单元测试代码和运行成功截图及码云上代码链接,截图要加上学号水印

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

    • 任务:以TDD的方式开发一个复数类Complex,要求如下:

      // 定义属性并生成getter,setter
      double RealPart;
      double ImagePart;
      // 定义构造函数
      public Complex()
      public Complex(double R,double I)

      //Override Object
      public boolean equals(Object obj)
      public String toString()

      // 定义公有方法:加减乘除
      Complex ComplexAdd(Complex a)
      Complex ComplexSub(Complex a)
      Complex ComplexMulti(Complex a)
      Complex ComplexDiv(Complex a)

    • 产品代码:

    public class Complex {
        //定义属性并生成getter,setter
        double RealPart;
        double ImagePart;
        public double getterRealPart() {
            return RealPart;
        }
        public double getterImagePart() {
            return ImagePart;
        }
        public void setter(double r, double i) {
            RealPart = r;
            ImagePart = i;
        }
        //定义构造函数
        public Complex(){
    
        }
        public Complex(double r, double i) {
            RealPart = r;
            ImagePart = i;
        }
        //Override Object
        public boolean equals(Object obj){
            if(this == obj){
                return true;
            }
            else
            {
                return false;
            }
        }
        public String toString() {
            String result = new String();
            if (ImagePart > 0)
                result = RealPart+"+"+ImagePart+"i";
            if (ImagePart == 0)
                result = RealPart+"";
            if (ImagePart < 0)
                result = RealPart+"-"+ImagePart*(-1)+"i";
            return result;
        }
        //定义公有方法:加减乘除
        public Complex ComplexAdd(Complex obj) {
            return new Complex ((getterRealPart()+obj.getterRealPart()),(getterImagePart()+obj.getterImagePart()));
        }
        public Complex ComplexSub(Complex obj) {
            return new Complex ((getterRealPart()-obj.getterRealPart()),(getterImagePart()-obj.getterImagePart()));
        }
        public Complex ComplexMulti(Complex obj) {
            return new Complex ((getterRealPart()*obj.getterRealPart()-getterImagePart()*obj.getterImagePart()),(getterRealPart()*obj.getterImagePart()+getterImagePart()*obj.getterRealPart()));
        }
        public Complex ComplexDiv(Complex obj){
            double div = Math.sqrt(obj.RealPart*obj.RealPart)+Math.sqrt(obj.ImagePart*obj.ImagePart);
            return new Complex(((RealPart*obj.RealPart+ImagePart*obj.ImagePart)/div),((ImagePart*obj.RealPart-RealPart*obj.ImagePart)/div));
        }
    }
    
    • 测试代码:
    import junit.framework.TestCase;
    import org.junit.Test;
    public class ComplexTest extends TestCase {
        Complex c1 = new Complex(2,4);
        Complex c2 = new Complex(-1,1);
        @Test
        public void testComplexAdd(){
            assertEquals("1.0+5.0i",c1.ComplexAdd(c2)+"");
        }
        @Test
        public void testComplexSub(){
            assertEquals("3.0+3.0i",c1.ComplexSub(c2)+"");
        }
        @Test
        public void testComplexMulti(){
            assertEquals("-6.0-2.0i",c1.ComplexMulti(c2)+"");
        }
        @Test
        public void testComplexDiv(){
            assertEquals("1.0-3.0i",c1.ComplexDiv(c2)+"");
        }
    }
    
    • 测试结果:

    实验二 面向对象程序设计-5

    • 使用WhiteStarUML对实验二中的代码进行建模,发类图的截图,加上学号水印。

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

    • 类图中只少两个类。

    • 类图:

    二、实验过程中遇到的问题以及解决方法

    • 问题1:junit使用org.junit不存在,junit部分显示红色
    • 问题1解决方案:点击File——Project Struct……——Libraies——点击加号——Java——找到 IDEA 安装路径下的junit-4.12——点击OK

    代码托管

    三、实验心得体会

    • 本次实验主要针对的是测试,单元测试可以更好地帮助我们测试边界及异常情况,在平时代码运行找不到错误的时候,可以通过单元测试寻找代码Bug,并对代码进行补充及修改,这能帮助我们更好地完成更健全的代码。
    步骤 耗时 百分比
    需求分析 20min 10%
    设计 40min 20%
    代码实现 70min 35%
    测试 30min 15%
    分析总结 40min 20%
  • 相关阅读:
    验证手机和电话号码
    oracle取字符串长度的函数length()和hengthb()
    AngularJs教程
    nop commerce文档
    根据子查询批量删除的sql语句
    AngularJs赋值问题
    PetaPoco模糊查询
    js转换 /Date(1464671903000)/ 格式的日期的方法
    jquery-cookie插件怎么读写json数据
    executssql 函数的每一句代码的意思
  • 原文地址:https://www.cnblogs.com/lxr1006/p/10733724.html
Copyright © 2020-2023  润新知