zoukankan      html  css  js  c++  java
  • 实验二Java面向对象程序设计

    一、单元测试

    了解三种代码:

    1、伪代码:类似于自然语言说明,描述实现逻辑思维

    2、产品代码:程序员编辑的开发代码,要求可修改、可移植

    3、测试代码:我理解是相当于开发软件在软件开放之前,程序员找到bug。比如一些边界情况的测试。

    二、TDD(测试驱动开发)

    1、概念:先列出测试表,编写测试用例,再写开发代码

    2、先考虑边界值,能够减少二次开发和调试bug的工作量

    三、面向对象三要素

     1、封装:将对象的一些信息包装起来,控制用户对类的修改,开放接口,用户依旧能访问可以访问的数据,起到信息隐藏的作用
    
     2、继承:一个类基于另外已存在的类实现相关作用,可以减少代码的重复率。
    
     3、多态:在Java中,当我们用父类声明引用,用子类生成对象时,多态就出现了,我的理解多态就是父类子类共同存在,不同的类对象调用同一个成员,但执行代码不同
    
     4、自己在电脑上使用测试的截图:
    

     5、我认为模块化就是把根据伪码,把类对象列出,把相关对象的继承、封装用UML图表示出来,然后直接把UML图转化为Java代码
    
     6、自己在实现的时候,类之间的静态关系没有画出来
    

     7、在安装umbrello的时候,在更新软件包时,直接输入apt -get update不能直接更新,后来在命令前面加上sudo更新后再输入sudo apt -get install umbrello即可
    

    四、练习

    1、伪代码:

      1)加法:实部加实部,虚部加虚部
      2)减法:实部减实部,虚部减虚部
      3)乘法:a的实部与虚部分别与b的实部和虚部相乘,a.r*a.r-a.i*b.i+a.i*b.r+a.r*b.i
    

    2、测试代码:

      1)虚部和实部输入为0;
      2)虚部输入为负数
         (还没弄好)
    

    3、目前设计好的程序代码:

    public class Complex
    {
    private final double re; // 实部
    private final double im; // 虚部

    public Complex(double real, double imag)   
    {  
        re = real;  
        im = imag;  
    }  
    
    public String toString() {  
        if (im == 0) return re + "";  
        if (re == 0) return im + "i";  
        if (im <  0) return re + " - " + (-im) + "i";  
        return re + " + " + im + "i";  
    }  
    
    public Complex plus(Complex b) {  
        Complex a = this;            
        double real = a.re + b.re;  
        double imag = a.im + b.im;  
        return new Complex(real, imag);  
    }  
    
    public Complex minus(Complex b) {  
        Complex a = this;  
        double real = a.re - b.re;  
        double imag = a.im - b.im;  
        return new Complex(real, imag);  
    }  
    
    public Complex times(Complex b) {  
        Complex a = this;  
        double real = a.re * b.re - a.im * b.im;  
        double imag = a.re * b.im + a.im * b.re;  
        return new Complex(real, imag);  
    }  
    
    public Complex times(double alpha) {  
        return new Complex(alpha * re, alpha * im);  
    }  
    
    public double re() { return re; }  
    
    public double im() { return im; }  
    
    public static Complex plus(Complex a, Complex b)   
    {  
        double real = a.re + b.re;  
        double imag = a.im + b.im;  
        Complex sum = new Complex(real, imag);  
        return sum;  
    }  
    
    public static void main(String[] args) { 
        Complex a = new Complex(5.0, 6.0);  
        Complex b = new Complex(-3.0, 4.0);  
    
        System.out.println("a            = " + a);  
        System.out.println("b            = " + b);  
        System.out.print("R(a)        = " + a.re());  
        System.out.println("	I(a)        = " + a.im());  
        System.out.print("R(b)        = " + b.re());  
        System.out.println("	I(b)        = " + b.im());  
        System.out.println("b + a        = " + b.plus(a));  
        System.out.println("a - b        = " + a.minus(b));  
        System.out.println("a * b        = " + a.times(b));  
        System.out.println("b * a        = " + b.times(a));  
    }   
    

    }
    运行结果如下:

    总结:感觉还是和C的学习过程一样,进展很慢,脑子里知道这个程序的流程,但却不能很快地用程序语言描述出来,在对象、接口这方面很不熟悉,还要花大力气多编程,争取把每个程序实践一遍

  • 相关阅读:
    关联A850刷机包 高级电源 时间中心 优化 ROOT 动力 美化 简化
    CodeForces 425E Sereja and Sets
    int有符号和无符号类型内存 -- C
    软件体系结构————防御性编程
    Hibernate各保存方法之间的差 (save,persist,update,saveOrUpdte,merge,flush,lock)等一下
    椭圆识别
    UVa 10223
    照片详细解释YUV420数据格式
    LeetCode:Reverse Integer
    看了此文你还不懂傅里叶变换,那就来掐我吧
  • 原文地址:https://www.cnblogs.com/20159212yx/p/4870174.html
Copyright © 2011-2022 走看看