实验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. 对Java中的异常的理解

    1.What is exception in Java? Java使用异常描述程序中可能出现的不正常情况.这个不正常可以是java认为的不正常,也可以是你主观上的出乎意料(自定义异常).总而言之,异常 ...

  2. 寄存器简介 与 ebp esp

    http://www.cnblogs.com/zhuyuanhao/archive/2012/10/16/3262870.html 32位CPU所含有的寄存器有:4个数据寄存器(EAX.EBX.ECX ...

  3. Vue实现购物小球抛物线

    .shop{ position: fixed; top: 300px; left: 40px; } .ball{ position: fixed; left: 32px; bottom: 22px; ...

  4. 32、SpringBoot-整合Dubbo

    分布式应用 在分布式系统中,国内常用zookeeper+dubbo组合,而Spring Boot推荐使用全栈的Spring, Spring Boot+Spring Cloud. 分布式系统: Zook ...

  5. [运维笔记] Nginx编译安装

    yum -y install pcre-devel.x86_64 yum -y install openssl openssl-devel.x86_64 useradd www -s /sbin/no ...

  6. IE6/IE7不支持first-child的解决办法

    #sidebar li:first-child{ border-top-style:none; } #sidebar li{ border-top-width:1px; border-top-styl ...

  7. valgrind massif内存分析[转]

    valgrind检查内存泄露 #valgrind   ./程序 内存泄漏问题,我们有memcheck工具来检查.很爽.但是有时候memcheck工具查了没泄漏,程序一跑,内存还是狂飙.这又是什么问题. ...

  8. HDU 1176 免费馅饼 (类似数字三角形的题,很经典,值得仔细理解的dp思维)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1176 免费馅饼 Time Limit: 2000/1000 MS (Java/Others)     ...

  9. FLV封装格式分析

    FLV官方文档:https://github.com/jiayayao/DataSheet/tree/master/media%20format/flv 一.FLV格式 FLV包括文件头(FLV he ...

  10. PPP interface for lwIP

    //原文 地址 :http://www.nongnu.org/lwip/2_0_x/group__ppp.html /* //协议说明,2017年6月29日14:19:18,suozhang PPP ...