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

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

一、实验内容

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

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

3. 初步掌握UML建模

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

5. 了解设计模式

二、实验要求

1.没有Linux基础的同学建议先学习《Linux基础入门(新版)》《Vim编辑器》 课程。

2.完成实验、撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等)、解决办法(空洞的方法如“查网络”、“问同学”、“看书”等一律得0分)以及分析(从中可以得到什么启示,有什么收获,教训等)。报告可以参考范飞龙老师的指导

3. 严禁抄袭,有该行为者实验成绩归零,并附加其他惩罚措施。

4. 请大家先在实验楼中的~/Code目录中用自己的学号建立一个目录,代码和UML图要放到这个目录中,截图中没有学号的会要求重做,然后跟着下面的步骤练习

三、实验步骤

(一)使用JUnit单元测试

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 junit.framework.TestCase;        import org.junit.Test;

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 testException(){        assertEquals("错误",MyUtil.percentage2fivegrade(-55));        assertEquals("错误",MyUtil.percentage2fivegrade(115));    }    @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));    }

}```
3.测试截图

(二)TDD测试驱动开发1.知识点

TDD的一般步骤如下:

  • 明确当前要完成的功能,记录成一个测试列表
  • 快速完成编写针对此功能的测试用例
  • 测试代码编译不通过(没产品代码呢)
  • 编写产品代码
  • 测试通过
  • 对代码进行重构,并保证测试通过(重构下次实验练习)
  • 循环完成所有功能的开发
2.产品代码
```public class StringBufferDemo{    StringBuffer buffer = new StringBuffer();    public StringBufferDemo(StringBuffer buffer){        this.buffer = buffer;    }    public Character charAt(int i){        return buffer.charAt(i);    }    public int capacity(){        return buffer.capacity();    }    public int length(){        return buffer.length();    }    public int indexOf(String buf) {        return buffer.indexOf(buf);    }}```
3.测试代码
```import junit.framework.TestCase;        import org.junit.Test;

public class StringBufferDemoTest extends TestCase {    StringBuffer a = new StringBuffer("StringBuffer");    StringBuffer b = new StringBuffer("StringBufferStringBuffer");    StringBuffer c = new StringBuffer("StringBufferStringBufferStringBuffer");    StringBuffer d = new StringBuffer("StringBufferStringBufferStringBufferStr");    @Test    public void testcharAt() {        assertEquals(‘S‘,a.charAt(0));        assertEquals(‘e‘,b.charAt(10));        assertEquals(‘f‘,c.charAt(20));        assertEquals(‘B‘,d.charAt(30));    }    @Test    public void testcapacity() {        assertEquals(28,a.capacity());        assertEquals(40,b.capacity());        assertEquals(52,c.capacity());        assertEquals(55,d.capacity());    }    @Test    public void testindexOf() {        assertEquals(0,a.indexOf("Str"));        assertEquals(3,b.indexOf("ing"));        assertEquals(6,c.indexOf("Buffer"));        assertEquals(8,d.indexOf("ff"));    }    @Test    public void testlength() {        assertEquals(12,a.length());        assertEquals(24,b.length());        assertEquals(36,c.length());        assertEquals(39,d.length());    }}```
4.测试截图

(三)对设计模式示例进行扩充,让系统支持Boolean类1.产品代码
```abstract class Data{    public abstract void DisplayValue();}class Integer extends Data {    int value;    Integer(){        value=100;    }    public void DisplayValue(){        System.out.println(value);    }}class Boolean extends Data{    boolean value;    Boolean(){        value=true;    }    public void DisplayValue(){        System.out.println(value);    }}class Document {    Data pd;    Document() {        pd=new Boolean();    }    public void DisplayData(){        pd.DisplayValue();    }}public class MyDoc {    static Document d;    public static void main(String[] args) {        d = new Document();        d.DisplayData();    }}```
2.测试截图

(四)以TDD的方式开发一个复数类Complex1.产品代码
```public class Complex{    private double r;    private double i;

    public Complex(double r, double i) {        this.r = r;        this.i = i;    }

    public static double getRealPart(double r) {        return r;    }

    public static double getImagePart(double i) {        return i;    }

    public Complex ComplexAdd(Complex a) {        return new Complex(r + a.r, i + a.i);    }    public Complex ComplexSub(Complex a) {        return new Complex(r - a.r, i - a.i);    }    public Complex ComplexMulti(Complex a) {        return new Complex(r * a.r - i * a.i, r * a.i + i * a.r);    }    public Complex ComplexDiv(Complex a) {        return new Complex((r * a.i + i * a.r)/(a.i * a.i + a.r * a.r), (i * a.i + r * a.r)/(a.i * a.i + a.r * a.r));    }

    public String toString() {        String s = " ";        if (i > 0)            s =  r + "+" + i + "i";        if (i == 0)            s =  r + "";        if (i < 0)            s = r + " " + i + "i";        return s;    }}```2.测试代码
```import junit.framework.TestCase;import org.junit.Test;public class ComplexTest extends TestCase {    Complex c1 = new Complex(1, 2);    Complex c2 = new Complex(2, 2);    Complex c3 = new Complex(2,0);    @Test    public void testgetRealPart() throws Exception {        assertEquals(-1.1, Complex.getRealPart(-1.1));        assertEquals(6.0, Complex.getRealPart(6.0));        assertEquals(0.0, Complex.getRealPart(0.0));    }    @Test    public void testgetImagePart() throws Exception {        assertEquals(-1.1, Complex.getImagePart(-1.1));        assertEquals(6.0, Complex.getImagePart(6.0));        assertEquals(0.0, Complex.getImagePart(0.0));    }    @Test    public void testComplexAdd() throws Exception {        assertEquals("3.0+4.0i", c1.ComplexAdd(c2).toString());        assertEquals("3.0+2.0i", c1.ComplexAdd(c3).toString());        assertEquals("4.0+2.0i", c2.ComplexAdd(c3).toString());    }    @Test    public void testComplexSub() throws Exception {        assertEquals("-1.0", c1.ComplexSub(c2).toString());        assertEquals("-1.0+2.0i", c1.ComplexSub(c3).toString());        assertEquals("0.0+2.0i", c2.ComplexSub(c3).toString());    }    @Test    public void testComplexMulti() throws Exception {        assertEquals("-2.0+6.0i", c1.ComplexMulti(c2).toString());        assertEquals("2.0+4.0i", c1.ComplexMulti(c3).toString());        assertEquals("4.0+4.0i", c2.ComplexMulti(c3).toString());    }    @Test    public void testComplexComplexDiv() throws Exception {        assertEquals("0.75+0.75i", c1.ComplexDiv(c2).toString());        assertEquals("1.0+0.5i", c1.ComplexDiv(c3).toString());        assertEquals("1.0+1.0i", c2.ComplexDiv(c3).toString());    }}```3.测试截图

(五)UML类图

三、实验过程中遇到的问题

1.JUnit安装好后,在进行第一项任务时,代码无法运行,且JUnit和Test部分显示都为红色。

解决:单机红色的JUnit和Test,点击出现的小灯泡,IDEA就会帮助配置来解决问题。

2.

四、实验心得与体会

这次实验我们主要学习了利用JUnit和TDD学习Java,对我来说难度很大。在测试的过程中,因为自己刚刚初次接触,所以即使老师的博客讲解非常详细,自己还是出现了很多错误,要重新开始。这次实验让我遇到了很多困难,但最后实验按照要求的完成,让我的能力有了很大的提高,也有了更多的学好Java这门课的自信。在以后的学习中,我会更加耐心,继续紧跟老师的步伐,来更好的完成每项学习任务,加油。



原文地址:https://www.cnblogs.com/gexvyang/p/10733222.html

时间: 2024-10-08 12:35:07

2018-2019-2 20175202实验二《Java面向对象程序设计》实验报告的相关文章

20145326《Java程序设计》实验二Java面向对象程序设计实验报告

20145326<Java程序设计>实验二Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验步骤 一.单元测试 1. 三种代码·伪代码·产品代码·测试代码Example:需求:我们要在一个MyUtil类中解决一个百分制成绩转成“优.良.中.及格.不及格”五级制成绩的功能. 伪代码: 百分制转五分制: 如果成绩小于60,转成“不及格” 如果成绩在60与70之间,转成“

20175213《Java程序设计》实验二Java面向对象程序设计实验报告

实验内容 1.初步掌握单元测试和TDD 2.理解并掌握面向对象三要素:封装,继承,多态 3.初步掌握UML建模 4.熟悉S.O.L.I.D原则 5.了解设计模式 知识总结 1.伪代码 2.产品代码: ①Java编程时,程序员对类实现的测试叫单元测试. ②测试用例是为某个特殊目标而编制的一组测试输入.执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求. 3.先写测试代码,然后再写产品代码的开发方法叫"测试驱动开发"(TDD) 实验步骤 一. 单元测试 1.三种代码 ①伪

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

20165308 实验二 Java面向对象程序设计 实验二 Java面向对象程序设计 一.实验报告封面 课程:Java程序设计 班级:1653班 姓名:张士洋 学号:20165308 指导教师:娄嘉鹏 实验日期:2018年4月16日 实验时间:15:35 - 17:15 实验序号:实验二 实验名称:Java面向对象程序设计 实验内容及要求: 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验内容.步骤与体会 目

20135234马启扬 实验二 Java面向对象程序设计

北京电子科技学院(BESTI) 实     验    报     告 课程:Java程序设计  班级:1352  姓名:马启扬  学号:20135234 成绩:             指导教师:娄嘉鹏    实验日期:2015.5.7 实验密级:         预习程度:         实验时间:15:50--22:50 仪器组次:34         必修/选修: 选修            实验序号:02 实验名称:实验二 Java面向对象程序设计 实验内容 1. 初步掌握单元测试和T

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

20145237 实验二 “Java面向对象程序设计” 实验内容 • 理解并掌握面向对象三要素:封装.继承.多态 • 初步掌握UML建模 • 熟悉S.O.L.I.D原则 • 使用TDD设计实现复数类 实验步骤 单元测试 •1.三种代码: • 伪代码: 百分制转五分制: 如果成绩小于60,转成“不及格” 如果成绩在60与70之间,转成“及格” 如果成绩在70与80之间,转成“中等” 如果成绩在80与90之间,转成“良好” 如果成绩在90与100之间,转成“优秀” 其他,转成“错误” 产品代码: 3

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

实验二 Java面向对象程序设计 实验要求 1.提交最后三个JUnit测试用例(正常情况,错误情况,边界情况)都通过的截图,截图上要有画图加水印,输入自己的学号.本提交点考查JUnit会不会使用,测试用例至少要包含正常情况,错误情况,边界情况的测试. 2.使用JUnit学习Java,以 TDD的方式研究学习StringBuffer.提交你的单元测试用例和测试通过的截图,截图要加上学号水印.测试自己会不会写JUnit测试用例. 3.对设计模式示例进行扩充,体会OCP原则和DIP原则的应用,初步理解

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

20165332实验二 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器> 课程 完成实验.撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等).解决办法(空洞的方法如"查网络"

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

20165336 实验二 Java面向对象程序设计 一.实验报告封面 课程:Java程序设计 班级:1653班 姓名:康志强 学号:20165336 指导教师:娄嘉鹏 实验日期:2018年4月16日 实验时间:13:45 - 15:25 实验序号:实验二 实验名称:Java面向对象程序设计 实验目的与要求: 二.实验内容 1初步掌握单元测试和TDD 2 理解并掌握面向对象三要素:封装.继承.多态 3 初步掌握UML建模 4 熟悉S.O.L.I.D原则 5 了解设计模式 三.实验要求 1.没有Li

20145311实验二 &quot;Java面向对象程序设计&quot;

20145311实验二 "Java面向对象程序设计" 程序设计过程 实验内容 使用单元测试.TDD的方式设计实现复数类 Complex 编写代码: 1.首先设计实现复数类 Complex,复数类 Complex的方法设计有:复数类的定义.复数类输出的形式,复数的加法.减法.乘法.除法(除法因为涉及到一个整除的问题,所以会有些缺陷)运算. 2.伪代码:Complex类中会有一个复数的实部与虚部,以及复数输出的形式然后是四种运算:加法:实部相加,虚部相加,最后返回虚数的形式减法:实部相减,

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

北京电子科技学院(BESTI) 实     验    报     告 课程:Java程序设计 班级:1353  姓名:李海空  学号:20135329 成绩:             指导教师:娄嘉鹏      实验日期:2015.5.7 实验密级:         预习程度:         实验时间: 仪器组次:          必修/选修:            实验序号: 实验名称:       Java面向对象程序设计 实验目的与要求:实验内容 1. 初步掌握单元测试和TDD 2.