课程:《程序设计与数据结构》
班级: 1823
姓名: 魏冰妍
学号:20182330
实验教师:王志强
实验日期:2019年9月23日
必修/选修: 必修

1.实验内容

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

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

  2. 理解并掌握面向对象三要素:封装、继承、多态(自己去学!)

  3. 初步掌握UML建模

  4. 完成蓝墨云上 (1)-(5)实验。

2. 实验过程及结果

实验一

参考 http://www.cnblogs.com/rocedu/p/6371315.html#SECUNITTEST

http://www.cnblogs.com/rocedu/p/6736847.html

提交最后三个测试用例都通过的截图,截图上要有画图加水印,输入自己的学号。
20182330 2019-2020-1 《数据结构与面向对象程序设计》实验三报告

实验二

参考 积极主动敲代码,使用JUnit学习Java (http://www.cnblogs.com/rocedu/p/4837092.html)
参考(http://www.cnblogs.com/rocedu/p/6736847.html)
以 TDD的方式研究学习StringBuffer,提交你的单元测试用例和测试通过的截图,截图要加上学号水印。

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

实验三

实验三 Java面向对象程序设计(http://www.cnblogs.com/rocedu/p/4472842.html)

参考 http://www.cnblogs.com/rocedu/p/6736847.html

对设计模式示例进行扩充,体会OCP原则和DIP原则的应用,初步理解设计模式
用自己的学号(30)%6进行取余运算,根据结果进行代码扩充。我的题目是:
0:让系统支持Byte类,并在MyDoc类中添加测试代码表明添加正确。
完全没有看懂题目。准备待定

实验四

任务:以TDD的方式开发一个复数类Complex,要求如下:
// 定义属性并生成getter,setter
double RealPart;
double ImagePart;
20182330 2019-2020-1 《数据结构与面向对象程序设计》实验三报告
20182330 2019-2020-1 《数据结构与面向对象程序设计》实验三报告

实验五

使用WhiteStarUML对实验二中的代码进行建模,发类图的截图,加上学号水印。
参考 http://www.cnblogs.com/rocedu/p/6736847.html

类图中只少两个类。
20182330 2019-2020-1 《数据结构与面向对象程序设计》实验三报告

3. 实验过程中遇到的问题和解决过程

  • 问题1:根据教程无法安装JUnit,没有plugin选项,找不到JUnit。
    20182330 2019-2020-1 《数据结构与面向对象程序设计》实验三报告
    20182330 2019-2020-1 《数据结构与面向对象程序设计》实验三报告

  • 问题1解决方案:找了半天发现直接在创建test的页面选择安装JUnit即可。
    20182330 2019-2020-1 《数据结构与面向对象程序设计》实验三报告

  • 问题2:什么是OCP原则和DIP原则

  • 问题2解决方案:
    面向对象五大原则有SRP、OCP、LSP、DIP、ISP

  1. SRP(Single Responsibility Princple单一职责原则)一个设计元素只做一件事。之前一直在讨论这件事。
  2. OCP(Open Close Princple开闭原则)“Closed for Modification; Open for Extension”——对变更关闭;对扩展开放
  3. LSP(Liskov Substitution Principle 里氏替换原则)Liskov是这个原则的提出者。理解起来就像大于5的数一定大于2,子能存在的地方父一定可以。
  4. DIP(Dependence Inversion Principle 依赖倒置原则)关于这个的描述我只看懂了一句,要依赖于抽象,不要依赖于具体。
  5. ISP(Interface Segregation Principle 接口分隔原则)一个接口相当于剧本中的一种角色,而此角色在一个舞台上由哪一个演员来演则相当于接口的实现。因此一个接口应当简单的代表一个角色,接口隔离原则讲的就是同一个角色提供宽、窄不同的接口,以对付不同的客户端。

面向对象设计的五大原则之间并不是相互孤立的。彼此间存在着一定关联,一个可以是另一个原则的加强或是基础。违反其中的某一个,可能同时违反了其余的原则。因此应该把这些原则融会贯通,牢记在心!

  • 问题3:完全看不懂题目
    20182330 2019-2020-1 《数据结构与面向对象程序设计》实验三报告

  • 问题3解决方法:我再学习学习。。

  • 问题4
    不太会容量问题,博客中的运行结果与我的不同?
    20182330 2019-2020-1 《数据结构与面向对象程序设计》实验三报告

  • 问题4解决方案:通过反复查找,跟同学讨论,最终恍然大悟。

  • StringBuffer(String s)可以指定给对象的实体的初始容量为参数字符串s的长度额外再加16个字符。
    StringBuffer.append的用途是将字符串追加进原先的字符序列,容量是先拓展好的,所以它将遵循capacity的扩容方法继续扩容。

  • capacity扩容方法:

  1. 小于当前容量时,容量不变。
  2. 大于当前容量,并且小于(当前容量+1)2,则容量变为(当前容量+1)2。
  3. 大于当前容量,并且大于(当前容量+1)*2,则容量变为用户所设置的容量。

本代码中长度明显为12,当小于16时容量为16。博客中不知道为什么长度为17,研究了好久觉得不对,但是长度大于16所以容量为(当前容量+1)*2=34,这一点可以确定。
这样的话加分题也就迎刃而解了。
20182330 2019-2020-1 《数据结构与面向对象程序设计》实验三报告

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

  • 问题5
    测试出错
    20182330 2019-2020-1 《数据结构与面向对象程序设计》实验三报告
    20182330 2019-2020-1 《数据结构与面向对象程序设计》实验三报告

  • 问题5解决方法:解决了问题4,问题5就是小case了。因为长度设置的有问题所以lenth测试报错。而长度48大于默认容量16,也大于(默认容量+1)*2。所以应该是用户设定的容量64.

  • 问题6indexOf返回的是什么意思?

  • 问题6解决方法:简明说就是指定返回字符串中的第几个字符,若指定有误(大于或小于总长)则返回-1.这个文档对于学习真的很有帮助
    20182330 2019-2020-1 《数据结构与面向对象程序设计》实验三报告

其他(感悟、思考等)

  1. 自己摸索解决问题的过程很艰辛,但解决之后的收获也很大,希望能够继续保持。
  2. 本次实验做的很波折,问题很多,基础知识储备还是不够,需要自己多下功夫。

参考资料

相关文章:

  • 2022-12-23
  • 2022-03-05
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-10-22
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案