实验指导教师:娄嘉鹏老师

实验日期: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程序设计》实验二总结的更多相关文章

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

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

  2. Java程序设计实验 实验五

    课程:Java程序设计实验   班级:1353  姓名:符余佳源  学号:20135321 成绩:                           指导教师:娄嘉鹏      实验日期:2015. ...

  3. 南邮JAVA程序设计实验1 综合图形界面程序设计

    南邮JAVA程序设计实验1  综合图形界面程序设计 实验目的: 学习和理解JAVA SWING中的容器,部件,布局管理器和部件事件处理方法.通过编写和调试程序,掌握JAVA图形界面程序设计的基本方法. ...

  4. Java程序设计 实验三

    北京电子科技学院(BESTI) 实     验    报     告 课程:Java程序设计   班级:1353       姓名:李海空  学号:20135329 成绩:             指 ...

  5. JAVA程序设计 实验一

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

  6. JAVA程序设计 实验一报告

    北京电子科技学院(BESTI) 实     验    报     告 课程:Java程序设计 班级:1351  姓名:李畅宇  学号:20135129 成绩:             指导教师:娄嘉鹏 ...

  7. .NET程序设计实验二

    实验二  面向对象程序设计 一.实验目的 1. 理解类的定义.继承等面向对象的的基本概念: 2. 掌握C#语言定义类及其各种成员(字段,属性,方法)的方法: 3. 掌握方法覆盖的应用: 4. 掌握接口 ...

  8. Java程序设计 实验五

    实     验    报     告 课程:Java 班级: 1353    姓名:李海空   学号:20135329 成绩:              指导教师:娄嘉鹏   实验日期:2015.6. ...

  9. C++程序设计--实验二

    第二次实验主要内容是函数重载,快速排序及其模板实现,简单的user类实现. 实验结论: 一.函数重载编程练习 /*编写重载函数add(),实现对int型,double型和Complex型数据的加法.在 ...

  10. Java程序设计(二)作业

    题目1:输入一个三位十进制数,对其每一位进行筛选,逆序组合后输出. package test; import java.util.*; public class test2{ public stati ...

随机推荐

  1. 后端程序员如何玩转AJAX

    1.原生的Ajax入门 (感觉很是繁琐,所以一般我们都是用简单的方式) 创建一个核心对象 XMLHttpRequest var xmlhttp; if (window.XMLHttpRequest) ...

  2. Exchange Pause or stop transport service

    The Microsoft Exchange Transport service is a service available both on the Microsoft Exchange Serve ...

  3. hdu2254 奥运 矩阵的应用

    hdu2254 奥运 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2254 题意:题目让我们求得是的可以得到的金牌数量,而和金牌数量=在t1到t2天( ...

  4. uva656 Optimal Programs

    Optimal Programs As you know, writing programs is often far from being easy. Things become even hard ...

  5. php 安装yaf扩展和yaf框架

    一.安装yaf扩展(windows安装) 1.查看你电脑安装的开发环境(phpinfo()的信息),查找 "Zend Extension Build"和"PHP Exte ...

  6. mapjoin与reducejoin

    一.mapjoin 1.Mapper类 package com.css.mapjoin; import java.io.BufferedReader; import java.io.FileInput ...

  7. LeetCode之Symmetric Tree

    </pre>Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its ce ...

  8. The Highest Mark---hdu5501(问题转化 01背包)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5501 二维数组: #include<stdio.h> #include<iostre ...

  9. Linux命令(补充)

    1.查看已启动服务的端口: netstat -tulnp |grep 80 ss -tulnp|grep 80 2.查看全部已启动的端口:netstat -tulnp 3.查看当前目录:pwd 4.关 ...

  10. CloudFoundry V2 单机版离线安装(伪离线安装)

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/wangdk789/article/details/30255763     之前安装CloudFou ...