20192329 2020-2021-1《数据结构与面向对象程序设计》实验三报告
课程:《程序设计与数据结构》
班级: 1923
姓名: 李元和
学号:20192329
实验教师:王志强
实验日期:2020年10月12日
必修/选修: 必修
1.实验内容
下载安装并使用IDEA,完成下面实验(https://www.cnblogs.com/rocedu/p/6371315.html)。
-
初步掌握单元测试和TDD
-
理解并掌握面向对象三要素:封装、继承、多态
-
初步掌握UML建模
-
完成蓝墨云上 (1)-(5)实验。
2. 实验过程及结果
2.1 蓝墨云班课3-1
参考 http://www.cnblogs.com/rocedu/p/6371315.html#SECUNITTEST
参考 http://www.cnblogs.com/rocedu/p/6736847.html
提交最后三个测试用例都通过的截图,截图上要有画图加水印,输入自己的学号。
实验过程:
通过翻转课堂,我学会单元测试。首先通过简单方法粗略的进行讲解原理,对此我编写了简单代码进行测试。测试过程如下
产品代码如下
1.
测试代码如下
2.
3.
4.
在以上的基础上我们开始学习TDD测试驱动开发,对此我编写了简单的TDD驱动测试代码,TDD截图如下
5.
2.2蓝墨云班课3-2
参考 积极主动敲代码,使用JUnit学习Java(http://www.cnblogs.com/rocedu/p/4837092.html)
参考http://www.cnblogs.com/rocedu/p/6736847.html
以 TDD的方式研究学习StringBuffer,提交你的单元测试用例和测试通过的截图,截图要加上学号水印。
实验过程
学习StringBuffer,并且编写产品代码如下:
6.
TDD测试代码如下:
7.
运行结果如下
8.
2.3蓝墨云班课3-3
实验三 Java面向对象程序设计(http://www.cnblogs.com/rocedu/p/4472842.html)
参考http://www.cnblogs.com/rocedu/p/6736847.html
对设计模式示例进行扩充,体会OCP原则和DIP原则的应用,初步理解设计模式
用自己的学号%6进行取余运算,根据结果进行代码扩充:
0:让系统支持Byte类,并在MyDoc类中添加测试代码表明添加正确,提交测试代码和运行结的截图,加上学号水印
1:让系统支持Short类,并在MyDoc类中添加测试代码表明添加正确,提交测试代码和运行结的截图,加上学号水印
2:让系统支持Boolean类,并在MyDoc类中添加测试代码表明添加正确,提交测试代码和运行结的截图,加上学号水印
3:让系统支持Long类,并在MyDoc类中添加测试代码表明添加正确,提交测试代码和运行结的截图,加上学号水印
4:让系统支持Float类,并在MyDoc类中添加测试代码表明添加正确,提交测试代码和运行结的截图,加上学号水印
5:让系统支持Double类,并在MyDoc类中添加测试代码表明添加正确,提交测试代码和运行结的截图,加上学号水印
实验过程
20192329%6取余为1,应做short类,摘抄并补充产品代码,截图如下:
9.
10.
11.
运行截图如下:
12.
2.4蓝墨云班课3-4
提交:单元测试代码和运行成功截图及码云上代码链接,截图要加上学号水印
参考http://www.cnblogs.com/rocedu/p/6736847.html
任务:以TDD的方式开发一个复数类Complex,要求如下:
// 定义属性并生成getter,setter
double RealPart;
double ImagePart;
实验过程
产品代码以及测试过程
13.
2.5蓝墨云班课3-5
使用WhiteStarUML对实验二中的代码进行建模,发类图的截图,加上学号水印。
参考http://www.cnblogs.com/rocedu/p/6736847.html
实验过程
产品截图如下:
14.
3. 实验过程中遇到的问题和解决过程
- 问题1:蓝墨云班课3-2的TDD实验中@Test变红
- 问题1解决方案:选择@Test中前面的红灯泡,将其点击选择第二个选项
- 问题2:什么是OCP原则和DIP原则
- 问题2解决方案: 面向对象五大原则有SRP、OCP、LSP、DIP、ISP
SRP(Single Responsibility Princple单一职责原则)一个设计元素只做一件事。之前一直在讨论这件事。
OCP(Open Close Princple开闭原则)“Closed for Modification; Open for Extension”——对变更关闭;对扩展开放
LSP(Liskov Substitution Principle 里氏替换原则)Liskov是这个原则的提出者。理解起来就像大于5的数一定大于2,子能存在的地方父一定可以。
DIP(Dependence Inversion Principle 依赖倒置原则)关于这个的描述我只看懂了一句,要依赖于抽象,不要依赖于具体。
ISP(Interface Segregation Principle 接口分隔原则)一个接口相当于剧本中的一种角色,而此角色在一个舞台上由哪一个演员来演则相当于接口的实现。因此一个接口应当简单的代表一个角色,接口隔离原则讲的就是同一个角色提供宽、窄不同的接口,以对付不同的客户端。
面向对象设计的五大原则之间并不是相互孤立的。彼此间存在着一定关联,一个可以是另一个原则的加强或是基础。违反其中的某一个,可能同时违反了其余的原则。因此应该把这些原则融会贯通,牢记在心! - 问题3:indexOf返回的是什么意思?
- 问题三解决方法:简明说就是指定返回字符串中的第几个字符,若指定有误(大于或小于总长)则返回-1.
其他(感悟、思考等)
开始进行翻转课堂时很不习惯,在实验进行中,面对完全陌生的知识点需要自己一步一步自我学习,与以往的学习方式不同,造成了很大的不适应。慢慢通过自我学习和教程解决了越来越多的困难,发现相比普通的学习方式,翻转课堂中我对知识点的理解变得更加熟悉,从老师对我撒下知识的雨滴,我却打开了雨伞,变成了自己撒下雨滴,对知识点有了第一手完整自我的见解,希望自己能够越来越适应这样的教学方式,翻转课堂牛逼!(笑)