实验二
Java实验报告二:Java开发环境的熟悉
一、实验要求:
1.没有Linux基础的同学建议先学习《Linux基础入门(新版)》《Vim编辑器》 课程
2.完成实验、撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等)、解决办法(空洞的方法如“查网络”、“问同学”、“看书”等一律得0分)以及分析(从中可以得到什么启示,有什么收获,教训等)。报告可以参考范飞龙老师的指导
3. 严禁抄袭,有该行为者实验成绩归零,并附加其他惩罚措施。
4. 请大家先在实验楼中的~/Code
目录中用自己的学号建立一个目录,代码和UML图要放到这个目录中,截图中没有学号的会要求重做,然后跟着下面的步骤练习。
二、实验内容
1. 初步掌握单元测试和TDD
2. 理解并掌握面向对象三要素:封装、继承、多态
3. 初步掌握UML建模
4. 熟悉S.O.L.I.D原则
三、实验过程
实验一:
需求:我们要在一个MyUtil
类中解决一个百分制成绩转成“优、良、中、及格、不及格”五级制成绩的功能。
实验二:
TDD(Test Driven Devlopment, 测试驱动开发)
- 明确当前要完成的功能,记录成一个测试列表
- 快速完成编写针对此功能的测试用例
- 测试代码编译不通过(没产品代码呢)
- 编写产品代码
- 测试通过
- 对代码进行重构,并保证测试通过(重构下次实验练习)
- 循环完成所有功能的开发
实验三:
我们可以用UML中的类图来描述类Dog
,首先我们在实验楼的环境中打开shell,在命令行中输入umbrello
,打开UML建模软件umbrello
在UML 里,一个类的属性能显示它的名字,类型,初始化值,属性也可以显示private,public,protected。 类的方法能显示它们的方法名,参数,返回类型,以及方法的private,public,protected属性。
实验四:
使用TDD的方式设计关实现复数类Complex。
步骤 | 耗时 | 百分比 |
---|---|---|
需求分析 | 1h | |
设计 | 1h | |
代码实现 | 1h | |
测试 | 30min | |
分析总结 |
伪代码:
复数的加减运算:定义一个整型a作为实部;定义一个整型b作为虚部;运算后定义newA作为实部;运算后定义newB作为虚部;加法运算返回p1;减法运算返回p2;输出加、减运算结果;
产品代码:
class complex
{
int a,b;
complex(int a,int b){
this.a=a;
this.b=b;
}
int Shi(){
return a;
}
int Xu(){
return b;
}
complex add(complex p){
int aa=p.Shi();
int bb=p.Xu();
int newA=aa+a;
int newB=bb+b;
complex p1=new complex(newA, newB);
return p1;
}
complex sub(complex p){
int aa=p.Shi();
int bb=p.Xu();
int newA=aa-a;
int newB=bb-b;
complex p2=new complex(newA,newB);
return p2;
}
}
public class Shiyan{
public static void main(String[] args){
complex c1=new complex(1,2);
complex c2=new complex(3,4);
complex p1=c1.add(c2);
int p1a=p1.Shi();
int p1b=p1.Xu();
System.out.println("a="+p1a+",bi="+p1b+"i");
System.out.printf("和=%d+%di",p1a,p1b);
System.out.println();
complex p2=c1.sub(c2);
int p2a=p2.Shi();
int p2b=p2.Xu();
System.out.printf("差=%d-%di",p1a,p1b);
}
}
测试代码:
五、实验收获
单元测试的好处是让大家处于时刻注意的状态,进度不会赶。并且可以抽出时间练习