课程:Java程序设计实验 班级:1352 姓名: 于佳心 学号:20135206
成绩: 指导教师:娄嘉鹏 实验日期及时间:2015.05.05
座位号: 必修/选修:选修 实验序号:02
实验名称:Java开发环境的熟悉
实验设备:
实验仪器:
名称 |
型号 |
数量 |
计算机 |
|
1 |
实验楼 |
|
1 |
实验内容:
1. 初步掌握单元测试和TDD
2. 理解并掌握面向对象三要素:封装、继承、多态
3. 初步掌握UML建模
4. 熟悉S.O.L.I.D原则
5. 了解设计模式
步骤 |
耗时 |
百分比 |
需求分析 |
20min |
10% |
设计 |
50min |
25% |
代码实现 |
50min |
25% |
测试 |
30min |
10% |
分析总结 |
50min |
40% |
实验步骤:
(一)单元测试
(1)三种代码
伪代码:伪代码与具体编程语言无关,不要写与具体编程语言语法相关的语句
产品代码:将伪代码用特定编程语言翻译
测试代码:证明自己的代码没有问题
伪代码和产品代码
简单测试
比较完整的测试
对于错误输入的测试,发现问题!
解决问题
对于边缘数的测试,发现问题!
解决问题,得到完好的程序
(2)TDD
TDD的一般步骤如下:
- 明确当前要完成的功能,记录成一个测试列表
- 快速完成编写针对此功能的测试用例
- 测试代码编译不通过(没产品代码呢)
- 编写产品代码
- 测试通过
- 对代码进行重构,并保证测试通过(重构下次实验练习)
- 循环完成所有功能的开发
创建Source Folder
创建JUnit Test Case
输入测试代码,有错误(因为还没有产品代码呢)
测试条是红的,失败
写出完整的代码,测试条是绿的,测试通过
在不同方面进行测试,均通过
(二)面向对象三元素
(1)抽象
(2)封装、继承和多态(三元素)
Animal类(最终程序)
Dog类(最终程序)
Cat类(最终程序)
测试类(最终程序)
实验介绍了Umbrello使用方法:
建立一个名为Dog的小方框(类)
在Display中删去Public Only
创建私有的功能
创建公有功能
最终完整版,与上面的程序对应,带三角的直线直线父类,表示继承
(三)设计模式初步
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,依赖倒置原则)
模式可以看作对一个问题可复用的专家级解决方法
这里面最重要的是设计模式,在面向对象中设计模式的地位可以和面向过程编程中的数据结构的地位相当。
(四)使用TDD的方式设计并实现复数类Complex
伪代码:
产品代码:
测试代码:
测试结果:通过计算,测试通过(想不到更好的测试方法了)
单元测试的好处:
1、经过单元测试的代码,质量能够得到保证
2、单元测试发现的问题很容易定位。
3、修改代码犯的错,经过单元测试易发现
4、单元测试可以在早期就发现性能问题
本次实验中遇到的问题:
1.经常一不小心使用中文字符,导致编译失败
2.猫和狗的那个程序,刚开始怎么都编译不成功,后来想到把Cat类和Dog类作为单独的文件,编译成功
3.复数的定义,涉及到int和double的问题,刚开始定义的乱七八糟,后来经过反复纠错,统一用int,并将除法的值也int化,重要解决
4.还是不太习惯虚拟机,好多按键都找不到,所以除了umbrello之外都是在windows里完成(虚拟机比以前好用了,可以动了,但因为网速问题,还是不流畅)
实验收获:
这次实验的难度明显比上次加大,花费时间也长了好多,好在实验指导里的步骤很详细,还介绍了好多知识,前两个实验论代码都是简单的内容,但涉及了TDD,掌握了新的编程技能,umbrello软件有点好玩,最后那个程序难度比较大,好久才出来(复数是什么本来早就忘记了,计算方法也忘得差不多了,到网上现找资料补习)