zoukankan      html  css  js  c++  java
  • 20145229吴姗珊《java程序设计》第2次实验报告

    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
  • 相关阅读:
    LeetCode
    LeetCode
    LeetCode
    LeetCode
    netty中Pipeline的ChannelHandler执行顺序案例详解
    Pi-设置无线
    Pi1-Centos
    gitlab升级
    ansible
    我也玩Jenkins
  • 原文地址:https://www.cnblogs.com/20145229ss/p/5393850.html
Copyright © 2011-2022 走看看