20145329 《Java程序设计》实验二总结
实验指导教师:娄嘉鹏老师
实验日期:2016.4.12
实验时间:15:30~17:30
实验序号:实验二
实验名称:Java面向对象程序设计
实验目的与要求:
1.初步掌握单元测试和TDD
2.理解并掌握面向对象三要素:封装、继承、多态
3.初步掌握UML建模
4.熟悉S.O.L.I.D原则
5.了解设计模式
实验内容
1.使用TDD的方式实现设计复杂类Complex
2.实验报告中统计自己的PSP
3.实现要有伪代码、产品代码、测试代码
4.总结单元测试的好处
实验过程中
伪代码
定义实部和虚部
默认构造方法
带参数的构造方法
得到实部,得到虚部
得到复数c的实部,得到复数c的虚部
设置实部,设置虚部
两个复数相加,结果返回
两个复数相减,结果返回
两个复数相乘,结果返回
测试代码
import org.junit.Test;
import static org.junit.Assert.*;
public class ComplexNumberTest {
@Test
public void testGetRealPart() throws Exception {
ComplexNumber cc=new ComplexNumber(3,5);
assert cc.m_dRealPart==3:
"testGetRealPart()处理有错误";
}
@Test
public void testGetImaginaryPart() throws Exception {
ComplexNumber cc=new ComplexNumber(3,5);
assert cc.m_dImaginaryPart==5:
"testGetRealPart()处理有错误";
}
@Test
public void testSetRealPart() throws Exception {
ComplexNumber cc=new ComplexNumber();
assert cc.m_dRealPart==0:
"testSetRealPart()处理有错误";
}
@Test
public void testSetImaginaryPart() throws Exception {
ComplexNumber cc=new ComplexNumber();
assert cc.m_dImaginaryPart==0:
"testSetImaginaryPart()处理错误";
}
@Test
public void testComplexAdd() throws Exception {
ComplexNumber cc=new ComplexNumber(3,5);
ComplexNumber dd=new ComplexNumber(3,3);
ComplexNumber ff=cc.ComplexAdd(cc,dd);
assert ff.m_dRealPart==6&&ff.m_dImaginaryPart==8:
"ComplexAdd()方法处理错误";
}
@Test
public void testComplexMinus() throws Exception {
ComplexNumber cc=new ComplexNumber(3,5);
ComplexNumber dd=new ComplexNumber(3,3);
ComplexNumber ff=cc.ComplexMinus(cc,dd);
assert ff.m_dRealPart==0&&ff.m_dImaginaryPart==2:
"ComplexMinus()方法处理错误";
}
@Test
public void testComplexMulti() throws Exception {
ComplexNumber cc=new ComplexNumber(3,5);
ComplexNumber dd=new ComplexNumber(3,3);
ComplexNumber ff=cc.ComplexMulti(cc,dd);
assert ff.m_dRealPart==-6&&ff.m_dImaginaryPart==24:
"ComplexMulti()方法处理错误";
}
@Test
public void testComplexAdd1() throws Exception {
ComplexNumber cc=new ComplexNumber(3,5);
ComplexNumber ff=cc.ComplexAdd1(2);
assert ff.m_dRealPart==5&&ff.m_dImaginaryPart==5:
"ComplexAdd1()方法处理错误";
}
@Test
public void testComplexMinus1() throws Exception {
ComplexNumber cc=new ComplexNumber(3,5);
ComplexNumber ff=cc.ComplexMinus1(2);
assert ff.m_dRealPart==1&&ff.m_dImaginaryPart==5:
"ComplexMinus1()方法处理错误";
}
@Test
public void testComplexMulti1() throws Exception {
ComplexNumber cc=new ComplexNumber(3,5);
ComplexNumber ff=cc.ComplexMulti1(2);
assert ff.m_dRealPart==6&&ff.m_dImaginaryPart==10:
"ComplexMulti1()方法处理错误";
}
}
产品代码
public class ComplexNumber {
double m_dRealPart, m_dImaginaryPart;
public ComplexNumber() {
this.m_dRealPart = 0;
this.m_dImaginaryPart = 0;
}
public ComplexNumber(double real, double img) { this.m_dRealPart = real;
this.m_dImaginaryPart = img;
}
public double GetRealPart() {
return this.m_dRealPart;
}
public double GetImaginaryPart() {
return this.m_dImaginaryPart;
}
public double GetRealPart(ComplexNumber c) {
return c.m_dRealPart;
}
public double GetImaginaryPart(ComplexNumber c) {
return c.m_dImaginaryPart;
}
public void SetRealPart(double real) {
this.m_dRealPart = real;
}
public void SetImagijnPart(double img) {
this.m_dImaginaryPart = img;
}
public ComplexNumber ComplexAdd(ComplexNumber a, ComplexNumber b) {
ComplexNumber temp = new ComplexNumber(); temp.m_dRealPart = a.m_dRealPart + b.m_dRealPart;
temp.m_dImaginaryPart = a.m_dImaginaryPart + b.m_dImaginaryPart;
return temp;
}
public ComplexNumber ComplexMinus(ComplexNumber a, ComplexNumber b) {
ComplexNumber temp = new ComplexNumber();
temp.m_dRealPart = a.m_dRealPart - b.m_dRealPart;
temp.m_dImaginaryPart = a.m_dImaginaryPart - b.m_dImaginaryPart;
return temp;
}
public ComplexNumber ComplexMulti(ComplexNumber a, ComplexNumber b) {
ComplexNumber temp = new ComplexNumber();
temp.m_dRealPart = a.m_dRealPart * b.m_dRealPart - a.m_dImaginaryPart * b.m_dImaginaryPart;
temp.m_dImaginaryPart = a.m_dRealPart * b.m_dImaginaryPart + a.m_dImaginaryPart * b.m_dRealPart;
return temp;
}
public ComplexNumber ComplexAdd1(double a) {
this.m_dRealPart = this.m_dRealPart + a;
return this;
}
public ComplexNumber ComplexMinus1(double a) {
this.m_dRealPart = this.m_dRealPart - a;
return this;
}
public ComplexNumber ComplexMulti1(double a) {
this.m_dRealPart = this.m_dRealPart * a;
this.m_dImaginaryPart = this.m_dImaginaryPart * a;
return this;
}
public String toString(){
return this.m_dRealPart+"+"+this.m_dImaginaryPart+"i";
}
}
测试结果

UML建模

PSP时间
| 步骤 | 耗时(min | 百分比 |
|---|---|---|
| 需求分析 | 40 | 20% |
| 设计 | 30 | 15% |
| 代码实现 | 50 | 25% |
| 测试 | 50 | 25% |
| 分析总结 | 30 | 15% |
20145329 《Java程序设计》实验二总结的更多相关文章
- Java程序设计 实验二 Java面向对象程序设计
北京电子科技学院(BESTI) 实 验 报 告 课程:Java程序设计 班级:1353 姓名:李海空 学号:20135329 成绩: 指导教师:娄嘉鹏 ...
- Java程序设计实验 实验五
课程:Java程序设计实验 班级:1353 姓名:符余佳源 学号:20135321 成绩: 指导教师:娄嘉鹏 实验日期:2015. ...
- 南邮JAVA程序设计实验1 综合图形界面程序设计
南邮JAVA程序设计实验1 综合图形界面程序设计 实验目的: 学习和理解JAVA SWING中的容器,部件,布局管理器和部件事件处理方法.通过编写和调试程序,掌握JAVA图形界面程序设计的基本方法. ...
- Java程序设计 实验三
北京电子科技学院(BESTI) 实 验 报 告 课程:Java程序设计 班级:1353 姓名:李海空 学号:20135329 成绩: 指 ...
- JAVA程序设计 实验一
北京电子科技学院(BESTI) 实 验 报 告 课程:Java程序设计 班级:1353 姓名:李海空 学号:20135329 成绩: 指导教师:娄嘉鹏 ...
- JAVA程序设计 实验一报告
北京电子科技学院(BESTI) 实 验 报 告 课程:Java程序设计 班级:1351 姓名:李畅宇 学号:20135129 成绩: 指导教师:娄嘉鹏 ...
- .NET程序设计实验二
实验二 面向对象程序设计 一.实验目的 1. 理解类的定义.继承等面向对象的的基本概念: 2. 掌握C#语言定义类及其各种成员(字段,属性,方法)的方法: 3. 掌握方法覆盖的应用: 4. 掌握接口 ...
- Java程序设计 实验五
实 验 报 告 课程:Java 班级: 1353 姓名:李海空 学号:20135329 成绩: 指导教师:娄嘉鹏 实验日期:2015.6. ...
- C++程序设计--实验二
第二次实验主要内容是函数重载,快速排序及其模板实现,简单的user类实现. 实验结论: 一.函数重载编程练习 /*编写重载函数add(),实现对int型,double型和Complex型数据的加法.在 ...
- Java程序设计(二)作业
题目1:输入一个三位十进制数,对其每一位进行筛选,逆序组合后输出. package test; import java.util.*; public class test2{ public stati ...
随机推荐
- java中Object转换成int或String类型方法
转载: http://www.cnblogs.com/1020182600HENG/p/6137206.html Object obj = getObject(); if(obj instanceof ...
- [Domino]从嵌入另一个数据库嵌入的Embedded View无法正常显示,提示unable to lauch
发现问题 1. 项目中需要在一个数据库中插入另一个数据库的Embedded View,使用起来十分费劲,在选择数据库的下拉菜单中经常会找不到目标数据库: 2. 在做日文版的时候,从workbench导 ...
- CH5302 金字塔【区间DP】
5302 金字塔 0x50「动态规划」例题 描述 虽然探索金字塔是极其老套的剧情,但是有一队探险家还是到了某金字塔脚下.经过多年的研究,科学家对这座金字塔的内部结构已经有所了解.首先,金字塔由若干房间 ...
- Java23种设计模式学习笔记【目录总贴】
创建型模式:关注对象的创建过程 1.单例模式:保证一个类只有一个实例,并且提供一个访问该实例的全局访问点 主要: 饿汉式(线程安全,调用效率高,但是不能延时加载) 懒汉式(线程安全,调用效率不高,但 ...
- [SQL Database] 内外网数据库同步
Azure SQL Azure(十) SQL Azure Data Sync数据同步功能(上) SQL Azure(十一) SQL Azure Data Sync数据同步功能(下) 走近微软云:SQL ...
- python and 我爱自然语言处理
曾经因为NLTK的 缘故开始学习Python,之后渐渐成为我工作中的第一辅助脚本语言,虽然开发语言是C/C++,但平时的很多文本数据处理任务都交给了Python.离 开腾讯创业后,第一个作品课程图谱也 ...
- 用flask开发个人博客(4)—— flask中4种全局变量
https://blog.csdn.net/hyman_c/article/details/53512109 一 current_app current_app代表当前的flask程序实例,使用时需 ...
- 前端开发 - JQuery&Bootstrap - 总结
一.JavaScript和Jquery的区别 1.javascript的缺点: 1.书写繁琐,代码量大 2.代码复杂 3.动画效果,很难实现.使用定时器 各种操作和处理 2.定义: 1.Javascr ...
- 剑指Offer——数组中的逆序对
题目描述: 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数P.并将P对1000000007取模的结果输出. 即输出P%100 ...
- django允许外部访问
默认方法启动django python manage.py runserver 这时启动的服务只能在本机访问,这是因为服务只向本机(127.0.0.1:8000)提供,所以局域网的其他机器不能访问. ...