20145229吴姗珊《java程序设计》第2次实验报告
2016-04-15 03:02
549 查看
20145229吴姗珊《java程序设计》第2次实验报告
实验名称
Java面向程序设计,采用TDD的方式设计有关实现复数类Complex。理解并掌握面向对象三要素:封装、继承、多态。
运用并且掌握单元测试。Java面向程序设计,采用TDD的方式设计有关实现复数类Complex。
实验步骤
本次实验在编写并设计有关实现复数类Complex的功能下,尝试使用TDD方式,并且运用单元测试伪代码:
先写伪代码,伪代码可以用汉语写,伪代码与具体编程语言无关,不要写一些不相关的语句,伪代码从意图层面来解决问题。伪代码是产品代码最自然的、最好的注释。
公共类Complex;
定义双精度的实部和虚部(实部用real,虚部用img); 构造函数取得实部; 构造函数取得虚部; 构造函数:两个复数相加,结果返回; 构造函数:两个复数相减,结果返回; 构造函数:两个复数相乘,结果返回; 构造函数:两个复数相除,结果返回; ··· ··· 以上是这个复数类的所有伪代码; 测试代码; 代码结束;
产品代码:
有了伪代码,我们用特定编程语言翻译一下,就是可用的产品代码了。对于产品代码,只要遵照所选择的特定编程语言翻译,注意语法问题,注意细节,就很容易成功
public class Complex
{double real,img; //实部和虚部
public Complex() //默认构造方法 { this.real=0; this.img =0; } public Complex(double real,double img) //带参数的构造方法 { this.real=real; this.img =img; } public double getReal() { return this.real; } //得到实部 public double getImage() { return this.img; } //得到虚部 public double getReal(Complex c) { return c.real; } //得到复数c的实部,这两个函数看起来好像有点多余,但在特殊的情况下会有用 public double getImage(Complex c) { return c.img; } //得到复数c的虚部 public void setReal (double real) { this.real=real; } //设置实部 public void setImage(double img) { this.img =img; } //设置虚部 public Complex addComplex(Complex a,Complex b) //两个复数相加,结果返回 { Complex temp =new Complex(); temp.real=a.real+b.real; temp.img =a.img +b.img; return temp; } public Complex decComplex(Complex a,Complex b) //两个复数相减,结果返回 { Complex temp = new Complex(); temp.real = a.real - b.real; temp.img = a.img - b.img; return temp; } public Complex mulComplex(Complex a,Complex b) //两个复数相乘,结果返回 { Complex temp = new Complex(); temp.real = a.real*b.real-a.img*b.img; temp.img = a.real*b.img+a.img*b.real; return temp; } public Complex divComplex(Complex a,Complex b) //两个复数相除,结果返回 { Complex temp = new Complex(); temp.real=(a.real*b.real+a.img*b.img)/(b.real*b.real+b.img*b.img); temp.img =(a.img*b.real-a.real*b.img)/(b.real*b.real+b.img*b.img); return temp; }
public void printComplex() //在console端输出这个复数,测试用
{
System.out.println(""+this.real+"+"+this.img+"i");
}
public String toString(){ String fin=" "; if(img>0){ fin = real+"+"+img+"i"; }else if(img<0){ fin = real+ ""+img+"i"; }else{ fin = fin; } return fin; }
以上即为产品代码,下面即为测试代码
public static void main(String[] args) //测试代码
{ Complex cc=new Complex(4,8); cc.printComplex(); Complex dd=new Complex(2,2); dd.printComplex(); System.out.println("-----------------"); Complex ff=new Complex(); ff=ff.addComplex(cc,dd); ff.printComplex(); ff=ff.decComplex(cc,dd); ff.printComplex(); ff=ff.mulComplex(cc,dd); ff.printComplex(); ff=ff.divComplex(cc,dd); ff.printComplex(); System.out.println("-----------------"); cc.printComplex(); cc=new Complex(4,8); cc.printComplex(); cc=new Complex(4,8); cc.printComplex(); cc=new Complex(4,8); cc.printComplex(); System.out.println("-----------------"); cc.setReal(123); cc.setImage(456); cc.printComplex(); System.out.println(""+cc.getReal()+"+"+cc.getImage()+"i"); System.out.println("-----------------"); }
}
最后结果
为了验证自己的代码是正确的,所以我们需要做代码测试。在java中,程序员对类的测试也称为单元测试,现在从老师的博客中一步步步骤开始,以下即为过程。
具体的步骤参照老师的博客
写测试代码,证明自己的代码没有问题。在Java编程时,程序员对类实现的测试叫单元测试。类XXXX的单元测试,我们一般写建一个XXXXTest的类
创建text的时候,选中需要的检测的函数,go to text
现在进行分装测试
加法
减法
乘法
除法
熟悉S.O.L.I.D原则
SRP(Single Responsibility Principle,单一职责原则)OCP(Open-Closed Principle,开放-封闭原则)
LSP(Liskov Substitusion Principle,Liskov替换原则)
ISP(Interface Segregation Principle,接口分离原则)
DIP(Dependency Inversion Principle,依赖倒置原则)
用UML建模复数类Complex
建模结果实验心得
就我个人而言,我觉得这次的实验主要难在建模上,在编写程序中首先要为了实现产品功能编写伪代码,产品代码,测试代码,一直到完成了这些步骤才能真正实现产品的功能。老师给的步骤很详细,给我们的链接中几乎包含了所有的步骤,所以做下来也是对过程的一边熟悉。而且,从利用UML我们可以清晰的看到java代码的构架是怎样的,而且简便易用,能够节约一大部分时间实验PSP (Presonal Sowftware Process)时间
步骤 | 耗时 | 百分比 |
---|---|---|
需求分析 | 10 | 8 |
设计 | 30 | 20 |
代码实现 | 60 | 40 |
测试 | 20 | 12 |
分析总结 | 30 | 20 |
相关文章推荐
- Eclipse 中 新建maven项目 无法添加src/main/java 问题
- eclipse cdt include路径 和 库设置
- MyEclipse10激活方法
- 20145122《Java程序设计》第七周学习总结
- JAVA编程中关于toString()和new String()的区别
- springMVC工作原理
- 矩阵连乘问题的java实现
- 传智 刘意 2015年Java基础视频-深入浅出精华版 笔记 day24~day26(2016年4月26日13:11:30)
- Java学习(七)
- MyEclipse乱码问题
- Java学习之Iterator(迭代器)的一般用法
- ubuntu下安装Eclipse
- 毕设笔记--SSH 之Spring管理
- RxJava学习笔记
- eclips引入Java源代码
- java虚拟机涉及内存溢出
- 一个JAVA class的秘密
- 安卓开发MyEclipse【服务器创建】
- SpringMvc - 用户注册自动生成默认头像深色底/浅色字工具类实现
- 学习Spring(二) -- Spring配置文件基本属性详解