20165336 实验二 Java面向对象程序设计
一、实验报告封面
课程:Java程序设计 班级:1653班 姓名:康志强 学号:20165336
指导教师:娄嘉鹏 实验日期:2018年4月16日
实验时间:13:45 - 15:25 实验序号:实验二
实验名称:Java面向对象程序设计
实验目的与要求:
二、实验内容
1初步掌握单元测试和TDD
2 理解并掌握面向对象三要素:封装、继承、多态
3 初步掌握UML建模
4 熟悉S.O.L.I.D原则
5 了解设计模式
三、实验要求
1.没有Linux基础的同学建议先学习《Linux基础入门(新版)》《Vim编辑器》 课程
2.完成实验、撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等)、解决办法(空洞的方法如“查网络”、“问同学”、“看书”等一律得0分)以及分析(从中可以得到什么启示,有什么收获,教训等),严禁抄袭。
四、实验步骤
提交点一
知识点:
TDD的一般步骤如下:
- 明确当前要完成的功能,记录成一个测试列表
- 快速完成编写针对此功能的测试用例
测试代码编译不通过(没产品代码呢) - 编写产品代码
- 测试通过
- 对代码进行重构,并保证测试通过(重构下次实验练习)
- 循环完成所有功能的开发
TDD的编码节奏是:
- 增加测试代码,JUnit出现红条
- 修改产品代码
- JUnit出现绿条,任务完成
提交点要求
提交最后三个JUnit测试用例(正常情况,错误情况,边界情况)都通过的截图,截图上要有画图加水印,输入自己的学号
本提交点考查JUnit会不会使用,测试用例至少要包含正常情况,错误情况,边界情况的测试
结果截图:
提交点二
知识点:
- 学会使用API
- 掌握TDD
提交点要求
以 TDD的方式研究学习StringBuffer
提交你的单元测试用例和测试通过的截图,截图要加上学号水印;
测试自己会不会写JUnit测试用例.
结果截图:
提交点三
知识点:
- 面向对象三要素:封装、继承、多态
S.O.L.I.D原则
面向对象三要素是“封装、继承、多态”,任何面向对象编程语言都会在语法上支持这三要素。如何借助抽象思维用好三要素特别是多态还是非常困难的,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,依赖倒置原则)
OCP是OOD中最重要的一个原则,OCP的内容是:
- software entities (class, modules, function, etc.) should open for extension,but closed for modification.
- 软件实体(类,模块,函数等)应该对扩充开放,对修改封闭。
提交点要求
让系统支持Short类,并在MyDoc类中添加测试代码表明添加正确,提交测试代码和运行结的截图,加上学号水印
结果截图:
提交点四
知识点:
- 熟练掌握TDD
- 运用TDD实现对复数程序的测试
提交点要求
以TDD的方式开发一个复数类Complex,
提交你的单元测试用例和测试通过的截图,截图要加上学号水印;
结果截图:
提交点五
知识点:
- 学会使用whitestaruml
- 掌握whitestaruml建类、接口、声明变量参数等。
提交点要求
使用StarUML对实验二中的代码进行建模,发类图的截图,加上学号水印
类图中只少两个类
类,继承,接口实现,组合在UML中表达
结果截图:
五、实验中遇到的问题
问题一:在刚开始完成提交点一时,需要安装junit.jar,与junit 4-12.jar,否则部分方法与测试Idea会出现无法运行结果
六、实验感想
这次实验提高了我的动手能力,丰富了我的JAVA语言知识,让我对TDD的从懵懂到学会运用并掌握,这是一个质的飞跃,因为TDD可以解决很多的实际问题,与Java相关的Uml图也让我得到了了解,当自己静下心来慢慢琢磨代码时我认为是对一个信息安全系学生最有意义的时刻,当看着自己所编写的代码顺利运行时,心里的激动与喜悦是难以言表的,这次实验提高了我对JAVA的认识,提供给我了不同的解决问题的思考路径,这让我在今后的实验中获益匪浅。