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

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

一、实验报告封面

课程:Java程序设计 班级:1652班 姓名:叶佺 学号:20165217

指导教师:娄嘉鹏 实验日期:2018年4月16日

实验时间:13:45 - 15:25 实验序号:实验二

实验名称:Java面向对象程序设计

二、实验内容

1初步掌握单元测试和TDD

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

3 初步掌握UML建模

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

5 了解设计模式

三、实验要求

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

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

3 实验报告中统计自己的PSP(Personal Software Process)时间;

4 严禁抄袭。

四、实验步骤

面向对象程序设计-1

  • 提交最后三个JUnit测试用例(正常情况,错误情况,边界情况)都通过的截图,截图上要有画图加水印,输入自己的学号
    本提交点考查JUnit会不会使用,测试用例至少要包含正常情况,错误情况,边界情况的测试。
  • 产品代码
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

  • 老师给的StringBuffer例子代码:
public static void main(String [] args){
       StringBuffer buffer = new StringBuffer();
       buffer.append('S');
       buffer.append("tringBuffer");
       System.out.println(buffer.charAt(1));
       System.out.println(buffer.capacity());
       System.out.println(buffer.length());
       System.out.println(buffer.indexOf("tring"));
       System.out.println("buffer = " + buffer.toString());

这四种方法需要测试:

  • charAt(int n):返回指定字符在字符串中的位置。
  • indexOf(String s):返回输入的子字符串的第一个字母在母字符串的位置
  • capacity():是当前实体的实际容量。
  • length():实体中存放的字符序列的长度。

测试代码如下:

import junit.framework.TestCase;
import org.testng.annotations.Test;
public class StringBufferDemoTest extends TestCase {
StringBuffer a= new StringBuffer("String");
StringBuffer b = new StringBuffer("StringBuffer");
@Test
public void testcharAt() throws Exception{
    assertEquals('S',a.charAt(0));
    assertEquals('g',a.charAt(5));
}
@Test
public void testcapacity() throws Exception{
assertEquals(22,a.capacity());
    assertEquals(28,b.capacity());
}
@Test
public void testlength() throws Exception{
    assertEquals(6,a.length());
    assertEquals(12,b.length());
}
@Test
public void testindexOf() throws Exception{
    assertEquals(0,a.indexOf("Str"));
    assertEquals(6,b.indexOf("Bu"));
}
}

测试截图:

面向对象程序设计-3

实验要求:

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

测试截图:

面向对象程序设计-4

本次实验任务:

  • 使用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)


测试图如下:

面向对象程序设计-5

实验要求:

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

测试图如下:

五、实验体会

  • 实验刚开始遇到很多问题,比如Junit没有安装,无法进行单元测试等等,不过在与同学探讨的、网络查询中一一解决。之后就按照老师的博客中的步骤做就行了。在实验过程中学会了以TDD的方式开发新类,经过一些联系,初步了解了设计模式,收获还是挺大的。
posted @ 2018-04-22 21:43  叶佺  阅读(244)  评论(0编辑  收藏  举报