• 实验二 Java面向对象程序设计 20175301李锦然实验报告


    实验二 Java面向对象程序设计

    实验内容

    1. 初步掌握单元测试和TDD

    2. 理解并掌握面向对象三要素:封装、继承、多态

    3. 初步掌握UML建模

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

    5. 了解设计模式

    根据实验提交的规则,把实验为五个部分

    面向对象程序设计-1

    实验要求:

    • 参考:> http://www.cnblogs.com/rocedu/p/6371315.html#SECUNITTEST
    • 参考:> http://www.cnblogs.com/rocedu/p/6736847.html
    • 提交最后三个测试用例都通过的截图,截图上要有画图加水印,输入自己的学号。

    实验步骤:

    在IDEA中新建一个工程,然后建立MyUtil类还有检查用的类,下图是最初的类(改了名,问题不大)

    然后导入最初的程序

    然后看看检验程序结果

    果然出错了,检查出错原因是因为不及格的成绩不对啊

    修改及格成绩为60,然后继续检测,这次通过了

    然后来检测边界情况

    看输出是满分出了问题这里输出时faild6遮住了

    修改程序然后再检测通过

    最终程序:

     补一个用junit的,虽然这个实验要求上没有

    测试代码如下:

    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));
        }
        @Test
        public void testExceptions(){//测试出错情况
            assertEquals("错误", MyUtil.percentage2fivegrade(105));
            assertEquals("错误", MyUtil.percentage2fivegrade(-55));
        }
        @Test
        public void testBoundary(){//测试边界情况
            assertEquals("不及格", MyUtil.percentage2fivegrade(0));
            assertEquals("及格", MyUtil.percentage2fivegrade(60));
            assertEquals("中等", MyUtil.percentage2fivegrade(70));
            assertEquals("良好", MyUtil.percentage2fivegrade(80));
            assertEquals("优秀", MyUtil.percentage2fivegrade(90));
            assertEquals("优秀", MyUtil.percentage2fivegrade(100));
        }
    
    
    }

    代码全部通过!

    面向对象程序设计-2

    实验要求:

    • 参考积极主动敲代码,使用JUnit学习Java >http://www.cnblogs.com/rocedu/p/4837092.html
    • 参考>http://www.cnblogs.com/rocedu/p/6736847.html
    • 以 TDD的方式研究学习StringBuffer,提交你的单元测试用例和测试通过的截图,截图要加上学号水印。

    实验步骤:

    其实我并不喜欢在idea上面编程,但是思考之后确实IDEA更便于发现错误,工具更多,比如这次的junit直接在IDEA中配置就可以了

    还有TDD方法第一个例子

    然后就开始用JUNIT对StringBufferDemo动手啦

    1 正式代码

    public class StringBufferDemo{
        StringBuffer str=new StringBuffer();
        StringBufferDemo(StringBuffer str){
            this.str=str;
        }
        public char charAt(int i){
            return str.charAt(i);
        }
        public int capacity(){
            return str.capacity();
        }
        public int length(){
            return str.length();
        }
        public int indexOf(String buf) {
            return str.indexOf(buf);
        }
    }

    2 测试代码

    import junit.framework.TestCase;
    import org.junit.Test;
    
    public class StringBufferDemoTest extends TestCase {
        StringBuffer a = new StringBuffer("StringBuffer");//测试12个字符(<=16)
        StringBuffer b = new StringBuffer("StringBufferStringBuffer");//测试24个字符(>16&&<=34)
        StringBuffer c = new StringBuffer("StringBufferStringBufferStringBuffer");//测试36个字符(>34)
        @Test
        public void testcharAt(){
            assertEquals('S',a.charAt(0));
            assertEquals('B',a.charAt(6));
            assertEquals('r',a.charAt(11));
        }
        @Test
        public void testcapacity(){
            assertEquals(28,a.capacity());
            assertEquals(40,b.capacity());
            assertEquals(52,c.capacity());
        }
        @Test
        public void testlength(){
            assertEquals(12,a.length());
            assertEquals(24,b.length());
            assertEquals(36,c.length());
        }
        @Test
        public void testindexOf(){
            assertEquals(0,a.indexOf("Str"));
            assertEquals(6,a.indexOf("Buff"));
            assertEquals(10,a.indexOf("er"));
        }
    }

    3 测试结果

    ALLPASS

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

    实验要求:
    参考http://www.cnblogs.com/rocedu/p/6736847.html
    对设计模式示例进行扩充,体会OCP原则和DIP原则的应用,初步理解设计模式
    让系统支持Float类,并在MyDoc类中添加测试代码表明添加正确,提交测试代码和运行结的截图,加上学号水印

    实验步骤:

    代码:

    abstract class Data { 
        abstract public void DisplayValue(); 
    }
    class Integer extends  Data {    
        int value; 
        Integer() {
             value=100; 
        }  
        public void DisplayValue(){
            System.out.println (value);
        } 
     }
    class Float extends  Data {
        float value;
        Float() {
            value=2.017531F;
        }
        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();
        }   
    }

    correct

    实验二 面向对象程序设计-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)

     

    实验步骤:

    代码:

    import java.util.Objects;
    import java.lang.Integer;
    
    public class Complex {
        double RealPart;
        double ImagePart;
        public Complex() {
        }
    
        public Complex(double R,double I)
        {
            RealPart = R;
            ImagePart = I;
    
        }
        public double getterRealPart(){
            return RealPart;
        }
        public double getterImagePart(){
            return ImagePart;
        }
    
        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 s = "";
            if(getterRealPart()==0&&getterImagePart()==0){
                s="0";
            }
            else if(getterRealPart()!=0&&getterImagePart()==0){
                s=s+getterRealPart();
            }
            else if (getterRealPart()==0&&getterImagePart()!=0){
                s=s+getterImagePart()+"i";
            }
            else
            {
                if(getterImagePart()<0){
                    s = s+getterRealPart()+getterImagePart()+"i";
                }
                else {
                    s = s+getterRealPart()+"+"+getterImagePart()+"i";
                }
    
            }
            return s;
        }
    
        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,RealPart*a.ImagePart + ImagePart*a.RealPart);
        }
        Complex ComplexDiv(Complex a) {
            return new Complex((RealPart * a.ImagePart + ImagePart * a.RealPart) / (a.ImagePart * a.ImagePart + a.RealPart * a.RealPart), (ImagePart * a.ImagePart + RealPart * a.RealPart) / (a.RealPart * a.RealPart + a.RealPart * a.RealPart));
        }
    }

    测试代码

    import junit.framework.TestCase;
    import org.junit.Test;
    
    public class ComplexTest extends TestCase {
        Complex b = new Complex(3,7);
        Complex c = new Complex(2,-5);
        @Test
        public void testComplexAdd(){
            assertEquals("5.0+2.0i",b.ComplexAdd(c)+"");
        }
        @Test
        public void testComplexMulti(){
            assertEquals("41.0-1.0i",b.ComplexMulti(c)+"");
        }
        @Test
        public void testComplexDiv(){
            assertEquals("-0.034482758620689655-3.625i",b.ComplexDiv(c)+"");
        }
        @Test
        public void testComplexSub(){
            assertEquals("1.0+12.0i",b.ComplexSub(c)+"");
        }
    
    }

    这个Div是因为选数不慎,但是已经修改了

    全部过关

    五:

    实验要求:

    使用[WhiteStarUML](http://whitestaruml.sourceforge.net/)对实验二中的代码进行建模,发类图的截图,加上学号水印。
    参考http://www.cnblogs.com/rocedu/p/6736847.html

    类图中只少两个类。

    实验步骤:

     

    实验过程中遇到的问题及其解决

    1:无论如何junit没有效果总是红字显示我没有junit

    后来发现是因为我在一个文件夹里面总是考了两个相同的类(一个用来@TEST)

    解决方法:删除一个

    2:做TDD例子的时候总是会便用找不到类??

    后来发现是类名写错了,,卡了我好久想想觉得好笑

  • 相关阅读:
    上传并压缩图片
    C#使用一般处理程序(ashx)中session
    cookie记住用户名密码
    操作数组
    鼠标滚轮事件兼容写法
    table嵌套table,jquery获取tr个数
    网站性能调优实战-学相伴KuangStudy
    为什么fdisk分区第一个分区以63或者2048扇区开始?
    oracle分组查询,获取组内所有信息(拼接显式)
    oracle中对象类型搜集(object type)
  • 原文地址:https://www.cnblogs.com/lijinran/p/10723647.html
Copyright © 2020-2023  润新知