面向对象设计与构造2022 (北京航空航天大学 - 计算机学院)

  • OO第三单元总结

    OO第三单元总结 测试方法 专项测试 针对复杂度较高的特定方法,基于互测与公测限制进行数据构造 queryBlockSum: /*@ ensures \result == @ (\sum int i; 0 <= i && i < people.length && @ (\forall int j;
    继续宠爱   2022-06-06 14:47   0   26
  • BUAA_2022面向对象_第三单元总结

    BUAA_2022面向对象_第三单元总结 O、写在前面 正如助教所说,本单元的设计与执行,难度不大,这得益于JML的功劳;但是,对细心的要求尤其的高。如何理解、高效和全面的实现JML,是本单元的关键。在该单元中,我们完成了一个简单聊天系统的实现,与其说实现,不如说是补全。关键架构,是将各个消息收发者
    tsyhahaha   2022-06-06 14:39   0   34
  • OOUnit3

    OOUNIT3 (1) 分析在本单元自测过程中如何利用JML规格来准备测试数据 利用JML规格构造JUnit测试类,编写测试数据时根据JML规格构造边界数据。 (2) 梳理本单元的架构设计,分析自己的图模型构建和维护策略 第三单元第一次作业 本单元作业架构主要为实现作业所需的类和类中方法,因此除了添
      2022-06-06 14:38   0   7
  • OO第三单元总结

    OO第三单元总结 图模型架构 基础元素 顶点的维护:使用hashmap<Integer, Person>,以id为key实现O(1)查询 边的维护:使用HashMap<Edge, Integer>,其中Edge是边,知道两个顶点时可以实现O(1)查询 并查集维护:首先在内部维护一个变量按加入顺序给p
    shliba   2022-06-06 14:34   0   18
  • 第三单元总结

    第三单元总结 一、测试数据构造 1、随机数据测试 使用程序随机生成数据。在一组数据的头部先添加一些诸如ap、am、ag等添加基本元素的指令,之后再按照设定的比例随机生成各个指令。生成好数据之后我选择的是和多个人的程序对拍来验证正确性。自动化评测能够找到比较明显的bug,并通过调高时间复杂度高的指令的
    jht0725   2022-06-06 14:33   0   13
  • 第三单元总结

    本单元主要进行基于规格的层次化设计,在给定JML规格的基础上实现一个社交网络模拟系统。 1. 测试 在本单元的测试中,我选择了传统的随机生成数据的测试方法,事实证明我的这种选择是一把双刃剑。 1.1 两种测试方法对比 传统的随机数据方法的优点有: 测试过程不依赖于对JML规格的理解,只要对拍的人员内
    StyWang   2022-06-06 14:22   0   15
  • OO第三单元总结

    自测过程中如何利用JML规格来准备测试数据 在整个第三单元的JML语言的学习下来,确实能够感觉到这真的是一门描述十分清晰的语言,从我们输入的数据的要求,数据中间变化的要求,再到输出数据的要求在JML中都是有较为严格的规定的,这也就为我们这个单元进行自测提供了不小的便利。具体如下: 前置条件:构造数据
    谷福胜   2022-06-06 14:21   0   20
  • BUAA OO第三单元总结

    前言 本单元的代码任务集中在了学习JML的使用,并根据所给JML实现相应的方法和类。 契约式编程、防御式编程与进攻式编程 契约式编程 契约式编程要求我们在「前提条件」、「后继条件」和「不变量条件」进行契约的检查。类似的,例如检查参数,一旦参数不对,当即撕毁契约。 比如后端的方法因为传入的参数不在设计
    wooood   2022-06-06 14:14   0   28
  • OO第三单元作业——JML规格的理解与使用

    OO第三单元作业——JML规格的理解与使用 在第三单元作业中,我们实现了社交网络查询的基本功能。我们需要根据课程组下发的官方JML代码,来确定社交网络中需要实现的功能,而后设计自己的方法来实现。一般来说,一个方法的JML代码的行数要远大于其实现代码的行数,因此,我们可能具有这样的体会:一个方法的JM
    梁绪宁   2022-06-06 14:00   0   13
  • 面向对象第三单元博客

    面向对象第三单元博客 第三单元为 JML规格的理解与实现,大部分方法都可以由JML规格理解后直接翻译成对应代码。 架构设计 对于isCircle以及queryBlockSum的设计 对于这两个方法的实现,我采用了并查集的方式解决,首先是在addPerson时初始化节点的父节点并将其设为根节点,父节点
    OUZHUOJIAN   2022-06-06 13:52   0   12