实验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. navicat连接PostgreSQL报:column “rolcatupdate” does not exist ...错误的解决办法

    avicat premium 连接PostgreSQL出现: column “rolcatupdate” does not exist ... 错误如图: 解决方案: 看看你的navicat 是否为最 ...

  2. BZOJ3208:花神的秒题计划Ⅰ(记忆化搜索DP)

    Description 背景[backboard]: Memphis等一群蒟蒻出题中,花神凑过来秒题……   描述[discribe]: 花花山峰峦起伏,峰顶常年被雪,Memphis打算帮花花山风景区 ...

  3. 【[TJOI2010]电影迷】

    一度自闭 这道题一看就是最小割无疑 我们假设源点\(S\)表示看这个电影,汇点\(T\)表示不看这部电影 如果一个电影的价值为正,我们就从源点点连一条容量为\(val\)的边,表示割掉这个边也就是选择 ...

  4. Django的模版引擎与模版使用

    Django的模版引擎与模版使用 模版引擎是模版响应的后端.模版指的是HTML.css,js等相关的文件.模版引擎是将这些表示层文件与数据相整合在一起,然后将整合后的数据给到响应类型判断采用一次性响应 ...

  5. PAT——1063. 计算谱半径

    在数学中,矩阵的“谱半径”是指其特征值的模集合的上确界.换言之,对于给定的n个复数空间的特征值{a1+b1i, ..., an+bni},它们的模为实部与虚部的平方和的开方,而“谱半径”就是最大模. ...

  6. 如何转换Xcode里打印的unicode编码日志

    转换Xcode里打印的unicode编码日志 1)打开Terminal 2)输入python 3)print(u'\u6027\u611f\u597d\u83b1\u575e\u5973\u661f\ ...

  7. 日志采集框架Flume

    前言 在一个完整的大数据处理系统中,除了hdfs+mapreduce+hive组成分析系统的核心之外,还需要数据采集.结果数据导出.任务调度等不可或缺的辅助系统,而这些辅助工具在hadoop生态体系中 ...

  8. 轻量ORM-SqlRepoEx (十六)最佳实践之Dapper(2)

    简介:SqlRepoEx是 .Net平台下兼容.NET Standard 2.0人一个轻型的ORM.解决了Lambda转Sql语句这一难题,SqlRepoEx使用的是Lambda表达式,所以,对c#程 ...

  9. redis 安装 配置 及启动

    linux下安装redis及其中遇到的问题的解决方法1.将下载好的压缩包放到/usr/local目录下# tar xzf redis-3.0.2.tar.gz# cd redis-3.0.2# mak ...

  10. JS基础——事件操作总结

    通用事件绑定   function bindEvent(elem,type,fn) { elem.addEventListener(type,fn); } let a =document.getEle ...