实验名称: 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,在符合客户需求的情况下使代码更加完善,也能锻炼我们的思维,增强我们认真负责的意识,一举多得。

转载于:https://www.cnblogs.com/20145122chengzhiyin/p/5389253.html

20145122《Java面向对象程序设计》实验二实验报告相关推荐

  1. 20155328 《Java程序设计》 实验二(Java面向对象程序设计) 实验报告

    20155328 <Java程序设计> 实验二(Java面向对象程序设计) 实验报告 单元测试 一.单元测试和TDD 编程时需理清思路,将编程需求等想好,再开始编.此部分可用伪代码实现. ...

  2. java构成对象的三要素_20155237 《JAVA程序设计》实验二(JAVA面向对象程序设计)实验报告...

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

  3. 20145207《Java程序设计》实验二(Java面向对象程序设计)实验报告

    <Java程序设计>实验二(Java面向对象程序设计)实验报告 目录 改变 Java面向对象程序设计实验要求 实验成果 课后思考 改变 看了下之前实验二的整体,很搞笑,大图+代码,没了.. ...

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

    一.实验报告封面 课程:Java程序设计  班级:1752班  姓名:张家华  学号:20175208 指导教师:娄嘉鹏  实验日期:2019年4月09日~2019年4月18日 实验序号:实验二 实验 ...

  5. java面向对象实验结论及心得_20162305 实验二 Java面向对象程序设计 实验报告

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

  6. java实验报告系统分析怎么写_20155218 《Java程序设计》实验二(Java面向对象程序设计)实验报告...

    20155218 <Java程序设计>实验二(Java面向对象程序设计)实验报告 一.实验内容及步骤 (一)单元测试 主要学习安装和使用junit来测试编写的程序,并学习以TDD(Test ...

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

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

  8. 2016-2017-2 20155117实验二《Java面向对象程序设计》实验报告

    实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验要求 1.参考Intellj IDEA 简易教程 提交 ...

  9. 《Java程序设计》实验二 实验报告

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

最新文章

  1. 单片机IO口模拟SPI四种模式的程序
  2. [华为机试练习题]55.最大公约数 amp; 多个数的最大公约数
  3. 应用在vue项目里的axios使用方法
  4. Cisco路由器交换机配置命令详解
  5. PHP在Linux上上传文件的注意事项
  6. excel线性拟合的斜率_邵励治的机器学习 2 / 100 天:「简单线性回归」
  7. 华为服务器内存位置,服务器上的内存在哪里
  8. 【Gym-100513 K】Treeland【bfs序构造】
  9. PreScan传感器(零)——通用配置
  10. centos系统上安装masscan
  11. 使用安卓手机自建 KMS 服务器激活Windows系统(任意安卓手机 无需 Root)
  12. ps的cc版本安装包以及破解包
  13. 设置电脑屏保全屏显示时间,酷!
  14. python对数据进行分类_按Python对数据进行分类
  15. PS制作心跳二维码动画 学会后能增加粉丝关注率哦
  16. 投稿指南【NO.7】目标检测论文写作模板(初稿)
  17. 基于Java的仿qq即时通讯软件设计与实现
  18. 8.15 完美交换 2699
  19. pdf.js的使用(C#后台返回pdf文件流)
  20. 页式地址变换(虚地址转换为内存地址的计算方法)

热门文章

  1. linux 下opencv安装教程,linux 下 opencv安装
  2. 一文带你学会 UML 统一建模语言
  3. [深度学习] 自然语言处理 --- 文本分类模型总结
  4. 感知算法论文(八):Generalized Intersection over Union:A Metric and A Loss for Bounding Box Regression(2019)
  5. 为什么你申请信用卡总是被拒绝?是银行跟你有仇吗?
  6. 简单使用Modelsim跑个仿真
  7. 异步复位的串联T触发器
  8. python聊天程序程序代码_python聊天程序实例代码分享
  9. postforobject 设置代理_OAuth2RestTemplate中的代理配置
  10. 计算机运算的基本原理概论,[工学]7计算概论A A02 计算机的基本原理.pdf