zoukankan      html  css  js  c++  java
  • 20172324 2017-2018-2《程序设计与数据结构》实验2报告

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

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

    一、实验内容

    • 利用JUnit测试工具测试编写的类是否有问题
    • 了解TDD是什么并利用JUnit来辅助进行TDD测试研究StringBuffer
    • 代码扩充,体会OCP原则和DIP原则的应用,初步理解设计模式
    • 使用StarUML建模,在UML中表达类,继承,接口实现,组合
    • 其中Eclipse相关的内容参考Intellj IDEA 简易教程换成IDEA实现

    二、实验过程及结果

    这几个实验不算难,看老师给的步骤就能按部就班的完成,但是第一次接触的时候最重要的就是理解。比如第一个实验,因为我没有directory目录,所以我就卡了很久。后面的东西也就难以理解了。

    第一个实验是利用JUnit4测试一个成绩所对应的等级时候有问题,这个实验不难,所以思考的是JUnit3和JUnit4的区别。具体的可以看JUnit3 与 JUnit4 的区别。简单的说有三个不同,一个是JUnit4使用org.junit.包而JUnit3.8使用的是junit.Framework。第二个是在JUnit3中,测试类需要继承junit.framework.TestCase类,而在JUniy4则不用。第三是JUnit3通过分析方法名称来识别测试方法:方法名必须以“test”为前缀,它必须返回void,而且它必须没有任何参数(例如 public void testDivide())。JUnit4中,测试方法不必以'test'为前缀,而是使用@Test注解。总体来言JUnit4更简单、更丰富、更易于使用。

    第二个实验中进行TDD测试了索引所对应的字符串是否正确、返回当前容量(特别说了capacity和length的区别,前者是目前的最大容量,后者是字符串的长度)、返回第一次出现的指定子字符串在此字符串中的索引。

    第三个实验用自己的学号%6进行取余运算,根据结果进行代码扩充让系统支持Byte类(对于我的学号,定义byte类就ok了)。学长指出了我的变量名之间不对应的问题,在下面问题中修正。

    第四个实验以TDD的方式开发一个复数类并要求定义属性并生成getter,setter,定义构造函数和加减乘除这几个方法。我第一遍没能理解题意。在重写toString方法时毫无头绪以为只是随意输出值就可以了,后面发现当我输入(a+bi)时idea提示我没有定义i之后才感觉到应该想办法重写toString方法。第四个实验遇到的问题比较多,我在下面一一解答了。

    第五个实验是画类图,感觉非常有趣,需要注意的就这两点,一个是+-~#分别代表的含义,还有一个是抽象化是用斜体标识的。

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

    • 问题1:第一步就出现了问题...我只有package包没有Directory目录,所以我无法设置将目录转变为Test Sources Root利用JUnit去测试。

    • 问题1解决方案:无法创建目录的原因是因为等级不够,原来最高一级的就是目录了,所以最后重新创建了一个module,把原来的东西复制到这个模块下,就能重新创建目录了。

    • 问题2:在实验三中public class Data会提示错误,public class Document也会提示错误,原因?

    • 问题2解决方案:public class Data提示错误是因为Data是抽象类,需要用abstract表明是抽象类型,如果不用abstract说明是抽象方法,后面就无法继承DisplayValue()这个方法了。public class Document则需要在名为Document的文件里声明。
      附上改正之后的代码截图

    • 问题3:我的assertEquals上为什么总有一条横线?

    • 问题3解决方案:前面定义的实部和虚部都是double型的,我上网查找后发现assertEquals只支持int型,long型或boolean型的,总之在此时不支持(double,double)型的,我就寻思着怎么办啊...然后发现支持(string,string)型的。那就把数字加上""变成字符串,把后面的方法再加一个toString方法转化为字符串,assertEquals上的横线就消失了。

    • 问题4:如图,找不到b.j.a.a$1的类文件,我???

    • 问题4解决方案:这是什么文件?上网查也没查出来,但前半句是提示找不到文件包。后来我检查的时候才发现那个import里莫名奇妙的给我导入了这个文件,所以才出现这样的错误提示,我删掉之后就没有了。

    • 问题5及其解决方案:getter和setter方法那里,我按照老师给的提交标准输入了一样的东西但一直都报错,提示是需要我改写成静态方法,可是这样的话就不能达到get到不同的值了。肯定有问题。其实在我写这段话之前这个问题都还没有解决。直到我刚刚再看了一边问题四才发现原来构造的两个函数,再试一次发现真的是设成静态的就可以了 ....好气哦....

    四、其他(感悟、思考等)

    五、参考资料

  • 相关阅读:
    图像滤镜艺术---乐高像素拼图特效滤镜的代码实现
    假设你也23
    seajs载入流程图
    android 怎样将主菜单图标改成按安装时间排序
    热力学第一定律的社会学思考
    Django创建数据表
    KeyPress 和KeyDown 、KeyPress之间的区别
    Delphi 制作自定义数据感知控件并装入包(dpk文件)中(与DBText类似的数据感知控件)
    Delphi中的窗体创建与销毁
    Delphi ADOQuery连接数据库的查询、插入、删除、修改
  • 原文地址:https://www.cnblogs.com/amberR/p/8935443.html
Copyright © 2011-2022 走看看