20172316 2017-2018-2 《程序设计与数据结构》 实验二报告 1.实验内容 2. 实验过程及结果 3. 实验过程中遇到的问题和解决过程 参考资料

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


  • 初步掌握单元测试和TDD
  • 理解并掌握面向对象三要素:封装、继承、多态
  • 初步掌握UML建模
  • 熟悉S.O.L.I.D原则
  • 了解设计模式
  • 完成蓝墨云上 (1)-(5)实验。

2. 实验过程及结果

  • 做中学,不管学的是个啥,先做完实验内容就对了,实验(1)-(5)按照顺序完成。
  • 主要过程:看清教程中的要点和步骤,一步一步进行操作,中间遇到了一些问题(详见下),并不是什么难以解决的问题。甚至一些代码只需要复制过去进行简单的操作,可以说很方便了。
  • 结果:初步了解TDD,及S.O.L.I.D原则,实验结果都基本正确。继承运用的很多,所以熟练了许多。封装主要体现在可见性保留字的选择上。

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

  • 问题1:StringBuffer初始容量问题,依稀记得初始容量为16,但Test时发现StringBuffer a = new StringBuffer("ManyWordMany")的初始容量为28,为什么呢?
  • 问题1解决方案:通过多方查找(甚至直接查看 StringBuffer 类),确认了初始容量确确实实就是16。通过研究观察发现,当我令a = "ManyWord"时,容量变为24,可见 “初始容量” 的意思应该是在所给字符串的基础上加上16

  • 问题2:复数乘法总是计算错误,使用(1+i)*(1+i)结果应为2i,但结果显示为i。
  • 问题2解决方案:查看代码,多次检查,与公式没有任何差别

public Complex ComplexMulti(Complex complex){

    RealPart = RealPart * complex.getRealPart() - ImagePart * complex.getImagePart();  

    ImagePar = ImagePart * complex.getRealPart() + RealPart * complex.getImagePart();

    return new Complex(RealPart, ImagePart);
}

乍一看没问题,实则犯了一个大错! RealPart在上式被重定义了,那么下式的RealPart不再是应该取得值,计算出错!简易修改:

public Complex ComplexMulti(Complex complex){
        double a, b;
        a = RealPart * complex.getRealPart() - ImagePart * complex.getImagePart();
        b = ImagePart * complex.getRealPart() + RealPart * complex.getImagePart();
        return new Complex(a, b);
    }

解决!


其他(感悟、思考等)

一切的一切尽在题中。

参考资料

《Java程序设计与数据结构教程(第二版)》
《Java程序设计与数据结构教程(第二版)》学习指导