20192310 实验三《Python程序设计》实验报告
学号 2020-2021-1 《数据结构与面向对象程序设计》实验三报告
课程:《程序设计与数据结构》
班级: 1923
姓名: 严嘉钰
学号:20192310
实验教师:王志强
实验日期:2020年10月11日
必修/选修: 必修
1.实验内容
-
初步掌握单元测试和TDD
-
理解并掌握面向对象三要素:封装、继承、多态
-
初步掌握UML建模
-
完成蓝墨云上 (1)-(5)实验。
2. 实验过程及结果
单元测试
新版的idea自带junit,使用时导入即可
此处我使用junit对实验二中编写的计算器程序进行三项测试:正常情况,错误情况,边界情况。都通过了。
@Test
表示方法是测试方法。与JUnit 4的@Test注释不同,这个注释不声明任何属性,因为JUnit Jupiter中的测试扩展基于它们自己的专用注释进行操作。
这些方法是继承的,除非它们被重写。
使用TDD学习stringbuffer
TDD的一般步骤如下:
- 明确当前要完成的功能,记录成一个测试列表
- 快速完成编写针对此功能的测试用例
- 测试代码编译不通过(没产品代码呢)
- 编写产品代码
- 测试通过
- 对代码进行重构,并保证测试通过(重构下次实验练习)
- 循环完成所有功能的开发
功能1:测试charat功能
发现测试失败,原因是粗心设置了大写,调整后测试通过
按照这个程式依次测试并检验通过并加以完善功能2:capacity;功能3:length;功能4:indexOf
最后均运行通过,完成对stringbuffer四个基本功能的学习:
使用TDD建立Complex类
依次编写复数的加减法,并在单元测试中通过
之后编写复数乘法,单元测试未通过
通过修改源代码,使单元测试运行通过
类似的完成编写复数除法功能
完成以TDD方法实现复数类的编写
理解并掌握面向对象三要素:封装、继承、多态
面向对象设计(OOD):OOD是一种提供符号设计系统的面向对象的实现过程,用非常接近问题域术语的方法把系统构造成“现实世界”的对象,关注怎么做(how),通过模型来实现功能规范。
封装实际上使用方法(method)将类的数据隐藏起来,控制用户对类的修改和访问数据的程度,从而带来模块化(Modularity)和信息隐藏(Information hiding)的好处;接口(interface)是封装的准确描述手段。
继承指一个类的定义可以基于另外一个已经存在的类,即子类基于父类.
多态是指不同的类对象调用同一个签名的成员方法时将执行不同代码的现象。多态是面向对象程序设计的灵活性和可扩展性的基础。
- OCP(Open-Closed Principle,开放-封闭原则)
OCP可以用以下手段实现:(1)抽象和继承,(2)面向接口编程 - DIP的内容是
1.高层模块不应该依赖于低层模块。二者都应该依赖于抽象
2.抽象不应该依赖于细节。细节应该依赖于抽象
通过对云班课第三个提交点:加入对Float的支持 的完成实现部分掌握封装继承多态:
初步掌握UML建模
对刚刚的 添加对Float支持 uml建模
3. 实验过程中遇到的问题和解决过程
- 问题1:使用junit时test飘红
- 问题1解决方案:点击旁边的小灯泡依据提示自动导入junit.jar包
- 问题2:使用junit中assert方法时显示无此方法
- 问题2解决方案:百度查找,发现需要导入org.junit.jupiter.api.Assertions.*
- 问题3:对第三第四个提交点中的代码编写没有头绪
- 问题3解决办法:通过博客园查找往届的代码获得思路
其他(感悟、思考等)
自学代码并非易事,在编写代码时要善用互联网,查找不清楚的知识点,而在对代码毫无头绪的时候可以参考他人的代码从中汲取营养