20145320《Java程序设计》第二次实验报告

北京电子科技学院(BESTI)实验报告

课程:Java程序设计

班级:1453

指导教师:娄嘉鹏

实验日期:2016.04.12 15:30-18:30

实验名称:Java开发环境的熟悉

实验内容:

    1. 初步掌握单元测试和TDD
    1. 理解并掌握面向对象三要素:封装、继承、多态
    1. 初步掌握UML建模
    1. 熟悉S.O.L.I.D原则
    1. 了解设计模式

使用TDD的方式设计关实现复数类Complex

步骤:

1.编写计算复数类Complex,分为加减乘置数四种情况。

伪代码如下
public class Complex {
double real=0;//实部
double imaginary=0;//虚部
Complex(){}
getComplex(double real,double imaginary)
{
this.real=real;
this.imaginary=imaginary;
}
add(Complex c1){//加法
c.real=c1.real+this.real;
c.imaginary=c1.imaginary+this.imaginary;
return c;
} multi(Complex c1){//乘法
c.real=c1.real*this.real-c1.imaginary*this.imaginary;
c.imaginary=c1.imaginary*this.real+this.imaginary*c1.real;
return c;
} Minus(Complex c1){//减法
c.real=c1.real-this.real;
c.imaginary=c1.imaginary-this.imaginary;
return c;
}
}
产品代码如下
package experiment2;
public class Complex {
private double real=0;//实部
private double imaginary=0;//虚部
Complex(){}
public void getComplex(double real,double imaginary)
{
System.out.println("set");
this.real=real;
this.imaginary=imaginary;
}
public Complex add(Complex c1){//加法
Complex c=new Complex();
System.out.println("add");
c.real=c1.real+this.real;
c.imaginary=c1.imaginary+this.imaginary;
return c;
} public Complex multi(Complex c1){//乘法
Complex c =new Complex();
System.out.println("multi");
c.real=c1.real*this.real-c1.imaginary*this.imaginary;
c.imaginary=c1.imaginary*this.real+this.imaginary*c1.real;
return c;
} public Complex Minus(Complex c1){//减法
System.out.println("Minus");
Complex c =new Complex();
c.real=c1.real-this.real;
c.imaginary=c1.imaginary-this.imaginary;
return c;
} public double GetRealPatr(){//获得实部
return this.real;
} public double GetimaginaryPatr(){//获得虚部
return this.imaginary;
} public Object tostring(){//合成一个a+bi字符串
Object a=new Object();
if(imaginary>0)
a=this.real+"+"+this.imaginary+"i";
if(imaginary==0)
a=this.real;
if(imaginary<0)
a=this.real+""+this.imaginary+"i";
System.out.println(a);
return a;
}
}

test如下

test1

测试项目:

  • 实部赋负数
  • 虚部赋负数
  • 取c1实部与虚部
  • 输出字符串c2、x、y、z
  • 置数方法、加法方法、减法方法、乘法方法

测试结果

test2

测试项目:

  • 虚部实部均为负数
  • 负复数与正复数相乘

测试结果

test3

测试项目

  • 虚部实部输入负小数
  • 负复小数与正复小数相乘

出现错误了!错误在这里,这里定义了虚、实部均为int,其实可为double型

public void getComplex(int real,int imaginary)
{
System.out.println("set");
this.real=real;
this.imaginary=imaginary;
}

修改代码后测试结果

建立的模型如下

从模型中可以看见在Complex类中定义了如下方法:
  • 首先定义了实部real与虚部imaginary,并赋初值0
  • getComplex()方法用于置数
  • add()方法用于两个复数相加
  • multi()方法用于两个复数相乘
  • Minus()方法用于两个复数相减
  • GetRealPatr()方法得到实部
  • GetimaginaryPatr()方法得到实部
  • tostring()方法把复数结合成为a+bi形势的字符串

PSP(Personal Software Process)时间

步骤 耗时 百分比
需求分析 24min 13.3%
设计 36min 20%
代码设计 60min 33.3%
测试 40min 22.2%
分析总结 20min 11.1%

单元测试的好处

  • 减少问题出现,提高程序质量,在测试中进行项目,边改边写,可以将自己设计的项目不断优化

  • 更快地定位问题出现在哪个模块,提高效率,减少成本,这有助于实现模块的“块内高内聚,块间低耦合”

  • 可以放心修改部分代码

20145320《Java程序设计》第二次实验报告的更多相关文章

  1. java程序设计第二次实验报告

    北京电子科技学院(BESTI) 实验报告 课程:数据结构    班级:1352    姓名:何伟钦     学号:20135223 成绩:            指导教师:娄嘉鹏      实验日期: ...

  2. 20145320《Java程序设计》第一次实验报告

    20145320<Java程序设计>第一次实验报告 北京电子科技学院(BESTI)实验报告 课程:Java程序设计 班级:1453 指导教师:娄嘉鹏 实验日期:2016.04.08 18: ...

  3. 20155339《java程序设计》第一次实验报告

    20155339<java程序设计>第一次实验报告 实验一 java开发环境的熟悉 实验内容 1.使用JDK编译.运行简单的java程序: 2.使用IDEA编辑.编译.运行.调试java程 ...

  4. 20145330《Java程序设计》第一次实验报告

    20145330<Java程序设计>第一次实验报告 实验一Java开发环境的熟悉 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Ja ...

  5. 20145240 《Java程序设计》第一次实验报告

    20145240 <Java程序设计>第一次实验报告 实验内容 一.命令行下java程序开发 1.建立Code目录,输入mkdir 20145240命令建立实验目录,并使用dir命令查看目 ...

  6. 学号20155311 2016-2017-2 《Java程序设计》第一次实验报告

    课程:Java程序设计 实验名称:Java开发环境的熟悉 实验目的与要求: 没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器> 课程: 完成实验. ...

  7. 20145216史婧瑶《Java程序设计》第一次实验报告

    实验一 Java开发环境的熟悉(Linux + Eclipse) 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Java程序. 实验要求 1.没 ...

  8. 20145238-荆玉茗 《Java程序设计》第一次实验报告

    实验一 Java开发环境的熟悉(Linux + Eclipse) 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Java程序. 实验要求 1.没 ...

  9. 20145235 《Java程序设计》第一次实验报告

    实验一Java开发环境的熟悉 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Java程序. 实验知识点 1.JVM.JRE.JDK的安装位置与区 ...

随机推荐

  1. background常用属性

    background-image:url('图片位置');//设置背景图片的位置 background-repeat:no-repeat;//图片是否重复显示(不重复) background-posi ...

  2. 【wikioi】1040 统计单词个数

    题目链接 算法:划分型DP PS:被卡过3天.日期:2013-10-10 ~ 2013-10-12 18:52:48 这题是我提交了13次AC= =汗= = 题目描述: 给出一个长度不超过200的由小 ...

  3. 【JAVA】ConcurrentHashMap

    HashTable 写操作时候,Lock全表    源码:  public synchronized V put(K key, V value) {  // Make sure the value i ...

  4. C#_生成HTML

    #region 生成静态页 /// <summary> /// 生成静态页 /// </summary> /// <param name="URL"& ...

  5. App如何适应 iPhone 5s/6/6 Plus 三种屏幕的尺寸?

    来自//www.cocoachina.com/ 初代 iPhone 2007 年,初代 iPhone 发布,屏幕的宽高是 320 x 480 像素.下文也是按照宽度,高度的顺序排列.这个分辨率一直到 ...

  6. 找到一个Flex中LineChart很好的学习博客

    http://blog.flexexamples.com/category/linechart/ 里面链接复制的时候失效了,请直接点击原页面进行查看 Setting specific minimum ...

  7. Flex Vector使用(转)

    从前(Flex SDK 4.0 以前版本)创建 Vector 实例一定要如下所示,这样的语法使我们在构造 Vector 对象时无法指定元素: var v:Vector.<T> = new ...

  8. Flash与JS之间相互调用以及参数传递

    [AS3]ExternalInterface.call传多个参数的写法代码示例 import flash.text.TextField; ; ; var result:uint = ExternalI ...

  9. jquery-uploadify 上传

    先从官网下载插件 http://www.uploadify.com/ 引入之后.... html.................... <!-- 上传 --> <div id=&q ...

  10. 优化MySchool总结习题

    1) 在SQL Server 中,为数据库表建立索引能够( C ). A. 防止非法的删除操作 B. 防止非法的插入操作 C. 提高查询性能 D. 节约数据库的磁盘空间 解析:索引的作用是通过使用索引 ...