20145304 实验二实验报告
实验二 Java面向对象程序设计
实验内容
- 1.初步掌握单元测试和TDD;
- 2.理解并掌握面向对象三要素:封装、继承、多态;
- 3.初步掌握UML建模;
- 4.熟悉S.O.L.I.D原则;
- 5.了解设计模式。
实验步骤
单元测试
- 1.三种代码:
- 伪代码:
百分制转五分制:
如果成绩小于60,转成“不及格”
如果成绩在60与70之间,转成“及格”
如果成绩在70与80之间,转成“中等”
如果成绩在80与90之间,转成“良好”
如果成绩在90与100之间,转成“优秀”
其他,转成“错误”
-
产品代码:
-
测试代码:
TDD
- 1.新建一个测试目录:
- 2.增加第一个测试用例:
- 3.修改代码,出现绿条,测试完成:
UML
-
1.新建一个class:
-
2.右键Dog类,选择Add,再点击Attribute,填好内容;
-
3.右键Dog类,选择Add,再点击Operation,填好内容;
-
4.按上面的步骤再添加一个Cat类:
设计模式初步:
-
面向对象三要素是“封装、继承、多态”,任何面向对象编程语言都会在语法上支持这三要素。如何借助抽象思维用好三要素特别是多态还是非常困难的,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,依赖倒置原则)
练习
伪代码
输入两个复数a,b
实现a,b相加并输出
实现a,b相减并输出
实现a,b相乘并输出
产品代码
package cc.openhome;
import java.util.Scanner;
public class Complex {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.printf("请输入a的实部和虚部");//输入两个复数
double ra=scanner.nextDouble();
double ia=scanner.nextDouble();
System.out.printf("请输入b的实部和虚部");
double rb=scanner.nextDouble();
double ib=scanner.nextDouble();
double addR,addI,minusR,minusI,MultiR,MultiI;
System.out.printf("a+b=%.2f+%.2fi%n",ra+rb,ia+ib);
System.out.printf("a-b=(%.2f)+(%.2fi)%n",ra-rb,ia-ib);
System.out.printf("a*b=%.2f+%.2fi%n",(ra*rb)-(ia*ib),(rb*ia)+(ra*ib));
}
测试结果
PSP
步骤 | 耗时 | 百分比 |
---|---|---|
需求分析 | 10分钟 | 9% |
设计 | 20分钟 | 18% |
代码实现 | 30分钟 | 27% |
测试 | 20分钟 | 28% |
分析总结 | 30分钟 | 27% |
单元测试的好处
- 可以根据需求设计相应的代码,不浪费精力在不你要的代码上;
- 设计代码时考虑问题更加全面,不容易漏掉重要的环节;
- 运用了换位思考的方式来设计实现代码,用户满意度比较高。
问题及解决过程
有尝试使用调用函数的方法来实现练习,但编译过程中出现错误未能解决,已至无法进行下去,所以换用较为简单的做法。我会在今后的学习中努力解决这个问题。