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

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

实验内容

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

    实验步骤

    (一)单元测试

    (1) 三种代码: 伪代码、产品代码、测试代码。

    伪代码与具体编程语言无关,伪代码从意图层面来解决问题,最终,伪代码是产品代码最自然的、最好的注释。

    产品代码



    增加对负数下测试:



    我们对输入为“0,60,70,80,90,100”这些边界情况进行测试:



    我们发现边界情况中输入100时有一个Bug。我们修改MyUtil.java,把判断优秀的条件中包含输入为100的情况

    修改bug后测试:

TDD

先写测试代码,然后再写产品代码的开发方法叫“测试驱动开发”(TDD)。

TDD的一般步骤如下:

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

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

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

4、编写产品代码

5、测试通过

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

7、循环完成所有功能的开发

TDD的编码节奏是:

1、增加测试代码,JUnit出现红条

2、修改产品代码

3、JUnit出现绿条,任务完成

(由于提前阅读了老师的学习指导,直接选择了绿条正确做法。)

做法如截图

实验2-3

步骤:来自http://www.cnblogs.com/rocedu/p/6736847.html

用自己的学号%6进行取余运算,根据结果进行代码扩充:

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

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

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

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

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

5:让系统支持Double类,并在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 Byte extends Data {

byte value;

Byte() {

value=1;

}

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 ByteFactory extends Factory {

public Data CreateDataObject(){

return new Byte();

}

}

//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 ByteFactory());

d.DisplayData();

}

}

测试结果如下:

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

实验步骤:

产品代码

public class Complex{

private double r;

private double i;

public Complex(double r, double i) {
this.r = r;
this.i = i;
} public static double getRealPart(double r) {
return r;
} public static double getImagePart(double i) {
return i;
} public Complex ComplexAdd(Complex a) {
return new Complex(r + a.r, i + a.i);
}
public Complex ComplexSub(Complex a) {
return new Complex(r - a.r, i - a.i);
}
public Complex ComplexMulti(Complex a) {
return new Complex(r * a.r - i * a.i, r * a.i + i * a.r);
}
public Complex ComplexDiv(Complex a) {
return new Complex((r * a.i + i * a.r)/(a.i * a.i + a.r * a.r), (i * a.i + r * a.r)/(a.i * a.i + a.r * a.r));
} public String toString() {
String s = " ";
if (i > 0)
s = r + "+" + i + "i";
if (i == 0)
s = r + "";
if (i < 0)
s = r + " " + i + "i";
return s;
}

}

测试代码:

import junit.framework.TestCase;

import org.junit.Test;

public class ComplexTest extends TestCase {

Complex c1 = new Complex(1, 2);

Complex c2 = new Complex(2, 2);

Complex c3 = new Complex(2,0);

@Test

public void testgetRealPart() throws Exception {

assertEquals(-1.1, Complex.getRealPart(-1.1));

assertEquals(6.0, Complex.getRealPart(6.0));

assertEquals(0.0, Complex.getRealPart(0.0));

}

@Test

public void testgetImagePart() throws Exception {

assertEquals(-1.1, Complex.getImagePart(-1.1));

assertEquals(6.0, Complex.getImagePart(6.0));

assertEquals(0.0, Complex.getImagePart(0.0));

}

@Test

public void testComplexAdd() throws Exception {

assertEquals("3.0+4.0i", c1.ComplexAdd(c2).toString());

assertEquals("3.0+2.0i", c1.ComplexAdd(c3).toString());

assertEquals("4.0+2.0i", c2.ComplexAdd(c3).toString());

}

@Test

public void testComplexSub() throws Exception {

assertEquals("-1.0", c1.ComplexSub(c2).toString());

assertEquals("-1.0+2.0i", c1.ComplexSub(c3).toString());

assertEquals("0.0+2.0i", c2.ComplexSub(c3).toString());

}

@Test

public void testComplexMulti() throws Exception {

assertEquals("-2.0+6.0i", c1.ComplexMulti(c2).toString());

assertEquals("2.0+4.0i", c1.ComplexMulti(c3).toString());

assertEquals("4.0+4.0i", c2.ComplexMulti(c3).toString());

}

@Test

public void testComplexComplexDiv() throws Exception {

assertEquals("0.75+0.75i", c1.ComplexDiv(c2).toString());

assertEquals("1.0+0.5i", c1.ComplexDiv(c3).toString());

assertEquals("1.0+1.0i", c2.ComplexDiv(c3).toString());

}

}

测试结果:

实验2-5:对实验2代码进行建模结果如下:

#20175201 实验二:Java面向对象程序设计的更多相关文章

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

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

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

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

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

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

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

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

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

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

  6. JAVA课程实验报告 实验二 Java面向对象程序设计

    北京电子科技学院(BESTI) 实     验    报     告 课程:Java程序设计  班级:1353  姓名:韩玉琪  学号:20135317 成绩:             指导教师:娄嘉 ...

  7. 20145225唐振远 实验二 "Java面向对象程序设计"

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

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

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

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

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

  10. 20162317袁逸灏 第八周实验报告:实验二 Java面向对象程序设计

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

随机推荐

  1. 动态加载机Servlet容器加载器

    动态加载是Servlet 3.0中的新特性,它可以实现在 不重启Web应用的情况下加载新的Web对象(Servlet. Filter.Listener).Servlet容器加载器也是Servlet 3 ...

  2. SpringMVC的入门示例

    1.配置流程说明 第一步:导入包 第二步:构建一个请求,编写请求页面 第三步:配置核心控制器 第四步:构建一个业务控制器 第五步:编写Spring配置文件 第六步:编写一个返回页面 2.配置流程--- ...

  3. 【微信小程序】 wx:if 与 hidden(隐藏元素)区别

    wx:if 与 hidden 都可以控制微信小程序中元素的显示与否. 区别: wx:if 是遇 true 显示,hidden 是遇 false 显示. wx:if 在隐藏的时候不渲染,而 hidden ...

  4. vue项目移植tinymce踩坑

    转载:https://segmentfault.com/a/1190000012791569?utm_source=tag-newest 2019-2-18 貌似这篇文章帮了大家一些小忙最近tinym ...

  5. Windows Internals 笔记——字符和字符串处理

    1.自Windows NT起,Windows的所有版本都完全用Unicode来构建,调用Windows函数时,如果向它传入一个ANSI字符串,那么函数首先会把字符串转换为Unicode,再把结果传给操 ...

  6. 关于H5页面在iPhoneX适配

    ​1.  iPhoneX的介绍 屏幕尺寸 我们熟知的iPhone系列开发尺寸概要如下: △ iPhone各机型的开发尺寸 转化成我们熟知的像素尺寸: △ 每个机型的多维度尺寸 倍图其实就是像素尺寸和开 ...

  7. composer 常用操作

    1.search   查询 例如:composer search redis 2.show   展示 例如: composer show -all  predis/predis 3.require   ...

  8. vue中Prop父子传值方法

    在用vue做项目的过程中感觉很好玩,特做下笔记... 父组件中: <template> <div> <fpdx-modal :zbArr="polygonArr ...

  9. FC105 FC106 Scale功能块使用说明

    有一点不明白,这个跟传感器本身的分辨率什么关系? 为什么定死 极性和非极性的值是7648 和27648 FC105是处理模拟量(1~5V.4~20MA等信号)输入的功能块: 其中管脚的定义如下:IN- ...

  10. vue 监听路由变化

    方法一:通过 watch // 监听,当路由发生变化的时候执行 watch:{ $route(to,from){ console.log(to.path); } }, 或 // 监听,当路由发生变化的 ...