20192317 2020-2021-1 《数据结构与面向对象程序设计》实验三报告
课程:《程序设计与数据结构》
班级: 1923
姓名: 邓子彦
学号:20192317
实验教师:王志强
实验日期:2020年10月9日
必修/选修: 必修
1.实验内容
下载安装并使用IDEA,完成下面实验(https://www.cnblogs.com/rocedu/p/6371315.html)。
-
初步掌握单元测试和TDD
-
理解并掌握面向对象三要素:封装、继承、多态
-
初步掌握UML建模
-
完成蓝墨云上 (1)-(5)实验。
2. 实验过程及结果
码云链接:https://gitee.com/besti1923/feimao-has-no-legs.git
- 第一个提交点
- 产品代码
public class unittest {
public static String percentage2fivegrade(int i) {
if(i>=0 && i<60)
return "不及格";
else if (i>0 && i<70)
return "及格";
else if (i>0 && i<80)
return "中等";
else if (i>0 && i<90)
return "良好";
else if (i>0 && i<=100)
return "优秀";
else
return "错误";
}
}
- 测试代码
import junit.framework.TestCase;
import org.junit.Test;
public class unittestTest extends TestCase {
@Test
public void testNormal() {
assertEquals("不及格", unittest.percentage2fivegrade(55));
assertEquals("及格", unittest.percentage2fivegrade(65));
assertEquals("中等", unittest.percentage2fivegrade(75));
assertEquals("良好", unittest.percentage2fivegrade(85));
assertEquals("优秀", unittest.percentage2fivegrade(95));
}
public void testWrong(){
assertEquals("错误", unittest.percentage2fivegrade(105));
assertEquals("错误", unittest.percentage2fivegrade(-5));
}
public void testEdge(){
assertEquals("不及格", unittest.percentage2fivegrade(0));
assertEquals("及格", unittest.percentage2fivegrade(60));
assertEquals("中等", unittest.percentage2fivegrade(70));
assertEquals("良好", unittest.percentage2fivegrade(80));
assertEquals("优秀", unittest.percentage2fivegrade(90));
assertEquals("优秀", unittest.percentage2fivegrade(100));
}
}
-
实验截图
-
第二个提交点
-
实验代码
import org.junit.Test;
public class StringBufferExampleTest {
StringBuffer a = new StringBuffer("Java");
StringBuffer b = new StringBuffer("ILoveJava");
StringBuffer c = new StringBuffer("IThinkJavaIsTheGoodestToolsInTheWorld");
@Test
public void testCharAt() throws Exception {
assertEquals1('J', a.charAt(0));
assertEquals1('a', a.charAt(1));
assertEquals1('v', a.charAt(2));
}
@Test
public void testCapacity() throws Exception {
assertEquals2(16, a.capacity());
assertEquals2(16, b.capacity());
assertEquals2(37, c.capacity());
}
@Test
public void testLength() throws Exception{
assertEquals3(4, a.length());
assertEquals3(9, b.length());
assertEquals3(37, c.length());
}
@Test
public void testIndexOf() throws Exception{
assertEquals4(0, a.indexOf("Java"));
assertEquals4(1, b.indexOf("Love"));
assertEquals4(15, c.indexOf("Good"));
}
private void assertEquals1(int i, char charat) {
}
private void assertEquals2(int i, int capacity ) {
}
private void assertEquals3(int i, int length) {
}
private void assertEquals4(int i, int index) {
}
}
-
实验截图
-
第三个提交点
-
实验代码
abstract class Data {
abstract public void DisplayValue();
}
class Double extends Data {
double value;
Double() {
value=17%6;
}
public void DisplayValue(){
System.out.println (value);
}
}
abstract class Factory {
abstract public Data CreateDataObject();
}
class DoubletFactory extends Factory {
public Data CreateDataObject(){
return new Double();
}
}
class Document {
Data pd;
Document(Factory pf){
pd = pf.CreateDataObject();
}
public void DisplayData(){
pd.DisplayValue();
}
}
//测试代码
public class Test {
static Document d;
public static void main(String[] args) {
d = new Document(new DoubletFactory());
d.DisplayData();
}
}
-
实验截图
-
第四个提交点
-
实验代码
abstract class Factory {
abstract public Data CreateDataObject();
}
class DoubletFactory extends Factory {
public Data CreateDataObject(){
return new Double();
}
}
class Document {
Data pd;
Document(Factory pf){
pd = pf.CreateDataObject();
}
public void DisplayData(){
pd.DisplayValue();
}
}
//测试代码
public class Test {
static Document d;
public static void main(String[] args) {
d = new Document(new DoubletFactory());
d.DisplayData();
}
}
-
实验截图
-
第五个提交点
-
实验截图
3. 实验过程中遇到的问题和解决过程
- 问题1:刚开始做第一个提交点就的时候并不理解这个测试的原理,也不知道该怎么继续进行接下来的操作
- 问题1解决方案:询问助教和反复仔细地研究实验流程地教程。经过一整天的研究,和询问身边的同学,理解了这个测试的目的和流程还有大概操作。
- 问题2:做第三个提交点的时候并不知道实验的要求具体是什么意思,怎么样才能让系统支持Double类,而且这个提交点没有教程
- 问题2解决方案:问问身边的同学都有些什么思路和经验,之后去博客园上搜索往届学长学姐们的博客,学习学习他们的思路,然后再跟宿舍里的同学们一起学习一起讨论,大致知道了多类这一概念
- 问题3:刚开始想用旗舰版的IDEA直接生成类图,破解之后,生成的类图还是不完整,可能是程序的编写还不够规范
- 问题3解决方案:下载了StarUML,自己画出了类图
其他(感悟、思考等)
- 感悟思考:这一次的实验任务量很大,占了一整个周末的时间,但是我也感受到了学习的乐趣,也培养了我的耐心细致,一整个周末都在学习让我感受到以前都没有过的充实。Java的学习以后或许会更加辛苦更加累,但我也会坚持下去。