20192329 2020-2021-1《数据结构与面向对象程序设计》实验三报告

课程:《程序设计与数据结构》
班级: 1923
姓名: 李元和
学号:20192329
实验教师:王志强
实验日期:2020年10月12日
必修/选修: 必修

1.实验内容

下载安装并使用IDEA,完成下面实验(https://www.cnblogs.com/rocedu/p/6371315.html)。

  1. 初步掌握单元测试和TDD

  2. 理解并掌握面向对象三要素:封装、继承、多态

  3. 初步掌握UML建模

  4. 完成蓝墨云上 (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.

其他(感悟、思考等)

开始进行翻转课堂时很不习惯,在实验进行中,面对完全陌生的知识点需要自己一步一步自我学习,与以往的学习方式不同,造成了很大的不适应。慢慢通过自我学习和教程解决了越来越多的困难,发现相比普通的学习方式,翻转课堂中我对知识点的理解变得更加熟悉,从老师对我撒下知识的雨滴,我却打开了雨伞,变成了自己撒下雨滴,对知识点有了第一手完整自我的见解,希望自己能够越来越适应这样的教学方式,翻转课堂牛逼!(笑)

参考资料

posted on 2020-10-13 00:07  巴巴六的小斧头  阅读(98)  评论(0编辑  收藏  举报