软件构造Lab-2 Abstract Data Type (ADT) and Object-Oriented Programming (OOP)

用于记录实验中遇到的问题总结及主要实验解决过程

3.1 Poetic Walks (MIT)
题目: http://web.mit.edu/6.031/www/sp17/psets/ps2/,
遵循该页面内的要求完成编程任务。获取初始代码的地址:https://github.com/rainywang/Spring2019_HITCS_SC_Lab2/tree/master/P1
Problem 1: Test Graph
刚开始看题目时对test没思路,因此留到了后面完成。
先初始化有向图(以ConcreteVerticesGraph,ConcreteEdgesGraph同理)。
软件构造Lab-2 Abstract Data Type (ADT) and Object-Oriented Programming (OOP)

final Graph<String> graphv = new ConcreteVerticesGraph<String>();
    @Before
	public void Initialized()
	{
    	graphv.add("d1");
    	graphv.add("d2");
    	graphv.add("d3");
    	graphv.add("d4");
    	graphv.add("d5");
    	graphv.add("d6");
    	graphv.set("d1","d2", 1);
    	graphv.set("d1","d5", 4);
    	graphv.set("d5","d6", 3);
    	graphv.set("d2","d3", 2);
    	graphv.set("d2","d4", 5);
	}
之后的测试类比较简单。注意要测试toString:ConcreteVerticesGraphtoStringTest()

Problem 2: Implement Graph
只需补充补充empty函数
软件构造Lab-2 Abstract Data Type (ADT) and Object-Oriented Programming (OOP)
3.1.3.1 Implement ConcreteEdgesGraph
完成ConcreteEdgesGraph.java部分需要参考Graph.java文件,这部分未遇到困难。
3.1.3.2 Implement ConcreteVerticesGraph
实现方式同ConcreteVerticesGraph.java,此时只有vertices存储顶点,没有集合存储边,因此在vertex类中定义sourceMap和targetMap来存储边
3.1.4 Problem 3: Implement generic Graph
遇到的问题是刚开始对泛型操作不了解,经过同学指点才debbug成功。
1.将原文件ConcreteVerticesGraph.java和中所有String类型改为L,
2.class Vertex { 改为class Vertex {
} }
3.Graph,ConcreteVerticesGraph,ConcreteEdgesGraph后均添加
例如:
软件构造Lab-2 Abstract Data Type (ADT) and Object-Oriented Programming (OOP)
4.empty函数软件构造Lab-2 Abstract Data Type (ADT) and Object-Oriented Programming (OOP)
3.1.5 Problem 4: Poetic walks
待补充
3.2 Re-implement the Social Network in Lab1
3.3 Playing Chess