实验1

实验内容

  • 参考 博客 完成单元测试的学习
  • 提交最后三个JUnit测试用例(正常情况,错误情况,边界情况)都通过的截图,截图上要有画图加水印,输入自己的学号
  • 本提交点考查JUnit会不会使用,测试用例至少要包含正常情况,错误情况,边界情况的测试

问题与解答

  • 1.运行不了测试类,出现如下问题:
  • 【解答】发现是因为建立的项目曾经进行了改地址的操作,中间可能出现了错误导致无法编译成功,重新建一个项目就好了。

截图

实验2

实验内容

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

代码

设计

在测试类方面,我测试了StringBuffer的charAt()、capacity、indexof()、toString、length方法,探究StringBuffer。

实现

StringBufferDemo类
public class StringBufferDemo {
StringBuffer buffer;
public static char BufferCharAt(StringBuffer buffer, int index) {
return buffer.charAt(index);
}
public static int BufferCapacity(StringBuffer buffer) {
return buffer.capacity();
}
public static int BufferLength(StringBuffer buffer) {
return buffer.length();
}
public static int BufferIndexOf(StringBuffer buffer, String str) {
return buffer.indexOf(str);
}
public static String BufferToString(StringBuffer buffer) {
return "buffer = " + buffer.toString();
}
}
StringBufferDemoTest测试类
import junit.framework.TestCase;
import org.junit.Test; public class StringBufferDemoTest extends TestCase {
StringBuffer buffer1 = new StringBuffer("StringBuffer");
StringBuffer buffer2 = new StringBuffer("StringBuffer StringBuffer");
StringBuffer buffer3 = new StringBuffer("StringBuffer StringBuffer StringBuffer");
@Test
public void testCharAt() {
assertEquals('t', StringBufferDemo.BufferCharAt(buffer1,1));
assertEquals('r', StringBufferDemo.BufferCharAt(buffer1,2));
assertEquals('i', StringBufferDemo.BufferCharAt(buffer1,3));
}
@Test
public void testCapacity() {
assertEquals(28, StringBufferDemo.BufferCapacity(buffer1));
assertEquals(41, StringBufferDemo.BufferCapacity(buffer2));
assertEquals(54, StringBufferDemo.BufferCapacity(buffer3));
}
@Test
public void testLength() {
assertEquals(12,StringBufferDemo.BufferLength(buffer1));
assertEquals(25,StringBufferDemo.BufferLength(buffer2));
assertEquals(38,StringBufferDemo.BufferLength(buffer3));
}
@Test
public void testIndexOf() {
assertEquals(1, StringBufferDemo.BufferIndexOf(buffer1, "tring"));
assertEquals(0, StringBufferDemo.BufferIndexOf(buffer1, "Str"));
assertEquals(-1, StringBufferDemo.BufferIndexOf(buffer1, "StR"));
assertEquals(-1, StringBufferDemo.BufferIndexOf(buffer1, "M"));
assertEquals(8, StringBufferDemo.BufferIndexOf(buffer1, "f"));
}
@Test
public void testToString() {
assertEquals("buffer = StringBuffer", StringBufferDemo.BufferToString(buffer1));
}
}

截图

实验3

实验内容

  • 参考实验二 Java面向对象程序设计对设计模式示例进行扩充,体会OCP原则和DIP原则的应用,初步理解设计模式
  • 设计代码实现系统支持Float类,并在MyDoc类中添加测试代码表明添加正确,提交测试代码和运行结的截图,加上学号水印

代码

设计

扩展如图:

实现

// Server Classes
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=100;
}
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();
}
}
//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 IntFactory());
d.DisplayData();
d = new Document(new FloatFactory());
d.DisplayData();
}

截图

实验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)

代码

Complex类
public class Complex {
// 定义属性并生成getter,setter
private double RealPart;
private double ImagePart; public double getterRealPart() {
return this.RealPart;
}
public double getterImagePart() {
return this.ImagePart;
}
public void setterRealPart(double RealPart) {
this.RealPart = RealPart;
}
public void setterImagePart(double ImagePart) {
this.ImagePart = ImagePart;
}
// 定义构造函数
public Complex() {
this.RealPart = 0;
this.ImagePart = 0;
}
public Complex(double R,double I) {
this.RealPart = R;
this.ImagePart = I;
} //Override Object
public boolean equals(Object obj) {
if(this==obj) {
return true;
}
if(!(obj instanceof Complex)) {
return false;
}
Complex complex = (Complex) obj;
if(getterRealPart()!=complex.getterRealPart()) {
return false;
}
if(getterImagePart()!=complex.getterImagePart()) {
return false;
}
return true;
}
public String toString() {
if(getterImagePart()>0) return getterRealPart() + "+" + getterImagePart() + "i";
else if(getterImagePart()==0) return "" + getterRealPart();
else return getterRealPart() + "" + getterImagePart() + "i";
} // 定义公有方法:加减乘除
Complex ComplexAdd(Complex a) {
this.setterImagePart(this.getterImagePart()+a.getterImagePart());
this.setterRealPart(this.getterRealPart()+a.getterRealPart());
return this;
}
Complex ComplexSub(Complex a) {
this.setterImagePart(this.getterImagePart()-a.getterImagePart());
this.setterRealPart(this.getterRealPart()-a.getterRealPart());
return this;
}
Complex ComplexMulti(Complex a) {
this.setterImagePart(a.getterImagePart()*this.getterImagePart() - a.getterRealPart()*this.getterRealPart());
this.setterRealPart(a.getterImagePart()*this.getterRealPart() + a.getterRealPart()*this.getterImagePart());
return this;
}
Complex ComplexDiv(Complex a) {
Complex c = new Complex();
if(a.equals(c)) { //注意0
System.out.println("Error! Dividend can't be 0!");
}
else {
this.setterImagePart(this.getterImagePart()/a.getterImagePart());
this.setterRealPart(this.getterRealPart()/a.getterRealPart());
}
return this;
}
}
ComplexTest测试类
import junit.framework.TestCase;
import org.junit.Test; public class ComplexTest extends TestCase {
Complex a = new Complex(2, 1);
Complex b = new Complex(1,2);
Complex c = new Complex();
@Test
public void testAdd() {
c = a.ComplexAdd(b);
assertEquals("3.0+3.0i", c.toString());
}
@Test
public void testSub() {
c = a.ComplexSub(b);
assertEquals("1.0-1.0i", c.toString());
}
@Test
public void testMulti() {
c = a.ComplexMulti(b);
assertEquals("4.0", c.toString());
}
@Test
public void testDiv() {
c = a.ComplexDiv(c);
assertEquals("2.0+1.0i", c.toString());
c = a.ComplexDiv(b);
assertEquals("2.0+0.5i", c.toString());
}
}

截图

实验5

实验内容

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

    类图中只少两个类
  • 类,继承,接口实现,组合在UML中表达

截图

参考资料

20155316 实验二《Java面向对象程序设计》实验报告的更多相关文章

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

    20145213<Java程序设计>实验二Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装,继承,多态 初步掌握UML建模 熟悉S.O. ...

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

    20145206<Java程序设计>实验二Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O. ...

  3. 20145308刘昊阳 《Java程序设计》实验二 Java面向对象程序设计 实验报告

    20145308刘昊阳 <Java程序设计>实验二 Java面向对象程序设计 实验报告 实验名称 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面相对象三要素:封 ...

  4. 实验二Java面向对象程序设计实验报告(2)

    实验二 Java面向对象程序设计 实验概述: 课程:程序设计与数据结构 班级:1623班 姓名: 邢天岳 学号:2309 指导老师:娄老师 王老师 实验日期:2017.4.16 实验名称: Java面 ...

  5. 实验二 Java面向对象程序设计实验报告

    实验二 Java面向对象程序设计 实验内容 1.初步掌握单元测试和TDD 2.理解并掌握面向对象三要素:封装.继承.多态 3.初步掌握UML建模 4.熟悉S.O.L.I.D原则 5.了解设计模式 实验 ...

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

    20145326<Java程序设计>实验二Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O. ...

  7. 20155217 实验二 Java面向对象程序设计 实验报告

    20155217 实验二 Java面向对象程序设计 实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模 ...

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

    20145219 <Java程序设计>实验二 Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S. ...

  9. 20162305 实验二 Java面向对象程序设计 实验报告

    20162305 实验二 Java面向对象程序设计 实验报告 实验内容 1.初步掌握单元测试和TDD 2.理解并掌握面向对象三要素:封装.继承.多态 3.初步掌握UML建模 4.熟悉S.O.L.I.D ...

  10. 20145239杜文超 《Java程序设计》实验二 Java面向对象程序设计实验报告

    20145239 <Java程序设计>实验二 Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S. ...

随机推荐

  1. Python 处理脚本的命令行参数(二):使用click

    安装click pip install click 使用步骤 使用@click.command() 装饰一个函数,使之成为命令行接口 使用@click.option() 等装饰函数,为其添加命令行选项 ...

  2. 5、Node.js 回调函数

    内容:回调函数:阻塞/同步.非阻塞.和异步区别:阻塞和非阻塞代码实例 Node.js 回调函数Node.js 异步编程的直接体现就是回调.异步编程依托于回调来实现,但不能说使用了回调后程序就异步化了. ...

  3. struts配置中的常量定义

    一.常量可以在struts.xml或struts.properties中配置,建议在struts.xml中配置,两种配置方式如下: (1)在struts.xml文件中配置常量 <struts&g ...

  4. java aopalliance-1.0.jar这个包是做什么用的?

    这个包是AOP联盟的API包,里面包含了针对面向切面的接口.通常Spring等其它具备动态织入功能的框架依赖此包.

  5. SOJ 1085 SCU 简单计算几何

    BackGroud Year 2003不知你是否注意到,四川大学每年都会在各宿舍楼里放老鼠药,以解决学生宿舍的老鼠问题. 今年,学校的领导为了更好的展开灭鼠的行动,引进了一项新的技术:SCU(Supe ...

  6. 随手练——大量级阶乘 - HDU-2674 N!Again

     N!Again Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Su ...

  7. 【luogu P1850 换教室】 题解

    题目链接:https://www.luogu.org/problemnew/show/P1850 难的不在状态上,难在转移方程. (话说方程写错居然还有84分= =) #include <cst ...

  8. LINUX下安装pcre出现WARNING: 'aclocal-1.15' is missing on your system错误的解决办法

    1.下载安装包 wget https://ftp.gnu.org/gnu/automake/automake-1.15.tar.gz 2.解压 tar -xzvf automake-1.15.tar. ...

  9. Python 学习笔记(十四)Python类(二)

    创建简单的类 新式类和经典类(旧式类) Python 2.x中默认都是经典类,只有显式继承了object才是新式类 Python 3.x中默认都是新式类,经典类被移除,不必显式的继承object 新式 ...

  10. oracle同义词语句备份

    --创建同义词create synonym T_SYSTEM_USERDEPARTMENT for xtzl.T_SYSTEM_USERDEPARTMENT;--查询同义词SELECT * FROM ...