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

一、面向对象程序设计1——单元测试和TDD

1.实验要求

测试要点:本提交点考查JUnit会不会使用,测试用例至少要包含正常情况,错误情况,边界情况的测试

2.运行结果截图

3.代码链接:

MyUtil.java

MyUtilTest.java

二、面向对象程序设计2——利用TDD学习研究学习StringBuffer

1.实验要求

  • 参考 积极主动敲代码,使用JUnit学习Java (http://www.cnblogs.com/rocedu/p/4837092.html)

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

    测试要点:测试自己会不会写JUnit测试用例

2.实验结果截图

3.代码链接:

MyDoc.java

三、面向对象程序设计-3

1.实验要求:

实验二 Java面向对象程序设计(http://www.cnblogs.com/rocedu/p/4472842.html)

  • 参考http://www.cnblogs.com/rocedu/p/6736847.html
  • 对设计模式示例进行扩充,体会OCP原则和DIP原则的应用,初步理解设计模式

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

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

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

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

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

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

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

2.实验结果截图

3.代码链接:

Complex.java

ComplexTest.java

四、面向对象程序设计-4

1.实验要求:

  • 提交:单元测试代码和运行成功截图及码云上代码链接,截图要加上学号水印

  • 参考http://www.cnblogs.com/rocedu/p/6736847.html

  • 任务:以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)

2.实验过程:

(1)伪代码:

 属性:
定义实部;
定义虚部;
设置复数的实部;
设置复数的虚部;
返回复数的实部;
返回复数的虚部; 方法:
定义构造函数
定义公有方法(加减乘除)
将结果转化成字符串形式输出

(2)测试代码:

import junit.framework.TestCase;
import org.junit.Test; public class ComplexTest extends TestCase {
Complex c1 = new Complex(2,1);
Complex c2 = new Complex(0,3);
Complex c3 = new Complex(-1,-1);
@Test
public void testgetRealPart() throws Exception {
assertEquals(0.0,Complex.getRealPart(0.0));
assertEquals(-2.0,Complex.getRealPart(-2.0));
assertEquals(6.0,Complex.getRealPart(6.0));
}
@Test
public void testComplexAdd() throws Exception{
assertEquals("2.0+4.0i",c1.ComplexAdd(c2).toString());
assertEquals("-1.0+2.0i",c2.ComplexAdd(c3).toString());
assertEquals("1.0",c1.ComplexAdd(c3).toString());
}
@Test
public void testComplexSub() throws Exception{
assertEquals("2.0 -2.0i",c1.ComplexSub(c2).toString());
assertEquals("1.0+4.0i",c2.ComplexSub(c3).toString());
assertEquals("-3.0 -2.0i",c3.ComplexSub(c1).toString());
}
@Test
public void testComplexMulti() throws Exception {
assertEquals("-3.0+6.0i",c1.ComplexMulti(c2).toString());
assertEquals("3.0 -3.0i",c2.ComplexMulti(c3).toString());
assertEquals("-1.0 -3.0i",c3.ComplexMulti(c1).toString());
}
@Test
public void testComplexDiv() throws Exception {
assertEquals("0.6666666666666666+0.3333333333333333i",c1.ComplexDiv(c2).toString());
assertEquals("-1.5 -1.5i",c2.ComplexDiv(c3).toString());
assertEquals("-0.6 -0.6i",c3.ComplexDiv(c1).toString());
} }

(3)测试代码运行成功截图:

(4)产品代码:

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 c) {
return new Complex(r + c.r, i + c.i);
}
public Complex ComplexSub(Complex c) {
return new Complex(r - c.r, i - c.i);
}
public Complex ComplexMulti(Complex c) {
return new Complex(r * c.r - i * c.i, r * c.i + i * c.r);
}
public Complex ComplexDiv(Complex c) {
return new Complex((r * c.i + i * c.r)/(c.i * c.i + c.r * c.r), (i * c.i + r * c.r)/(c.i * c.i + c.r * c.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;
}
}

五、面向对象程序设计5

1.实验要求:

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

参考(http://www.cnblogs.com/rocedu/p/6736847.html)

2.实验截图:

六、实验过程中遇到的问题及解决过程

Q1:在安装Junit时,按照老师给的教程,点击Install JetBrains plugin... 然而并没有发现JUnitGenerator V2.0.

A1:经过我的学习伙伴的指点,并且自己在网上查找了一下,找到了原来学长写的一篇关于安装Junit的博客,原来,要点击如图所示的Browse repositories,就能搜到了,安装好就如图所示了。

Q2:在使用Junit学习时,发现在安装好junit.jar,仍然无法使用。

A2:在好友的指导下,在Everything中需要安装junit.jarjunit-4.12.jar,如图所示,在Everything中查找到两个包,并安装,安装好后如图所示。



Q3:在编写实验2的测试码时,出现了如图所示错误。

A3:经过错误提示,应该是下标越界问题,于是,我检查了代码中是否有错误的地方,结果发现了自己因马虎所犯下的错误,如图所示。所以,大家一定要引以为戒。

Q4:本次实验,娄老师让我们自己练习画UML图,之前自己一直没有太重视这个知识点,于是我借这个机会总结了一下易混符号的区别。

A4:

1.实线箭头和虚线箭头:

实线箭头代表的是关联关系。如果A类中的成员变量是用B类声明的对象,那么A和B的关系是关联关系,则是 B指向A。

虚线箭头代表的是依赖关系。如果A类中某个方法的参数是B类声明的对象或某个方法返回的数据类型是B类对象,那么A和B是依赖关系,则为B指向A。

2.实线空三角和虚线空三角:

实线空三角是指继承关系,起始端是子类的UML图,终点端是父类的UML图。

虚线空三角用于实现接口,UML通过使用虚线连接类和它所实现的接口,虚线的起始端是类,终点端是它所实现的接口。

七、实验总结与体会

本次实验内容较为丰富,首先我们学习了单元测试和TDD,学会利用这两种方式来编写程序,起初,老师给的博客中经常提到“测试码”一词,如今,自己也学会写测试码,对自己今后的编程很有好处。其次,自己对UML图的理解也更为深入,体会到了UML图与代码联系的紧密性,本次实验收获颇丰。

步骤 耗时 百分比
需求分析 12min 10%
设计 10min 8%
代码实现 48min 40%
测试 40min 34%
分析总结 10min 8%

20165203 实验二 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. 了解设计 ...

随机推荐

  1. array_unshift() 函数用于向数组插入新元素。新数组的值将被插入到数组的开头。

    <?php $a=array("a"=>"red","b"=>"green"); array_unsh ...

  2. python的内置模块time和datetime的方法详解以及使用(python内的time和datetime时间格式)

    time内置模块的方法 1.time() 时间戳 time() -> floating point number  浮点数 Return the current time in seconds ...

  3. Hadoop生态圈-Hbase的API常见操作

    Hadoop生态圈-Hbase的API常见操作 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.

  4. maven添加docker插件无法引入,运行时报错 No plugin found for prefix 'docker'

    maven 安装不上docker插件,运行 提示:docker:bulid时No plugin found for prefix 'docker' 原因是maven不能识别 docker-maven- ...

  5. sql server查询数据库的大小和各数据表的大小

    查询出来的结果中各字段的详细说明参考MSDN资料:https://msdn.microsoft.com/zh-cn/library/ms188776.aspx 如果只是查询数据库的大小的话,直接使用以 ...

  6. python---权限管理和菜单生成

    一:表结构(共八张表) from django.db import models # Create your models here. class User(models.Model): userna ...

  7. go build 不同系统下的可执行文件

    Golang 支持在一个平台下生成另一个平台可执行程序的交叉编译功能. 1.Mac下编译Linux, Windows平台的64位可执行程序: 1 2 $ CGO_ENABLED=0 GOOS=linu ...

  8. SQL语句(十八_补充)——存储过程

    一. 变量 1. 形式: @x (局部), @@x(全局) 2. 定义: declare @x 3. 赋值:Set @x = ? 4. 作用: 通用化 存储在服务器 5. 存储过程(预编译过的T-SQ ...

  9. jQuery 动态标签生成插件

    前言: 最近对js的插件封装特别感兴趣,无耐就目前的技术想做到js的完全封装,还是有一定困难,就基于jQuery封装了一个小的插件,而且是基于对象级开发的,不是添加全局方法.高深的语法几乎没有,就有一 ...

  10. 取消IE下的叉

    之前写项目的时候碰到一个小问题,因为IE下的那个叉触发不了我的change事件,所以只好把IE给加上去的那个叉去了,在此记录一下. ::-ms-clear{display:none;} ::-ms-r ...