【2022春-面向对象】第三单元总结 目录【2022春-面向对象】第三单元总结写在前面一.本单元架构第一次作业需求:连通性相关查询实现:并查集第二次作业需求实现第三次作业需求实现总结二.测试数据构造(利用JUnit)单一方法测试单一类测试综合性测试总结三.代码修复及性能分析bug修复性能
自测过程中如何利用JML规格来准备测试数据 在整个第三单元的JML语言的学习下来,确实能够感觉到这真的是一门描述十分清晰的语言,从我们输入的数据的要求,数据中间变化的要求,再到输出数据的要求在JML中都是有较为严格的规定的,这也就为我们这个单元进行自测提供了不小的便利。具体如下:
目录1. 测试1.1 两种测试方法对比1.2 bug与测试1.3 数据生成策略1.4 互测2. 架构2.1 工具包utils2.2 图的构建和维护3. 关于程序性能3.1 并查集3.2 Kruskal算法3.3 堆优化的Dijkstra算法4. Network扩展5. 个人体会5.1 关于规格化5.2 关于作业 本单元主要进行基于规格的层次化设计,
面向对象第三单元博客 第三单元为 JML规格的理解与实现,大部分方法都可以由JML规格理解后直接翻译成对应代码。 架构设计 对于isCircle以及queryBlockSum的设计 对于这两个方法的实现,我采用了并查集的方式解决,首先是在addPerson时初始化节点的父节点并将其设为根节点,父节点的对应
OO第三单元总结 要求 单元总结要求 第一次作业总结 分析 在本单元我们的任务为需要完成的任务为通过一个实现简单社交关系的模拟和查询的例子以此达到学习入门级 JML 规格理解与代码实现的能力 本次作业只需要读懂代码中的 JML 表示语言,并且按照其中的要求编写好代码即可,
利用JML规格准备测试数据 没有使用Junit工具,而是采用生成大量数据与同学程序对拍的方法。为了保证数据的覆盖率,采用以下几点措施: 1、在数据开始时添加大量的点,减少无用的加边操作。 2、灵活控制每条指令的权重,根据测试的需要进行调整。 3、为了构造特殊数据,在每次生成数据前随机把
OO第三单元总结 第三单元要求了解JML语法和语义,并根据JML给出的规格编写代码,从而实现一个简单的社交关系模拟和查询系统,关键在于要准确的理解JML规格。 一、架构设计与算法性能优化 整体图模型建构 这一单元作业的背景是一个社交网络,层次有三层:Network,Group和Person,本质就是一个
BUAA_OO 第三单元总结 一、架构设计 本单元的三次作业核心是增量开发一个多人聊天系统,由于是迭代开发,所以在此处主要就本单元第三次作业进行分析。 容器选择 为了降低整体的时间复杂度,且本次作业拥有互不相同的Person 、Group等对象拥有互不相同的id的特点,所以在用到容器时许多我
OO 第三单元总结 架构设计 图模型构建 本单元中我们已经构建的图就是 Network,图中的节点是 Person,图中的边是 Relation,节点之间的连接通过 Person 类中的 Association 这个数组实现,实际上应该是一个邻接表的结构。但为了之后对最短路径以及最小生成树的实现方便以及更方便拓展,我们
第三单元总结 一. 作业综述 一如既往,本单元作业分为三次进行迭代开发,核心任务为按照JML规格实现指定接口的指定方法,从而构建出一个具有无向图数据结构的网络。具体来说,第一次作业的难点是判断两点是否可达,第二次的难点是计算最小生成树的权重之和,第三次的难点是计算最短路径长度。
面向对象第三单元分析与总结 前言 第三单元结束,面向对象课程马上就结束了,好耶! 本单元终点考察对JML规格理解与代码实现,需要了解基本的JML语法和语义,以及具备根据JML给出的规格编写Java代码的能力。在具体的作业中还兼具考察了部分图论的算法实现,练习了基于junit的程序测试方法,总
第三单元总结性博客作业 一、测试部分 测试数据的准备 对于这次的作业,我们可以根据JML规格的描述来构造测试数据,对每一个方法做出专门的测试。任何一个方法的JML规格都是由requires,assignable,ensures三部分组成,对于有不同情况需要有不同操作的方法,会有多个requires(also),assign
「BUAA OO」第三单元总结 目录「BUAA OO」第三单元总结零、写在前面1、任务简介2、JML3、架构设计一、性能与优化通用优化第一次作业第二次作业第三次作业二、测试数据构造随机数据手搓数据正确性检验时间测试三、bug分析自身bug他人bug(互测前)互测bug四、功能拓展任务需求分析解读
OO第三单元总结 作业架构及分析 hw9 基本要求 根据JML规格实现自己的几个类,构建一个社交网络查询和模拟系统,完成\(ap\)、\(ar\)、\(qv\)、\(qps\)、\(qci\)、\(qbs\)、\(ag\)、\(atg\)、\(dfg\)指令。 基本设计(架构&图模型构建与维护) 整体架构方面,各种指令大体按照JML规格按部就班
OO第三单元总结 一、梳理架构设计 1.1 整体架构分析与图的模型构建 1.1.1 架构梳理 这一单元的作业要求我们完成一个简单的社交关系网络,其最终结构大致如下: 人(person)是社交网络中的基本节点 每个人有自身的属性:年龄、社交值、钱数 人与人之间的联系由关系(relation)描述,关系具有其
本单元根据给出的JML规格实现一个社交网络模型,同时为了让我们阅读理解一些复杂的JML规格,涉及了图论的一些算法。这部分的JML还是较难以理解的,并且一些指令的实现也不能完全按照JML所给出的方法去实现不然容易超时,在满足JML规格的要求下还需要进行很多的优化。 从JML的角度构造测试
目录前言一、架构设计1. 第一次作业2. 第二次作业3. 第三次作业二、测试数据准备三、性能分析1. query_circle与query_block_sum2. query_group_value_sum3. query_least_connection4. send_indirect_message四、Network拓展五、学习体会 前言 本单元围绕JML进行规格化设计,契约式
目录总述一、基于JML规格准备测试数据二、架构设计与图模型构建和维护策略2.1 第一次作业2.2 第二次作业2.3 第三次作业三、性能问题和修复情况四、NetWork 的扩展4.1 要求4.2 规定4.3 实现五、心得体会 总述 本单元的任务是实现简单的社交网络关系的模拟和查询, 包括人与人互动、
第三单元总结 一、 本单元自测过程中如何利用JML规格来准备测试数据 本单元自测过程一般分为两个方面: (1)定点爆破: 针对JML规格当中的每一个条件的触发点进行有针对性的爆破,看一下每个条件下能否按要求抛出错误或者完成指定操作内容. (2)重复爆破 重复爆破可针对某一种情况重复
面向对象设计与构造第三单元总结博客 1 作业概述 第三单元作业的主要内容是根据给出的JML规格和接口定义实现一个社交系统,主要的功能包括社交关系的模拟与查询、群组功能、不同类型消息的接收与发送等。 相较于前两个单元,本单元的作业由于给出了JML规格,因此在设计上的难度相对较小
第三单元总结 心得体会 倒数第二个单元结束辽!因为这一单元不需要我们自己去设计整体的结构,只需要理解规格后编写具体函数即可,所以感觉完成时速度会快很多(除了某些规格太长导致看晕了,最后用中文一句一句“翻译”的情况)。但是由于一直以来对性能都无甚追求,所以在算法的实现上还是受
OO第三单元总结 一、写在前面 何为契约式编程?何为规格?为什么要使用JML语言?我认为如果不把这些问题梳理清楚的话其实很难体会为何课程组设置了此单元。 1、契约式编程 1.1 历史 来源于Wikipedia: The term was coined by Bertrand Meyer in connection with his design of the Eiffe
面向对象第三单元总结 目录 分析在本单元自测过程中如何利用JML规格来准备测试数据 梳理本单元的架构设计,分析自己的图模型构建和维护策略 按照作业分析代码实现出现的性能问题和修复情况 对Network进行扩展,以及相应的JML规格 本单元学习体会 在自测过程中如何利用JML规格来准
2022 OO 第三单元总结 一、利用 JML 规格准备测试数据 首先是对于 JML 规格的理解。通过阅读 model 可以初步了解需要维护的对象,针对每个方法按照 normal_behavior 和 exceptional_behavior 进行划分,先实现异常行为判断,再按照 requires 条件分别实现正常行为。对于比较
第三单元总结 关于自测 我的构造数据主要是根据JML规格里构造相应的测试数据的,针对于一个函数或者一条指令来构造相应的函数,我也想过写一个数据生成器,但后来发现根据JML规格来进行一些测试貌似更加方便一些,于是便开始了Junit测试。这样可以使得数据尽可能得覆盖到所有的情况。当