20145122《Java面向对象程序设计》实验二实验报告
实验名称: Java面向对象程序设计
实验内容:
- 初步掌握单元测试和TDD
- 理解并掌握面向对象三要素:封装、继承、多态
- 初步掌握UML建模
- 熟悉S.O.L.I.D原则
- 了解设计模式
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面向对象程序设计》实验二实验报告的更多相关文章
- 20175314 实验二 Java面向对象程序设计
20175314 实验二 Java面向对象程序设计 一.实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 二 ...
- 20165336 实验二 Java面向对象程序设计
20165336 实验二 Java面向对象程序设计 一.实验报告封面 课程:Java程序设计 班级:1653班 姓名:康志强 学号:20165336 指导教师:娄嘉鹏 实验日期:2018年4月16日 ...
- 2017-2018-2 20165215 实验二 Java面向对象程序设计
20165215 实验二 Java面向对象程序设计 一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:张家佳 学号:20165215 指导教师:娄嘉鹏 实验日期:2018年4月16日 ...
- 20165308 实验二 Java面向对象程序设计
20165308 实验二 Java面向对象程序设计 实验二 Java面向对象程序设计 一.实验报告封面 课程:Java程序设计 班级:1653班 姓名:张士洋 学号:20165308 指导教师:娄嘉鹏 ...
- 20165202 实验二 Java面向对象程序设计
实验二 Java面向对象程序设计 一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:贾海粟 学号:20165202 指导教师:娄嘉鹏 实验日期:2018年4月16日 实验时间:15:3 ...
- 2062326 齐力锋 实验四《Java面向对象程序设计Android开发》实验报告
北京电子科技学院(BESTI) 实 验 报 告 课程: 程序设计与数据结构 班级: 1623 姓名: 齐力锋 学号: 20162326 成绩: 指导教师: 娄嘉鹏/王志强 实验日期: 2017年5 ...
- # 20155219实验二 Java面向对象程序设计
20155219实验二 Java面向对象程序设计 一.实验内容 1.初步掌握单元测试和TDD 2.理解并掌握面向对象三要素:封装.继承.多态 3.初步掌握UML建模 4.熟悉S.O.L.I.D原则 5 ...
- 20155208实验二 Java面向对象程序设计
20155208实验二 Java面向对象程序设计 一.实验内容 1.初步掌握单元测试和TDD 2.理解并掌握面向对象三要素:封装.继承.多态 3.初步掌握UML建模 4.熟悉S.O.L.I.D原则 5 ...
- 20145213《Java程序设计》实验二Java面向对象程序设计实验报告
20145213<Java程序设计>实验二Java面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装,继承,多态 初步掌握UML建模 熟悉S.O. ...
随机推荐
- Python数据分析必备Anaconda安装、快捷键、包安装
Python数据分析必备: 1.Anaconda操作 Anaconda是一个用于科学计算的Python发行版,支持 Linux, Mac, Windows系统,提供了包管理与环境管理的功能,可以很方便 ...
- linux环境下python的部署
linux系统环境自带python2.6,但有时我们项目使用的版本可能是3.x以上等等,此时我们需要在linux中再安装项目所需的python版本,此时就涉及多版本共存问题了,很多同学在安装多个版本P ...
- 洛谷P4139 上帝与集合的正确用法 拓欧
正解:拓展欧拉定理 解题报告: 首先放上拓欧公式? if ( b ≥ φ(p) ) ab ≡ ab%φ(p)+φ(p)(mod p)else ab≡ab mod φ(p) (mod p) 首先利用扩 ...
- 【Python】【亲测好用】安装第三方包报错:AttributeError:'module' object has no attribute 'main'
安装/卸载第三包可能出现如下问题及相应解决办法: 在pycharm编辑中,使用anconda2更新.卸载第三方包时,出现如下错误: AttributeError:'module' object has ...
- CentOS工作内容(二)关闭SELinux
CentOS工作内容(二)关闭SELinux CentOS安装完成后,有很多配置要改,不过最重要就是关闭SELinux SELinux是增强安全性的一项功能,不是SELinux不好,而是当功能安全性较 ...
- visual studio code 的必装推荐插件plugin, vscode, vsc
An Old Hope Theme (theme, 推荐,且推荐它的 classic theme,安装后在颜色选项里选择,该插件的定制见文末) Cobalt2 (theme) Drac ...
- HTML <input> <button> <submit>
定义和用法 value 属性规定与按钮关联的初始值.请始终为按钮规定 type 属性,如果不填默认值是 "submit".submit其实就是一个特殊的button. <bu ...
- 非常不错的一个JS分页效果代码
这里分享一个不错的js分页代码. 代码中cpage是页面计数,应为全局变量,可以随处调用它: totalpage是总页数. 与asp分页代码很类似,也是先取得记录总数,然后实现分页,基本的分页思路与原 ...
- Quick Look at the Air Jordan 32
A color with 25 years of history in the Air Jordan line will once again leave its mark on the Air Jo ...
- 浅谈Android View滑动和弹性滑动
引言 View的滑动这一块在实际开发中是非常重要的,无论是优秀的用户体验还是自定义控件都是需要对这一块了解的,我们今天来谈一下View的滑动. View的滑动 View滑动功能主要可以使用3种方式来实 ...