20172301 2017-2018-2 《程序设计与数据结构》实验二报告

20172301 2017-2018-2 《程序设计与数据结构》实验二报告

课程:《程序设计与数据结构》
班级: 1723
姓名: 郭恺
学号: 20172301
实验教师:王志强老师
实验日期:2018年4月18日
必修/选修: 必修

实验内容

  1. 初步掌握单元测试和TDD
  2. 理解并掌握面向对象三要素:封装、继承、多态
  3. 初步掌握UML建模
  4. 熟悉S.O.L.I.D原则
  5. 了解设计模式

实验过程及结果

  • 第一个提交点:学习Junit的使用

    • 在IDEA中下载Junit,以便后续能够测试类和方法。
    • 编写MyUtil.java,分别创建正常情况,错误情况,边界情况的测试
    • 实验结果如图:
    • 实验链接
    • 测试
  • 第二个提交点:以 TDD的方式研究学习StringBuffer

    • 了解什么是TDD(测试驱动开发)

    明确当前要完成的功能,记录成一个测试列表
    快速完成编写针对此功能的测试用例
    测试代码编译不通过(没产品代码呢)
    编写产品代码
    测试通过
    对代码进行重构,并保证测试通过(重构下次实验练习)
    循环完成所有功能的开发

    • 分别测试StringBuffer的几个方法。(buffer.charAt(),buffer.capacity(),buffer.indexOf())
    • 实验结果如图:
    • 实验链接
    • 测试
  • 第三个提交点:让系统支持Short类,并在MyDoc类中添加测试代码

    • 学习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,依赖倒置原则)

    • 仿照例子编写代码。
    • 实验结果如图:

    • 实验链接
  • 第四个提交点: 以TDD的方式开发一个复数类Complex

    • 思路:私有变量RealPartImagePart。分别提供get和set访问和修改方法。重载方法equalstoString。编写复数加减乘除的方法。
      注意toString方法中要考虑到实部和虚部分别为0的时候。
    • 实验结果如图:



      这是测试代码。

    • 实验链接
    • 测试
  • 第五个提交点:使用StarUML对实验二中的代码进行建模

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

  • 问题1:Junit找不到测试?!
    如图:
    ···

  • 问题1解决方案:在测试办法前面加test,即把get()改为testget()。这样后就可以运行了。
    参考资料: junit.framework.AssertionFailedError: No tests found in错误解决办法

  • 问题2:Complex类测试后显示红条,因为实际值和预测值不相等,然后查看异常以后两个内容是完全一样的。我不明白为什么内容完全一样的两个值却输出不相等。
    如图:

  • 问题2解决方案:这个我也看了别的同学在蓝墨云上面的提问,有的预测结果就是String型,实际则是Complex型,是不相等的。而我的都是Complex对象却仍旧显示红条。询问了学长,他告诉我要调用to.string方法。确实成功了。但是,我却不知道为什么。

在Junit测试里,你的预期值和实际值之所以不同是因为程序比较的不是内容,而是他的引用本身,所以这里调用toString相当于把它们的引用搞成相同的了,因为之前你的复数类型不是String的,就没有比较它们的引用,它们的引用也不一样,所以是红条。

学长的意思是在junit测试里,比较的不是内容,这也就是为什么我的两个内容相等却仍然是红条。所以,这里调用toString方法实际上是把他们引用相同地址,这样就会变绿。

其他(感悟、思考等)

实验主要考察的是自主学习和实践学习,简言之,做中学。第四个实验我遇到错误以后想了很久,也查阅了很多资料,虽然最后还是请教了学长才得以解决,但是我自己也有了一个思考的过程,能够更加深刻的理解错误,以后避免错误。这次的实验耗费的时间虽然多,但是对我本身的代码编写的实力有一定的提升,加油吧。

参考资料

posted @ 2018-04-25 17:05  奈何明月ઇଓ  阅读(223)  评论(2编辑  收藏  举报
页尾