20165203 实验二 Java面向对象程序设计
20165203 实验二 Java面向对象程序设计
一、面向对象程序设计1——单元测试和TDD
1.实验要求
- 参考 (http://www.cnblogs.com/rocedu/p/6371315.html#SECUNITTEST) 完成单元测试的学习
- 提交最后三个JUnit测试用例(正常情况,错误情况,边界情况)都通过的截图,截图上要有画图加水印,输入自己的学号
测试要点:本提交点考查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.jar和junit-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面向对象程序设计的更多相关文章
- 实验二 Java面向对象程序设计
实验二 Java面向对象程序设计 实验内容 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态 3. 初步掌握UML建模 4. 熟悉S.O.L.I.D原则 5. 了解设计 ...
- 20145213《Java程序设计》实验二Java面向对象程序设计实验报告
20145213<Java程序设计>实验二Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装,继承,多态 初步掌握UML建模 熟悉S.O. ...
- 20145206《Java程序设计》实验二Java面向对象程序设计实验报告
20145206<Java程序设计>实验二Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O. ...
- 20145308刘昊阳 《Java程序设计》实验二 Java面向对象程序设计 实验报告
20145308刘昊阳 <Java程序设计>实验二 Java面向对象程序设计 实验报告 实验名称 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面相对象三要素:封 ...
- 20145113 实验二 Java面向对象程序设计
20145113 实验二 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 1.初 ...
- JAVA课程实验报告 实验二 Java面向对象程序设计
北京电子科技学院(BESTI) 实 验 报 告 课程:Java程序设计 班级:1353 姓名:韩玉琪 学号:20135317 成绩: 指导教师:娄嘉 ...
- 20145225唐振远 实验二 "Java面向对象程序设计"
20145225<Java程序设计> 实验二 Java面向对象程序设计 实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S ...
- 20145208 实验二 Java面向对象程序设计
20145208 实验二 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验步 ...
- 20162311 实验二 Java面向对象程序设计 实验报告
实验二 Java面向对象程序设计 实验内容 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态 3. 初步掌握UML建模 4. 熟悉S.O.L.I.D原则 5. 了解设计 ...
随机推荐
- 南昌邀请赛网络赛 D.Match Stick Game(dp)
南昌邀请赛网络赛 D.Match Stick Game 题目传送门 题目就会给你一个长度为n的字符串,其中\(1<n<100\).这个字符串是一个表达式,只有加减运算符,然后输入的每一个字 ...
- Java 9 新特性快速预览
原文出处:wangwenjun69 Java 8 已经出来三年多的时间了,原本计划2016年七月份release Java 9,但是基于种种原因,Java 9 被推迟到了2017年的3月份,本人也在O ...
- Struts2框架基础概念总结
一.struts2框架 Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的 ...
- python---基础知识回顾(九)图形用户界面-------Tkinter
前戏:老牌python GUI程序(Tkinter) import tkinter.messagebox as messagebox class Application(Frame): def __i ...
- hdu 3065病毒侵袭持续中
病毒侵袭持续中 http://acm.hdu.edu.cn/showproblem.php?pid=3065 Time Limit: 2000/1000 MS (Java/Others) Mem ...
- Java中创建线程的三种方法以及区别
Java使用Thread类代表线程,所有的线程对象都必须是Thread类或其子类的实例.Java可以用三种方式来创建线程,如下所示: 1)继承Thread类创建线程 2)实现Runnable接口创建线 ...
- #import 指令
[#import 指令] #import指令用于从一个类型库中结合信息.该类型库的内容被转换为C++类,主要用于描述COM界面. 语法 #import "文件名" [属性] #im ...
- [转载]Javascript 同步异步加载详解
http://handyxuefeng.blog.163.com/blog/static/4545217220131125022640/ 本文总结一下浏览器在 javascript 的加载方式. 关键 ...
- [转载].net程序集自动生成版本号
原文:http://hi.baidu.com/bcbgrand/item/a74a7ba71c3b0ea928ce9dce .net程序版本号的格式是4个十进制数字 比如 2.5.729.2 依次是 ...
- Spring3.2 Contorller单元测试参数问题: java.lang.NoSuchMethodException
使用3.2做单元测试的时候发现这个问题,因为之前都是用3.0中的配置适配器使用AnnotationMethodHandlerAdapter,到3.2中升级为RequestMappingHandlerA ...