课程:《程序设计与数据结构》
班级: 1723
姓名: 赵乾宸
学号:20172316
实验教师:王志强
实验日期:2018年4月18日
必修/选修: 必修
1.实验内容
- 初步掌握单元测试和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程序设计与数据结构教程(第二版)》学习指导