上海住房城乡建设厅网站首页,企业网站建设的层次,北京东城区做网站的公司,网页设计与网站建设景点介绍第四单元总结 第四单元主要内容是写代码解析UML#xff0c;因此需要理解UML UML相关 starUML的储存方式是一个.mdj文件#xff0c;通过使用文本编辑器观察这个文件#xff0c;我们可以看出这是一个json格式储存的文件。 通过把.mdj后缀名改为.json#xff0c;可以更加直观地… 第四单元总结 第四单元主要内容是写代码解析UML因此需要理解UML UML相关 starUML的储存方式是一个.mdj文件通过使用文本编辑器观察这个文件我们可以看出这是一个json格式储存的文件。 通过把.mdj后缀名改为.json可以更加直观地观察这个文件。 架构分析 以上是我两次作业的类图我在作业中给UML中的每一种Element建了一个对应地类。 在建图的时候我通过各种parent恢复了json文件中的树状结构便于统计。 关于第二次作业的有效性检查 有效性检查基本上都是图论上的问题。 为了方便/代码复用性/代码美观性我将图论算法提取出来了。 我新建了一个名为Dfsable的接口。 package graph;import java.util.List;public interface DfsableT extends DfsableT {void addSon(T node);ListT getSons();
} 以下是图论算法。 package graph;import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;public class GraphAlgorithm {public static class Node implements DfsableNode {private ListNode sons new ArrayList();Overridepublic void addSon(Node node) {sons.add(node);}Overridepublic ListNode getSons() {return sons;}}/*May not contains itself.*/public static T extends DfsableT HashSetT getCanArrive(T cur) {HashSetT ans new HashSet();dfs1(cur, ans);return ans;}private static T extends DfsableT void dfs1(T cur, HashSetT ans) {for (T e : cur.getSons()) {if (!ans.contains(e)) {ans.add(e);dfs1(e, ans);}}}public static T extends DfsableT boolean isInCircle(T cur) {return dfs2(cur, new HashSet(), cur);}private static T extends DfsableT boolean dfs2(T cur, HashSetT vis,T source) {vis.add(cur);for (T e : cur.getSons()) {if (e.equals(source)) {return true;}if (!vis.contains(e)) {if (dfs2(e, vis, source)) {return true;}}}return false;}public static T extends DfsableT boolean haveMorePath(T cur) {return dfs3(cur, new HashSet(), cur);}private static T extends DfsableT boolean dfs3(T cur, HashSetT vis,T source) {vis.add(cur);for (T e : cur.getSons()) {if (vis.contains(e)) {return true;}if (dfs3(e, vis, source)) {return true;}}return false;}
}通过将所有具有Dfs性质的元素提取出Dfsable接口我可以只写一次算法就实现各种搜索。 OO课程总结 OO这门课很快就结束了在这门课中我在不断的写代码和学习中理解很多学会了很多 架构设计与OO方法 在这一个个单元中我的架构设计能力和对面向对象的理解有的极大的提高和加深。 第一个单元我设计的架构一塌糊涂第二个单元有了起色第三个单元我的结构已经基本可以有良好的复用能力的到了第四个单元我的架构水平相比第一单元有了极大的提升。 而对面向对象的理解我也随着一次次左右有了加深从一开始只是知道封装、继承和多态“这些概念到最后可以熟练甚至下意识地应用这些思想。OO提高了我的各种能力。 测试理解与实践的演进 在历次作业中我使用了各种进行脚本测试。 我遇到的主要难点是数据的生成。 其次另外一个难点是多线程单元的脚本写法。为此我尝试了解了powershell/linux shell的使用有了很多的收获。 课程收获 认识的过程是一个从实践到认识再从认识到实践的过程。 ——马原 OO一门又爱又”恨“的课。 ”恨“当然不是指真的恨而是说在有时写作业代码感到累的时候不禁产生的一丝难受。 但是我也明白没有难受就也没有可能有进步和收获。 这也是我爱着OO这门课的原因。 在这门课中我从一个只写过单文件c语言的工程小白变成了一个听见了一个宏大任务后不会慌张可以冷静思考可以马上开始分析如何”分解这个任务“”如果是我我会用什么架构“等人。当然我肯定与大佬还差的远着呢或者说在工程方面依然是一个不折不扣的小白但是如果没有OO这门课我可能至今为止还是写一些简单的“益智”、“好玩”的小程序。 一次又一次的作业、上课、实验和讨论我逐渐理解、明白了什么是面向对象为什么要面向对象如何面向对象...... 感谢OO感谢各位老师、助教和同学。 对OO的小建议 关于课上实验的部分好多都是上午上完课的内容下午立刻可能就需要使用希望下次安排的时候可以给一些缓冲。 关于第一单元的正则表达式部分建议可以开始前把正则表达式进行一些训练。 转载于:https://www.cnblogs.com/login256/p/11073475.html