实验名称: Java面向对象程序设计

实验内容:

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

PSP时间

步骤 耗时 百分比
需求分析 1h 12.5%
设计 1h 12.5%
代码实现 3h 37.5%
测试 1h 12.5%
分析总结 2h 25.0%

代码实现过程

直接使用老师实验课上给出的伪代码。

m_dRealPart: 实部,代表复数的实数部分

m_dImaginPart: 虚部,代表复数的虚数部分

ComplexNumber() 构造函数,将实部,虚部都置为0

ComplexNumber(double r, double I) 构造函数,创建复数对象的同时完成复数的实部,虚部的初始化

GetRealPart() 获取实部

GetImaginaryPart() 获取虚部

SetRealPart(double d) 设置实部

SetImaginaryPart(double d) 设置虚部

ComplexAdd(ComplexNumber c) 复数相加

ComplexAdd(double c) 复数相加

ComplexMinus(ComplexNumber c) 复数相减

ComplexMinus(double c) 复数相减

ComplexMulti(ComplexNumber c)  复数相乘

ComplexMulti(double c)  复数相乘

toString() 把当前复数对象的实部,虚部组合成a+bi的字符串形式

根据复数运算的加减乘三个功能进行代码设计。敲出产品代码

package czy;
public class complex
{
public static void main (String args[])
{ ComplexNumber a = new ComplexNumber(20,10);
ComplexNumber b = new ComplexNumber(5,5);
double z = 10.0; System.out.println(a.toString() + " + " +b.toString() + " = " + a.complexAdd(b).toString());
System.out.println(a.toString() + " + " + z + " = " + a.complexAdd(z).toString()); System.out.println(a.toString() + " - " + b.toString() + " = " + a.complexMinus(b).toString());
System.out.println(a.toString() + " - " + z + " = " + a.complexMinus(z).toString()); System.out.println(a.toString() + " * " + b.toString() + " = " + a.complexMinus(b).toString());
System.out.println(a.toString() + " * " + z + " = " + a.complexMulti(z).toString()); }
} class ComplexNumber
{
private double realpart;
private double imaginpart;
ComplexNumber()
{
realpart = 0.0;
imaginpart = 0.0;
}
ComplexNumber(double r,double I)
{
realpart = r;
imaginpart = I;
}
ComplexNumber(ComplexNumber c)
{
realpart = c.getRealPart();
imaginpart = c.getImaginaryPart();
}
double getRealPart()
{
return realpart;
}
double getImaginaryPart()
{
return imaginpart;
}
void setRealPart(double d)
{
realpart = d;
}
void setImaginaryPart(double d)
{
imaginpart = d;
}
ComplexNumber complexAdd(ComplexNumber c)
{
return new ComplexNumber( this.realpart + c.getRealPart(), this.imaginpart + c.getImaginaryPart());
}
ComplexNumber complexAdd(double c)
{
return new ComplexNumber( this.realpart + c, this.imaginpart);
} ComplexNumber complexMinus(ComplexNumber c)
{
return new ComplexNumber( this.realpart - c.getRealPart(),this.imaginpart - c.getImaginaryPart());
}
ComplexNumber complexMinus(double c)
{
return new ComplexNumber( this.realpart - c, this.imaginpart);
} ComplexNumber complexMulti(ComplexNumber c)
{
return new ComplexNumber( this.realpart * c.getRealPart() - this.realpart * c.getImaginaryPart(),
this.realpart * c.getImaginaryPart() + this.imaginpart * c.getRealPart());
}
ComplexNumber complexMulti(double c)
{
return new ComplexNumber( this.realpart * c, this.imaginpart * c);
} public String toString()
{
return "(" + realpart + " + " + imaginpart + " i" + ")";
}
}

完成后进行测试代码:

package czy;
public class complextest { public static void main (String args[])
{
ComplexNumber a = new ComplexNumber(20,10);
ComplexNumber b = new ComplexNumber(5,5);
ComplexNumber x = new ComplexNumber();
double z = 10.0;
x = a.complexAdd(b);
if(x.getRealPart() !=25.0 )
System.out.println("test failed 1!");
x = a.complexAdd(z);
if(x.getRealPart() !=30.0 )
System.out.println("test failed 11!");
x = a.complexAdd(b);
if( x.getImaginaryPart()!=15.0 )
System.out.println("test failed 2!");
x = a.complexAdd(z);
if( x.getImaginaryPart()!=10.0 )
System.out.println("test failed 22!");
x = a.complexMinus(b);
if( x.getRealPart()!=15.0 )
System.out.println("test failed 3!");
x = a.complexMinus(z);
if( x.getRealPart()!=10.0 )
System.out.println("test failed 33!");
x = a.complexMinus(b);
if( x.getImaginaryPart()!=5.0 )
System.out.println("test failed 4!");
x = a.complexMinus(z);
if( x.getImaginaryPart()!=10.0 )
System.out.println("test failed 44!");
x = a.complexMulti(b);
if( x.getRealPart() !=50.0 )
System.out.println(x.getRealPart()+"test failed 5!");
x = a.complexMulti(z);
if( x.getRealPart() !=200.0 )
System.out.println("test failed 55!");
x = a.complexMulti(b);
if( x.getImaginaryPart()!=150.0 )
System.out.println("test failed 6!");
x = a.complexMulti(z);
if( x.getImaginaryPart()!=100.0 )
System.out.println("test failed 66!");
else
System.out.println("test passed!");
}
} class ComplexNumber
{
private double realpart;
private double imaginpart;
ComplexNumber()
{
realpart = 0.0;
imaginpart = 0.0;
}
ComplexNumber(double r,double I)
{
realpart = r;
imaginpart = I;
}
ComplexNumber(ComplexNumber c)
{
realpart = c.getRealPart();
imaginpart = c.getImaginaryPart();
}
double getRealPart()
{
return realpart;
}
double getImaginaryPart()
{
return imaginpart;
}
void setRealPart(double d)
{
realpart = d;
}
void setImaginaryPart(double d)
{
imaginpart = d;
}
ComplexNumber complexAdd(ComplexNumber c)
{
return new ComplexNumber( this.realpart + c.getRealPart(), this.imaginpart + c.getImaginaryPart());
}
ComplexNumber complexAdd(double c)
{
return new ComplexNumber( this.realpart + c, this.imaginpart);
} ComplexNumber complexMinus(ComplexNumber c)
{
return new ComplexNumber( this.realpart - c.getRealPart(),this.imaginpart - c.getImaginaryPart());
}
ComplexNumber complexMinus(double c)
{
return new ComplexNumber( this.realpart - c, this.imaginpart);
} ComplexNumber complexMulti(ComplexNumber c)
{
return new ComplexNumber( this.realpart * c.getRealPart() - this.realpart * c.getImaginaryPart(),
this.realpart * c.getImaginaryPart() + this.imaginpart * c.getRealPart());
}
ComplexNumber complexMulti(double c)
{
return new ComplexNumber( this.realpart * c, this.imaginpart * c );
} public String toString()
{
return "(" + realpart + " + " + imaginpart + " i" + ")";
}
}

运行的时候出现了问题!

找到出错的地方,将关于复数乘法的代码改为:

ComplexNumber complexMulti(ComplexNumber c)
{
return new ComplexNumber( this.realpart * c.getRealPart() - this.imaginpart * c.getImaginaryPart(),
this.realpart * c.getImaginaryPart() + this.imaginpart * c.getRealPart());
}

成功!

实验问题和解决方法

实验过程关于复数算法出现了一些错误,但写了测试代码后成功进行了修改。还有如果用debug的话可能方便一些。

测试代码的好处

使用测试代码后会减少程序出现的bug,在符合客户需求的情况下使代码更加完善,也能锻炼我们的思维,增强我们认真负责的意识,一举多得。

20145122《Java面向对象程序设计》实验二实验报告的更多相关文章

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

    20175314 实验二 Java面向对象程序设计 一.实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 二 ...

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

    20165336 实验二 Java面向对象程序设计 一.实验报告封面 课程:Java程序设计 班级:1653班 姓名:康志强 学号:20165336 指导教师:娄嘉鹏 实验日期:2018年4月16日 ...

  3. 2017-2018-2 20165215 实验二 Java面向对象程序设计

    20165215 实验二 Java面向对象程序设计 一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:张家佳 学号:20165215 指导教师:娄嘉鹏 实验日期:2018年4月16日 ...

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

    20165308 实验二 Java面向对象程序设计 实验二 Java面向对象程序设计 一.实验报告封面 课程:Java程序设计 班级:1653班 姓名:张士洋 学号:20165308 指导教师:娄嘉鹏 ...

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

    实验二 Java面向对象程序设计 一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:贾海粟 学号:20165202 指导教师:娄嘉鹏 实验日期:2018年4月16日 实验时间:15:3 ...

  6. 2062326 齐力锋 实验四《Java面向对象程序设计Android开发》实验报告

    北京电子科技学院(BESTI) 实 验 报 告 课程: 程序设计与数据结构  班级: 1623  姓名: 齐力锋 学号: 20162326 成绩: 指导教师: 娄嘉鹏/王志强 实验日期: 2017年5 ...

  7. # 20155219实验二 Java面向对象程序设计

    20155219实验二 Java面向对象程序设计 一.实验内容 1.初步掌握单元测试和TDD 2.理解并掌握面向对象三要素:封装.继承.多态 3.初步掌握UML建模 4.熟悉S.O.L.I.D原则 5 ...

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

    20155208实验二 Java面向对象程序设计 一.实验内容 1.初步掌握单元测试和TDD 2.理解并掌握面向对象三要素:封装.继承.多态 3.初步掌握UML建模 4.熟悉S.O.L.I.D原则 5 ...

  9. 20145213《Java程序设计》实验二Java面向对象程序设计实验报告

    20145213<Java程序设计>实验二Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装,继承,多态 初步掌握UML建模 熟悉S.O. ...

随机推荐

  1. ZOJ 3993 - Safest Buildings - [数学题]

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3993 题意: 给出n幢建筑,每个都以一个点表示,给出点坐标. 有 ...

  2. ubuntu 添加用户到已存在的组

    sudo adduser 用户名 组名   sudo minicom –s 配置 minicom访问ttyUSB0没权限,发现属于dialout 组 james@james-OptiPlex-380: ...

  3. initrd和initramfs的区别

      Linux内核在初始化之后会执行init进程,而init进程会挂载我们的根文件系统,但由于init程序也是在根文件系统上的,所以这就有了悖论.Linux采用两步走的方法来解决这个问题.Linux2 ...

  4. pandas1

    https://www.cnblogs.com/nxld/p/6058591.html

  5. mybatis中大于等于、小于等于的写法

    在xml格式中,常常会遇到xml解析sql时候出错,这个时候需要用其他符号来表示.在mybatis中会遇到,需要做如下的转换:

  6. Loadrunner之https协议录制回放报错如何解决?(九)

    一.录制中遇到报错27778的问题(如下图1),即关于录制的链接为https开头的问题,分两个步骤解决,如下: 图1 https访问报错解决步骤如下: 1.修改Vuser-->Run-time ...

  7. Oracle与Sql server 在SQL上的不同

    Oracle与Sql server都遵循SQL-92标准:http://owen.sj.ca.us/rkowen/howto/sql92F.html,但是也有一些不同之处,差别如下: Oracle中表 ...

  8. [adt]python实现栈-体验数据结构

    经常使用py的一些数据结构,如list,及list的一些方法. 还有hash表等. 各类数据结构方法用的很6,然而不知道是底层是怎么实现的. 基于此,就开始研究一下py实现一些数据结构, 以便于对计算 ...

  9. Python安装常见问题(1):zipimport.ZipImportError: can't decompress data

    在CentOS以及其他的Linux系统中遇到安装包安装错误的原因,大多数都是因为缺少依赖包导致的,所以对于错误:zipimport.ZipImportError: can’t decompress d ...

  10. (转)Elasticsearch查询规则------match和term

    es种有两种查询模式,一种是像传递URL参数一样去传递查询语句,被称为简单搜索或查询字符串(query string)搜索,比如 GET /megacorp/employee/_search //查询 ...