• 20165301实验二java面向对象程序设计


    20165301实验二java面向对象程序设计

    实验目的与要求(提交点一):

    • 参考http://www.cnblogs.com/rocedu/p/6371315.html#SECUNITTEST完成单元测试的学习
    • 提交最后三个JUnit测试用例(正常情况,错误情况,边界情况)都通过的截图,截图上要有画图加水印,输入自己的学号
    • 测试用例至少要包含正常情况,错误情况,边界情况的测试

    实验内容及结果截图

    • 伪代码
    百分制转五分制:
    如果成绩小于60,转成“不及格”
    如果成绩在60与70之间,转成“及格”
    如果成绩在70与80之间,转成“中等”
    如果成绩在80与90之间,转成“良好”
    如果成绩在90与100之间,转成“优秀”
    其他,转成“错误”
    
    • 实验代码
    public class MyUtil {
        public static String percentage2fivegrade(int grade) {
            if(grade<0)
                return "错误";
            else if(grade<60)
                return "不及格";
            else if(grade<70)
                return "及格";
            else if(grade<80)
                return "中等";
            else if(grade<90)
                return "良好";
            else if(grade<=100)
                return "优秀";
            else
                return "错误";
        }
    }
    
    • 单元测试用例
    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));
        }
    }
    
    • 运行截图

    实验目的与要求(提交点二):

    • 参考 积极主动敲代码,使用JUnit学习Java
    • 以 TDD的方式研究学习StringBuffer
      提交你的单元测试用例和测试通过的截图,截图要加上学号水印

    实验内容及结果截图

    • 实验代码
    public class StringBufferDemo {
           public static void main(String [] args){
                   StringBuffer buffer = new StringBuffer(20);
                   buffer.append('S');
                   buffer.append("tringBuffer");
            //     System.out.println(buffer.charAt(1));
                   System.out.println(buffer.capacity());
            //     System.out.println(buffer.indexOf("tring12345"));
                   System.out.println("buffer = " + buffer.toString());
                   System.out.println(buffer.length());
              }
    }
    
    • 测试用例
    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() throws Exception{
            assertEquals('S',a.charAt(0));
            assertEquals('g',a.charAt(5));
            assertEquals('r',a.charAt(11));
        }
        @Test
        public void testcapacity() throws Exception{
            assertEquals(28,a.capacity());
            assertEquals(40,b.capacity());
            assertEquals(52,c.capacity());
        }
        @Test
        public void testlength() throws Exception{
            assertEquals(12,a.length());
            assertEquals(24,b.length());
            assertEquals(36,c.length());
        }
        @Test
        public void testindexOf() throws Exception{
            assertEquals(0,a.indexOf("Str"));
            assertEquals(5,a.indexOf("gBu"));
            assertEquals(10,a.indexOf("er"));
        }
    }
    
    
    • 运行截图

    实验要求(提交点三):

    • 参考http://www.cnblogs.com/rocedu/p/6736847.html对设计模式示例进行扩充,体会OCP原则和DIP原则的应用,初步理解设计模式
    • 让系统支持Boolean类,并在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 Short extends Data {
        short value;
        Short() {
            value = 5219;
        }
        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 ShortFactory extends Factory {
        public Data CreateDataObject(){
            return new Short();
        }
    }
    //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 ShortFactory());
            d.DisplayData();
        }
    }
    
    • 运行截图

    实验要求(提交点4)

    // 定义属性并生成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 Complex(){
            RealPart = 0;
            ImagePart = 1;
        }
        public Complex(double R,double I){
            ImagePart = I;
            RealPart = R;
        }
    
        //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);
        }
        Complex ComplexDiv(Complex a) {
            if(a.RealPart==0||a.ImagePart==0) {
                System.out.println("被减数不能为0");
                return new Complex();
            }
    
            double d = Math.sqrt(a.RealPart*a.RealPart)+Math.sqrt(a.ImagePart*a.ImagePart);
            return new Complex((RealPart*a.RealPart+ImagePart*a.ImagePart)/d,Math.round((RealPart*a.ImagePart-ImagePart*a.RealPart)/d));
        }
    }
    
    • 测试用例
    import static org.junit.Assert.*;
    import org.junit.Test;
    import junit.framework.TestCase;
    public class ComplexTest extends TestCase {
        Complex complex = new Complex(1,1);
        @Test
        public void testAdd(){
            assertEquals(new Complex(3.3,3.4), complex.ComplexAdd(new Complex(2.3,2.4)));
        }
        //测试加法
        @Test
        public void testSub(){
            assertEquals(new Complex(-5.3,-2.4), complex.ComplexSub(new Complex(6.3,3.4)));
        }
        //测试减法
        @Test
        public void testMulti(){
            assertEquals(new Complex(3.0,2.0), complex.ComplexMulti(new Complex(3.0,2.0)));
        }
        //测试乘法
        @Test
        public void testDiv(){
            assertEquals(new Complex(1.0,1.0), complex.ComplexDiv(new Complex(1.0,1.0)));
            assertEquals(new Complex(0.0,0.0), complex.ComplexDiv(new Complex(1.0,0.0)));
            //assertEquals(new Complex(0.0,0.0), complex.ComplexDiv(new Complex(3,4)));
            //边缘测试
        }
        @Test
        public void testequals(){
            assertEquals(true, complex.equals(new Complex(1.0,1.0)));
        }
        //测试判断相等
    }
    
    • 运行截图

    实验提交点5

    1.实验要求

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

    • 实验截图

    实验体会与总结

    • 本次实验过后我更加理解了java语言面向对象的特点,同时学会了Junit的使用,对uml图有了初步了解但还没有掌握完全。需要进行更多的练习,才能更加熟悉。
    步骤 耗时 百分比
    需求分析 15 11.5%
    设计 20 15.3%
    代码实现 50 38.4%
    测试 30 23.0%
    分析总结 15 11.5%
  • 相关阅读:
    14_java之变量|参数|返回值|修饰符
    NYOJ 202 红黑树 (二叉树)
    NYOJ 138 找球号(二) (哈希)
    NYOJ 136 等式 (哈希)
    NYOJ 133 子序列 (离散化)
    NYOJ 129 树的判定 (并查集)
    NYOJ 117 求逆序数 (树状数组)
    NYOJ 93 汉诺塔 (数学)
    HDU 2050 折线分割平面 (数学)
    天梯赛L2-008 最长对称子串 (字符串处理)
  • 原文地址:https://www.cnblogs.com/CTF5301/p/8906889.html
Copyright © 2020-2023  润新知