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 ...
随机推荐
- Mybatis中oracle如何批量insert语句
<insert id="batchInsertNoticeUser" useGeneratedKeys="false" keyProperty=" ...
- jsp->jar
(2)新建 WEB-INF目录 (3)在 WEB-INF/web.xml 中输入如下内容 <web-app xmlns="http://java.sun.com/xml/ns/j2ee ...
- Linux常用软件(以及特殊命令)清单(ubuntu)
LibreOffice 解压缩命令 unar .tar 创建新文档命令:touch.vi/vim 浏览器:google chrome.firefox
- mysql数据库基本知识,简单框架
https://www.cnblogs.com/geaozhang/p/7347950.html
- Ubutun使用记录——语系错误(转)
add by zhj: 对原文有修改,原文是在创建用户时出现的问题,而我是在使用psql时出现的, 但问题是相同的. 原文:http://www.douban.com/note/362250557/ ...
- error: Error: No resource found for attribute ‘layout_scrollFlags’ in package‘包名’
遇到error: Error: No resource found for attribute 'layout_scrollFlags' in package'包名' 这个问题时候刚開始自己也是感觉到 ...
- Html5游戏开发-145行代码完成一个RPG小Demo
lufy前辈写过<[代码艺术]17行代码的贪吃蛇小游戏>一文,忽悠了不少求知的兄弟进去阅读,阅读量当然是相当的大.今天我不仿也搞一个这样的教程,目地不在于忽悠人,而在于帮助他人. 先看de ...
- 《FLASH PROGRAMMING 那些事》总结
注明来自 http://www.ssdfans.com/?p=5589 以MLC为例: 对FGF(Floating Gate Flash)技术的,MLC programming一般分两步走:先prog ...
- OOM问题分析
一.背景 在实际的开发中,性能问题的分析一直是运维团队的痛点,无论是缓慢内存溢出还是迅速的内存爆炸,对系统和业务的破坏都是快速而巨大的,此贴分享下简单的分析内存问题的经验. 二.相关名词 分代:根据对 ...
- PKU 1208 The Blocks Problem(模拟+list应用)
题目大意:原题链接 关键是正确理解题目意思 首先:介绍一下list容器的一些操作:参考链接 list<int> c1; c1.unique(); 去重. c1.r ...