Java二

实验二

在运行这个代码时,Cat类和Dog类因为有重复定义而无法运行Animal的类文件。多次尝试后失败。求指导。

第三类实验

SOLID原则

  • SRP(Single      Responsibility Principle,单一职责原则)
  • OCP(Open-Closed      Principle,开放-封闭原则)
  • LSP(Liskov      Substitusion Principle,Liskov替换原则)
  • ISP(Interface      Segregation Principle,接口分离原则)
  • DIP(Dependency      Inversion Principle,依赖倒置原则)

Rule of three (三次原则):第一次用到某个功能时,你写一个特定的解决方法;第二次又用到的时候,你拷贝上一次的代码(违反了DRY);第三次出现的时候,你才着手"抽象化",写出通用的解决方法。

 第四类练习

 

 最后一个的Complex类是在我自己电脑里的eclipse实现的。Complex class 和test class都是按照实验一中的TDD设计方法建立的,建立了test文件及juint,但是在运行test文件时,run as中只有常规的运行console 窗口,运行成功,并未出现Junit选项。在多次更改ecilpse设置后,始终无法出现run as 中要使用动态条的选项。后来自己加上了@Test,就出现了Juint run 。运行之后ComplexTest文件中有两个错。一个是主函数不应该有参数,因此改为空参数类型的主函数;另一个是主函数不应定义为静态,因此将static删去。再次运行,成功!出现绿色条。

步骤耗时百分比
需求分析 2h  33.3% 
设计  2h  33.%
代码实现  1h  15.6%
测试 1h  15.6% 
分析总结

伪代码

建立一个复数类函数,建立成员对象。判断参数是否合法,将参数传值到函数中。建立一个复数加法函数。再建立一个复数减法函数。

 

public class ComplexTest{

 public static void main (String[] args){   Complex c =new Complex();   Complex c1 = new Complex (2,7);   Complex c2 = new Complex (5,2);   c1.Print();   c2.Print();   System.out.println("两复数之和为:");   System.out.println((c.Jia(c1, c2).rePart+"+"+c.Jia(c1, c2).imPart+"i").toString());   System.out.println("两复数之差为:");   System.out.println((c.Jian(c1, c2).rePart+"+"+c.Jian(c1, c2).imPart+"i").toString());  } }

 }

产品代码

public class Complex { double rePart,imPart; Complex() {  this.rePart=0;  this.imPart=0; } Complex(double rePart) {  this.rePart=rePart;  this.imPart=0; } Complex(double rePart,double imPart){  this.rePart=rePart;  this.imPart=imPart; } Complex Jia(Complex p1,Complex p2){  Complex p =new Complex(p1.rePart+p2.rePart,p1.imPart+p2.imPart);  return p; } Complex Jian(Complex p1,Complex p2){  Complex p =new Complex(p1.rePart-p2.rePart,p1.imPart-p2.imPart);  return p; }

void Print() {  System.out.println("复数的值为:");  if(this.imPart!=0)   System.out.println(this.rePart+"+"+this.imPart+"i");  else   System.out.println(this.rePart); }

测试代码

public class ComplexTest{

 public static void main (String[] args){   Complex c =new Complex();   Complex c1 = new Complex (2,7);   Complex c2 = new Complex (5,2);   c1.Print();   c2.Print();   System.out.println("两复数之和为:");   System.out.println((c.Jia(c1, c2).rePart+"+"+c.Jia(c1, c2).imPart+"i").toString());   System.out.println("两复数之差为:");   System.out.println((c.Jian(c1, c2).rePart+"+"+c.Jian(c1, c2).imPart+"i").toString());  } }

}

总结单元测试代码:

有了单元测试代码,我们在程序纠错中方便了许多。在运行中可能会一下子出错,无法一一纠正出来。有了单元测试,就知道运行的错误在哪,测试可以知道自己的产品代码是否符合要求,就只带运行出错在哪个环节。

 

posted @ 2015-05-07 20:44  20135311不是富东京  阅读(153)  评论(0编辑  收藏  举报