20145301《Java程序设计》实验二报告:Java面向对象程序设计

时间:2023-03-09 00:09:02
20145301《Java程序设计》实验二报告:Java面向对象程序设计

20145301《Java程序设计》实验二报告:Java面向对象程序设计

课程:Java程序设计

实验名称:Java面向对象程序设计

实验目的与要求:

  • 初步掌握单元测试和TDD
  • 理解并掌握面向对象三要素:封装、继承、多态
  • 初步掌握UML建模
  • 熟悉S.O.L.I.D原则
  • 了解设计模式

实验内容:

  • 使用TDD的方式设计关实现复数类Complex

程序步骤:

伪代码:

百分制转五分制:  
如果成绩小于60,转成“不及格”  
如果成绩在60与70之间,转成“及格”  
如果成绩在70与80之间,转成“中等”  
如果成绩在80与90之间,转成“良好”  
如果成绩在90与100之间,转成“优秀”  
其他,转成“错误”

产品代码:

public class MyUtil{
public static String percentage2fivegrade(int grade){
//如果成绩小于60,转成“不及格”
if (grade < 60)
return "不及格";
//如果成绩在60与70之间,转成“及格”
else if (grade < 70)
return "及格";
//如果成绩在70与80之间,转成“中等”
else if (grade < 80)
return "中等";
//如果成绩在80与90之间,转成“良好”
else if (grade < 90)
return "良好";
//如果成绩在90与100之间,转成“优秀”
else if (grade < 100)
return "优秀";
//其他,转成“错误”
else
return "错误";
}
}

测试代码:

public class
MyUtilTest {
public static void main(String[] args) {
//测试边界情况
if(MyUtil.percentage2fivegrade(0) != "不及格")
System.out.println("test failed 1!");
else if(MyUtil.percentage2fivegrade(60) != "及格")
System.out.println("test failed 2!");
else if(MyUtil.percentage2fivegrade(70) != "中等")
System.out.println("test failed 3!");
else if(MyUtil.percentage2fivegrade(80) != "良好")
System.out.println("test failed 4!");
else if(MyUtil.percentage2fivegrade(90) != "优秀")
System.out.println("test failed 5!");
else if(MyUtil.percentage2fivegrade(100) != "优秀")
System.out.println("test failed !");
else
System.out.println("test passed!");
}
}
  • TDD(Test Driven Devlopment, 测试驱动开发)
  • 概念:先写测试代码,然后再写产品代码的开发方法。一般步骤如下: 明确当前要完成的功能,记录成一个测试列表; 快速完成编写针对此功能的测试用例; 测试代码编译不通过(没产品代码呢); 编写产品代码; 测试通过
  • 20145301《Java程序设计》实验二报告:Java面向对象程序设计

测试结果:

20145301《Java程序设计》实验二报告:Java面向对象程序设计

  • 面向对象三要素
  • 抽象 程序设计中,抽象包括两个方面,一是过程抽象,二是数据抽象。

  • 封装、继承与多态

  • 封装 
    将数据与相关行为包装在一起以实现信息就隐藏。封装实际上使用方法(method)将类的数据隐藏起来,控制用户对类的修改和访问数据的程度,从而带来模块化和信息隐藏的好处。

public class Dog {
private String color;
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public String bark(){
return "汪汪";
}
public String toString(){
return "The Dog's color is " + this.getColor() +", and it shouts "+ this.bark() + "!";
}
}

检测

public class DogTest {
public static void main(String[] args) {
Dog d = new Dog();
d.setColor("Yellow");
getInfo(d);
}
public static void getInfo(Dog d) {
System.out.println(d.toString());
}
}
  • 继承  
    以封装为基础,一个类的定义可以基于另外一个已经存在的类,即子类基于父类,从而实现父类代码的重用。其更为广泛而重要的作用是实现多态。
  • 多态  
    在Java中,当我们用父类声明引用,用子类生成对象时,多态就出现了。

  • UML建模如下:

  • 20145301《Java程序设计》实验二报告:Java面向对象程序设计

其他

心得体会

此次试验是java的第二次试验,试验最大的收获是学习了Junit单元测试。一个单元测试从整个系统中单独检验产品程序代码的一个单元并检查其得到的结果是否是预期的。。其目的是在整合程序代码到系统的其余部分之前先测试以便找出程序代码中的问题错误bug。单元测试看似加大了我们的工作量和工作时间,但是在合作编写代码的过程中,却极大地提高了我们效率,它可以更好的对我们代码的每一个单元进行测试,从而更快的找到问题所在,为我们今后的进一步学习做了很好的铺垫。

PSP(Personal Software Process)时间:

步骤  耗时 百分比
需求分析  15分钟  10%
设计  30小时  20%
代码实现  45分钟 30%
测试  30钟  20%
分析总结  30分钟 20%

参考资料

    • 《Java学习笔记》
    • 《Java学习笔记》学习指导
    • 实验二 Java面向对象程序设计