实验二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的学习过程一样,进展很慢,脑子里知道这个程序的流程,但却不能很快地用程序语言描述出来,在对象、接口这方面很不熟悉,还要花大力气多编程,争取把每个程序实践一遍

posted @ 2015-10-11 21:49  杨小芽  阅读(242)  评论(0编辑  收藏  举报