2018-2019-2 20175303 实验二 《Java开发环境的熟悉》实验报告

一、实验准备

1.了解掌握实验所要用到的三种代码

伪代码

产品代码

测试代码

2.IDEA中配置单元测试工具JUnit

进入IDEA,点击File->Setting

选择Plugins,点击Marketplace查找junit

选择JUnitGenerator V2.0,点击Install

二、实验内容

任务一

对MyUtil类进行测试,测试用例至少要包含正常情况,错误情况,边界情况的测试,提交都通过的截图,截图上要有画图加水印,输入自己的学号。

任务二:

以TDD的方式研究学习StringBuffer,提交单元测试用例和测试通过的截图,截图要加上学号水印。

任务三:

  • 对设计模式示例进行扩充,体会OCP原则和DIP原则的应用。
  • 用自己的学号%6进行取余运算,根据结果进行代码扩充:

    0: 让系统支持Byte类,并在MyDoc类中添加测试代码表明添加正确,提交测试代码和运行结的截图,加上学号水印

    1: 让系统支持Short类,并在MyDoc类中添加测试代码表明添加正确,提交测试代码和运行结的截图,加上学号水印

    2: 让系统支持Boolean类,并在MyDoc类中添加测试代码表明添加正确,提交测试代码和运行结的截图,加上学号水印

    3: 让系统支持Long类,并在MyDoc类中添加测试代码表明添加正确,提交测试代码和运行结的截图,加上学号水印

    4: 让系统支持Float类,并在MyDoc类中添加测试代码表明添加正确,提交测试代码和运行结的截图,加上学号水印

    5: 让系统支持Double类,并在MyDoc类中添加测试代码表明添加正确,提交测试代码和运行结的截图,加上学号水印
  • 我学号为11,故任务:让系统支持Double类,并在MyDoc类中添加测试代码表明添加正确,提交测试代码和运行结的截图,加上学号水印。

任务四:

以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)

任务五:

  • 使用WhiteStarUML对实验二中的代码进行建模,发类图的截图,加上学号水印
  • 类图中只少两个类
  • 类,继承,接口实现,组合在UML中表达

三、实验代码及截图

任务一

伪代码:

百分制转五分制:
如果成绩小于60,转成“不及格”
如果成绩在60与70之间,转成“及格”
如果成绩在70与80之间,转成“中等”
如果成绩在80与90之间,转成“良好”
如果成绩在90与100之间,转成“优秀”
其他,转成“错误”

待测试代码:

        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 "错误";
}
}

测试代码:

import org.junit.Test;
import junit.framework.TestCase; 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 testExceptions() {
assertEquals("错误",MyUtil.percentage2fivegrade(-80));
assertEquals("错误",MyUtil.percentage2fivegrade(125));
}
@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));
}
}

任务二

以TDD的方式研究学习StringBuffer:

1.TDD的测试步骤如下:

•明确当前要完成的功能,记录成一个测试列表

•快速完成编写针对此功能的测试用例

•测试代码编译不通过(没产品代码呢)

•编写产品代码

•测试通过

•对代码进行重构,并保证测试通过(重构下次实验练习)

•循环完成所有功能的开发

老师给出的代码:

public class StringBufferDemo{
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.indexOf("tring"));
System.out.println("buffer = " + buffer.toString());
}
}

测试代码

import org.junit.Assert;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException; public class StringBufferDemoTest {
StringBuffer str12 = new StringBuffer("hereare12chr");
StringBuffer str24 = new StringBuffer("Here are 24 characters!!");
StringBuffer str36 = new StringBuffer("Surprise!!! Here are 36 characters!!"); @Test
public void testcharAt(){
Assert.assertEquals('h', str12.charAt(0));
Assert.assertEquals('a', str24.charAt(5));
} @Rule
public ExpectedException thrown= ExpectedException.none();
@Test
public void testcharAtException(){
thrown.expect(StringIndexOutOfBoundsException.class);
str36.charAt(40);
} @Test
public void testlength(){
Assert.assertEquals(12, str12.length());
Assert.assertEquals(24, str24.length());
Assert.assertEquals(36, str36.length());
} @Test
public void testcapacity(){
Assert.assertEquals(28, str12.capacity());
Assert.assertEquals(40, str24.capacity());
Assert.assertEquals(52, str36.capacity());
Assert.assertEquals(82,str24.append("here are 22 characters").capacity());
} @Test
public void testindex(){
Assert.assertEquals(4, str12.indexOf("a"));
Assert.assertEquals(9, str24.indexOf("24"));
Assert.assertEquals(-1, str36.indexOf("?"));
}
}

任务三

让系统支持Double类,并在MyDoc类中添加测试代码表明添加正确,提交测试代码和运行结的截图,加上学号水印

任务四

以TDD的方式开发一个复数类Complex

  • 在Complex类中设置构造方法public myComplex(double R,double I),设置实部与虚部

  • 实现加法myComplex ComplexAdd(myComplex a)

  • 实现减法myComplex ComplexSub(myComplex a)

  • 实现乘法myComplex ComplexMulti(myComplex a)

  • 实现除法myComplex ComplexDiv(myComplex a)

  • 重写equals()方法和toString()方法

    待测试代码:

public class myComplex {
// 定义属性并生成getter,setter
double RealPart;
double ImagePart;
// 定义构造函数
myComplex(double R,double I){
RealPart=R;
ImagePart=I;
}
// 定义公有方法:加减乘除
myComplex ComplexAdd(myComplex a){
return new myComplex(RealPart+a.RealPart,ImagePart+a.ImagePart);
}
myComplex ComplexSub(myComplex a){
return new myComplex(RealPart-a.RealPart,ImagePart-a.ImagePart);
}
myComplex ComplexMulti(myComplex a){
return new myComplex(RealPart*a.RealPart-ImagePart*a.ImagePart,RealPart*a.ImagePart+a.RealPart*ImagePart);
}
myComplex ComplexDiv(myComplex a){
return new myComplex((RealPart*a.RealPart+ImagePart*a.ImagePart)/(a.RealPart*a.RealPart+a.ImagePart*a.ImagePart),(-RealPart*a.ImagePart+a.RealPart*ImagePart)/(a.RealPart*a.RealPart+a.ImagePart*a.ImagePart));
}
//Override Object
public boolean equals(Object obj){
if(obj==null)
return false;
else {
myComplex m = (myComplex) obj;
if (m.RealPart == RealPart && m.ImagePart == ImagePart)
return true;
else return false;
}
} public String toString(){
String output;
if(ImagePart==0){
return output=RealPart+"";
}
else if(RealPart==0 && ImagePart!=0){
return output=ImagePart+"i";
}
else if(ImagePart>0) {
return output=RealPart+"+"+ImagePart+"i";
}
else return output=RealPart+""+ImagePart+"i";
}
}

测试代码:

import junit.framework.TestCase;
import org.junit.Test; public class myComplexTest extends TestCase {
myComplex a = new myComplex(6,2);
myComplex b = new myComplex(5,1);
myComplex c = new myComplex(4,-2);
myComplex d = new myComplex(3,1);
myComplex e = new myComplex(6,2);
//myComplex e = new myComplex(2,4);
@Test
public void testEquals() {
assertEquals(false,a.equals(b));
assertEquals(true,a.equals(e));
}
@Test
public void testComplexAdd() throws Exception {
assertEquals("11.0+3.0i",b.ComplexAdd(a).toString());
assertEquals("10.0",a.ComplexAdd(c).toString());
assertEquals("9.0-1.0i",b.ComplexAdd(c).toString());
}
@Test
public void testComplexSub() {
assertEquals("-1.0-1.0i",b.ComplexSub(a).toString());
assertEquals("2.0+4.0i",a.ComplexSub(c).toString());
assertEquals("2.0",b.ComplexSub(d).toString()); }
@Test
public void testComplexMulti() {
assertEquals("28.0+16.0i",b.ComplexMulti(a).toString());
assertEquals("28.0-4.0i",a.ComplexMulti(c).toString());
assertEquals("14.0+8.0i",b.ComplexMulti(d).toString());
}
@Test
public void testComplexDiv() {
assertEquals("2.0",a.ComplexDiv(d).toString());
assertEquals("1.0+1.0i",a.ComplexDiv(c).toString());
}
}

2018-2019-2 20175311 实验二 《Java开发环境的熟悉》实验报告的更多相关文章

  1. 20175316 盛茂淞 2018-2019-2 《Java程序设计》实验一 Java开发环境的熟悉 实验报告

    20175316 盛茂淞 2018-2019-2 <Java程序设计>实验一 Java开发环境的熟悉 实验报告 一.实验要求 1.使用JDK编译.运行简单的Java程序: 2.使用IDEA ...

  2. 20145308刘昊阳 《Java程序设计》实验一 Java开发环境的熟悉 实验报告

    20145308刘昊阳 <Java程序设计>实验一报告 实验名称 Java开发环境的熟悉 实验内容 使用JDK编译.运行简单的Java程序 2.使用Eclipse 编辑.编译.运行.调试J ...

  3. 20165327《Java程序设计》实验一 Java开发环境的熟悉 实验报告

    20165327<Java程序设计>实验二 <Java面向对象程序设计>实验报告 实验二 <Java面向对象程序设计> 一.实验报告封面 课程:Java程序设计 班 ...

  4. 20165205 实验一 java开发环境的熟悉 实验报告

    20165205 实验一 Java开发环境的熟悉 一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:刘喆君 学号:20165205 指导教师:娄嘉鹏 实验日期:2018年4月2日 实验 ...

  5. 20162327实验一Java开发环境的熟悉实验报告

    20162327 <程序设计与数据结构>第一次实验报告 基础知识 1.JDB的使用 使用JDB调试程序需要以下五个步骤: 1.设置断点 stop in 2.run 3.print 4.ne ...

  6. 20175208 实验一 Java开发环境的熟悉

    20175208 实验一 Java开发环境的熟悉 一.实验报告封面 课程:Java程序设计 班级:1752班 姓名:张家华  学号:20175208 指导教师:娄嘉鹏 实验日期:2019年4月2日 实 ...

  7. 20165336 实验一 Java开发环境的熟悉

    20165336 实验一 Java开发环境的熟悉 一.实验报告封面 课程:Java程序设计 班级:1653班 姓名:康志强 学号:20165336 指导教师:娄嘉鹏 实验日期:2018年4月2日 实验 ...

  8. 20155327实验一 Java开发环境的熟悉

    20155327实验一 Java开发环境的熟悉 实验内容 1.使用JDK编译.运行简单的java程序 2.使用IDEA编辑.编译.运行.调试java程序 实验步骤 1.使用JDK编译.运行简单的jav ...

  9. 20155231 java实验一 Java开发环境的熟悉

    20155231 java实验一 Java开发环境的熟悉 实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器> 课程: 完成实验.撰写实验 ...

  10. 20155317 2016-2017-2 《Java程序设计》实验一 Java开发环境的熟悉

    20155317 2016-2017-2 <Java程序设计>实验一 Java开发环境的熟悉 实验内容 使用JDK编译.运行简单的Java程序: 使用IDEA 编辑.编译.运行.调试Jav ...

随机推荐

  1. C\C++控制台程序隐藏方法总结

    学习计算机,往往先从Windows环境下学习编程,学习编程,往往从C学起,学习C,往往又从控制台程序学习,何为控制台,就是那个黑框白字的界面.对于这样一个最初认为奇陋无比而现在认为无所不能的编程平台, ...

  2. python中用psutil模块,yagmail模块监控CPU、硬盘、内存使用,阈值后发送邮件

    import yagmailimport psutildef sendmail(subject,contents): #连接邮箱服务器 yag = yagmail.SMTP(user='邮箱名称@16 ...

  3. wps 邮件 通讯小灵通 长沙杭州

    记得在天涯上看过一个热贴,关于贵族与世家的,文中提到号称当今贵族的六大世家,什么“汝南周氏”.“吴兴沈氏”之类,更有甚者,为了比拼,追本溯源,把孔子他老人家也抬了出来,号称孔夫子的多少多少代传人,当时 ...

  4. sqlite比较时间秒

    julianday(datetime('now','localtime'))*86400 -julianday("你的时间字段")*86400>0

  5. 两款不错的Linux密码生成工具

    先介绍最简单的方法,Linux自带的 $ strings /dev/urandom | | ; echo whucNWhr35W6ZP0MxrLQ $ /dev/random | base64 | t ...

  6. ln 软链

    ln -s a b 中的 a 就是源文件,b是链接文件名,其作用是当进入b目录,实际上是链接进入了a目录 如上面的示例,当我们执行命令   cd /gamestat/的时候  实际上是进入了 /hom ...

  7. 【leetcode】476. Number Complement

    problem 476. Number Complement solution1: class Solution { public: int findComplement(int num) { //正 ...

  8. JAVA日常之一

    一.JDK安装及环境变量设置 下载jdk安装包,如jdk-8u65-windows-x64.exe,点击安装,记住安装路径如E:\Program Files\Java\jdk1.8.0_65: 打开环 ...

  9. 测试那些事儿—selenium IDE 自动化测试

    浏览器 Firefox Setup 35.0.1 安装完成后设置菜单栏 关闭浏览器自动更新 插件配置(必备武器) FireBug Firebug是firefox下的一个扩展,能够调试所有网站语言,如H ...

  10. Go爬去以太坊的价格数据

    package main import ( "encoding/json" "errors" "fmt" "io/ioutil&q ...