栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

HIT软件构造LAB1的若干感想

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

HIT软件构造LAB1的若干感想

Lab1中,主要是让我们对于java的语法和操作有一点整体感知。训练基本 Java 编程技能,能够利用 Java 开发的功能模块,能够阅读理解,写测试用例,初步保证所开发代码的正确性。 还有就是学习使用git的基本操作。

因为课程进度的原因,写lab1的时候并没有接触到ADT、OOP的相关知识。我关于面向对象程序设计的最初印象只有以前使用flash写actionScript的二三经验,具有一点对于面向对象模式的朴素感知,所以撰写lab1的时候,有很多粗糙的地方。

MagicSquare类的写法,基本是按照C语言程序撰写经验中面向过程的经验写的。MagicSquare类中包含两个静态public类,并且在main函数中调用它,这本质上还是按照面向过程的思维撰写的、简单线性的程序。插曲:因为是初次接触java,我在一开始操作的时候甚至不知道main函数应该怎么写,一开始main函数没有写参数,导致程序一直运行不起来。

第三个部分中,friendshipgraph类的实现同样具有问题。首先是当时并没有关于spec、RI、rep泄露以及AF的相关概念,在该类下面field中定义了一个public对象,在客户端程序中可以随便修改它,在设计理念中这会导致严重bug的危险性。实际上为了避免表述泄露,person类应当写成private并且使用observer方法,亦应利用防御式拷贝避免泄露。

(对ADT不熟悉时的朴素实现)

另外在addVertex中

public void addVertex(Person P) {
		if (person.contains(P.name)) {
			System.out.print("This person already exists in the graph.");
			System.exit(0);
		}
		person.add(P.name);
	}

检查person是否重复,这实际上是RI的一个体现,即这个类中始终不应包含相同的两个人。

关于逻辑实现,本次实验的逻辑还是比较简单的,建立一个邻接表即可。唯一稍微复杂的部分是设计一个BFS,按照邻接表的思路进行遍历就行。

public int getDistance(Person A, Person B) {
		if (A == B)
			return 0;
		else {
			Queue queue = new LinkedList();
			Map BFSMap = new HashMap();
			BFSMap.put(A, 0);
			queue.offer(A);
			while (!queue.isEmpty()) {
				Person current = queue.poll();
				List friends = current.friends;
				Iterator p = friends.iterator();
				while (p.hasNext()) {
					Person nxtPerson = (Person) p.next();
					if (!BFSMap.containsKey(nxtPerson)) {
						queue.offer(nxtPerson);
						BFSMap.put(nxtPerson, BFSMap.get(current) + 1);
						if (nxtPerson == B) {
							return BFSMap.get(nxtPerson);
						}
					}
				}
			}
		}
		return -1;// Error
	}

实验中,关于github的配置也遇到了一定问题,因为在本次实验前从来没有利用VCS进行版本控制,而是使用原始的版本控制方案(线性地)。第一次push的时候是使用网页版程序试着上传了程序,这样的话感觉并没有本地git管理那么方便。因此下载、配置git,按照网上查找的方法push时遇到了错误。结果突发奇想,加了个-f参数就强行地上传上去了。

git不仅能对程序代码进行版本控制,亦能对其他生产力工具的源程序进行版本控制。在本次实验了解了这个工具之后,我也利用git对.cpr工程文件进行了版本控制的尝试。不过对于这种偏向于线性的、不易产生分支的工程发展,使用git显得有点多余。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/969823.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号