
软构
文章平均质量分 73
Redstone Monstrosity
这个作者很懒,什么都没留下…
展开
-
lab1回顾 (4) ——P3——Social Network&实验感受
该任务需要模拟一个简单的人际关系网,抽象来看就是一个无向图。具体任务有:添加点、添加边、求最短路径。健壮性主要围绕名字这部分来编写代码,即每个点对应一个唯一的名字,检查是否输入重名或不输入名字,以及检查是否重复添加边。其实就是一个无向图,这里用了弗洛伊德算法。原创 2023-03-20 16:45:35 · 140 阅读 · 0 评论 -
lab2回顾——P2(the Social Network in Lab1)
P2是对P1的一个应用。因为P1已经实现了一些基本功能,而P2可以“借用”这些已有的功能来实现和拓展自己额外的功能,因此实现起来较为轻松。原创 2023-04-11 17:03:36 · 93 阅读 · 0 评论 -
lab2回顾——P1(Poetic Walks)(补充)
P1的主要难点在于看懂MIT的翻译(面向MIT编程),这个翻译实在是太怪了,看了好久才大概理解了它的意思。关键在于美国的这些语言不像我们的这般严谨,而是夹杂着许多幽默风趣的用语(也许是为了与学生拉近感情)。这样子本来没问题,但是一旦翻译过来就会变得非常奇怪,导致我根本搞不懂有些话到底是实验要求还是抒发感情的幽默用语。很苦恼啊。原创 2023-04-11 16:37:23 · 102 阅读 · 0 评论 -
lab2回顾——P1(Poetic Walks)
好不容易终于做完了。首先在看MIT网站上的实验要求描述就受到了很大震撼——英文原文看不懂,翻译过来又因为文化差异的缘故,根本看不懂是什么意思!!!╥﹏╥导致我理解上花了大量时间。后来几次软构课经过王老师将课上知识与实验二要求结合起来讲,我才渐渐理解了任务一的要求——利用泛型化实现对vertex、edge等各个类的ADT。慢慢的,我也理解到泛型化的巨大力量和作用——它不但简化了工作量和代码量,也使得程序的主次层次更为分明。原创 2023-04-10 16:14:22 · 395 阅读 · 1 评论 -
关于try、catch和finally的一些理解
代码来源于课件,问题是——“这段代码输出结果是什么?可能很多人和我直觉一样,觉得是输出true,即decision方法的代码遇到第一个return就真的返回而不再继续往下执行了。其实不然。最终结果是输出:false。原创 2023-05-26 23:35:08 · 96 阅读 · 0 评论 -
委派中Composition和Aggregation的区别
组合表示整体对象和部分对象之间的紧密关系,每个部分对象只能属于唯一的整体对象,不能被其他的整体对象所共享或引用。第二个代码中,WebServer类自己实例化了HttpListener和RequestProcessor,WebServer包含了HttpListener和RequestProcessor,但是它们之间并没有紧密的关系。聚合表示整体对象和部分对象之间的松散关系,每个部分对象可以属于多个整体对象,可以被共享或引用。因此,第一个代码片段展示了组合的示例,而第二个代码片段展示了聚合的示例。原创 2023-05-25 18:20:05 · 102 阅读 · 0 评论 -
关于LSP中泛型通配符?及extends和super的关系
? 和 ? extends 都表示上限未知的泛型类型(即某种类型或其子类),而 ? super 则表示下限为某种类型或其父类的泛型类型原创 2023-05-24 23:49:24 · 92 阅读 · 0 评论 -
软件构造复习3——知识点总结
Liskov 替换原则(LSP)是指在一个程序中,如果对一个基类对象的引用可以被其子类对象替换,而不影响程序的正确性和完整性,则称这个子类对象遵循了 Liskov 替换原则。委托还包括复合复用原则(CRP),即在一个新的对象里通过关联关系(包括组合关系和聚合关系)来使用一些已有对象,使之成为新对象的一部分;可维护性是指软件系统在开发和运行过程中,能够快速定位并修复错误、改进性能、增加新功能等,以满足用户需求和适应环境变化。行为型模式包括策略模式、模板模式、迭代器模式、访问者模式等。原创 2023-05-22 14:12:59 · 75 阅读 · 0 评论 -
软件构造复习2——概念总结
ADT可以有4种操作构造器(creator),生产器(producer),观察器(observer)和变值器(mutator)。原创 2023-05-22 14:05:44 · 65 阅读 · 0 评论 -
软件构造复习1——概念介绍
软件构造的一般过程包括设计、编码、重构、调试、测试、性能分析、代码评审、构造和发布。原创 2023-05-22 13:55:41 · 625 阅读 · 0 评论 -
lab3回顾——面向可重用性和可维护性的软件构建
lab3的主要任务是构建一个多轨道系统,同时为系统上的每一个对象都构造一个对应的ADT,包括总的轨道系统、轨道系统上的某一条轨道、轨道上的某个物体。原创 2023-05-09 14:34:39 · 206 阅读 · 0 评论 -
lab1回顾 (3) ——P2——Turtle Graphics
海龟绘图——来自MIT的实验。原创 2023-03-20 16:06:50 · 133 阅读 · 0 评论 -
lab1回顾 (2) ——P1——Magic Squares
这个任务主要可分为两步:① 设计算法从文件中读入矩阵并判断是否为幻方,需要兼顾健壮性和正确性。② 分析实验要求中提供的生成幻方的代码,画出流程图,找出负数与偶数报错的原因,将幻方输出到一个新文件6.txt中,最后使用①中提供的函数方法对其进行幻方判断。原创 2023-03-20 15:26:00 · 118 阅读 · 0 评论 -
lab1回顾 (1) ——实验配置
lab1回顾之环境配置——JDK、IntelliJ IDEA、Git。原创 2023-03-20 15:12:52 · 83 阅读 · 0 评论