软构复习——重温实验之lab2(1)

这篇博客作者通过重温Lab2实验,复习了面向对象编程中抽象数据类型(ADT)的设计、规约和测试。实验目标包括ADT识别、规约设计、测试用例创建、泛型化、不同实现及其表示、OOP实现、测试覆盖度评估等。文章还讨论了静态和动态类型检查的区别,以及对象的变与不变性。重点讲述了方法的规约和前后置条件,以及设计规约的强度和ADT操作的四种类型。
摘要由CSDN通过智能技术生成

临近期末复习,光看教材让人毫无头绪,故借再次分析和总结以往做过的实验来巩固知识要点。下面是我重温Lab2的时候的思考与心得体会。这一篇主要讲他所涉及到的知识点,在下一篇中我们讲着重展开讲实验过程。


Lab2:

目标分析

本次实验训练抽象数据类型(ADT)的设计、规约、测试,并使用面向对象编程(OOP)技术实现ADT。具体来说:
针对给定的应用问题,从问题描述中识别所需的ADT;
设计ADT 规约(pre-condition、post-condition)并评估规约的质量;
根据ADT 的规约设计测试用例;
ADT的泛型化;
根据规约设计ADT 的多种不同的实现;针对每种实现,设计其表示(representation)、表示不变性(rep invariant)、抽象过程(abstraction function)
使用OOP 实现ADT,并判定表示不变性是否违反、各实现是否存在表示泄露(rep exposure);
测试ADT 的实现并评估测试的覆盖度;
使用ADT 及其实现,为应用问题开发程序;
在测试代码中,能够写出testing strategy 并据此设计测试用例

本章实验主要训练我们熟练地使用ADT和OOP编程,理解其编程的思想,并熟悉git的原理以及使用方法:

知识点:

考核重点如下:
在这里插入图片描述

基本数据类型就是最为基础的,和C语言类似,多了员工boolean类型,返回值是true和false,对象数据类型就是诸如String和Big Integer这样的数据类型,通常,基础类型用小写而对象类型用大写。
在这里插入图片描述

静态、动态类型检查,前者是在编译阶段进行的,而后者是在运行的阶段进行检查
静态类型可以检查出

  1. 类型的语法错误
  2. 类名或函数名的错误
  3. 参数的数目错误
  4. 返回值类型的错误

动态的检查:
5. 非法的参数值(如除以0,0以变量的形式定义)
6. 非法的返回值
7. 越界
8. 空指针

总结起来,静态检验即检验类型和数目,动态检验即检验值是否符合要求

既不是静态又不是动态的:
在这里插入图片描述
在这里插入图片描述
变与不变:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
对于基本类型的值,使用单线箭头指向实际值,不需要表明数据类型。
在这里插入图片描述

对于对象的值:
如果是可变对象,使用单线椭圆,椭圆内写明对象的类型及对象内的值。
在这里插入图片描述

如果是不可变对象,使用双线椭圆,在这里插入图片描述
椭圆内写明对象的类型及对象内的值。

如果是对象的不可变引用(final标记),使用双线箭头。eg:id
如果是对象的可变引用,使用单线箭头。eg:age
在这里插入图片描述

eg
在这里插入图片描述

方法的规约与前后置条件
在这里插入图片描述
行为等价性:
在这里插入图片描述
看是否满足规约的条件。

前后置条件:
在这里插入图片描述
前置条件满足,则后置一定要满足(客户要求的一定要做到)
若前置不满足,后置可以随意(没客户没要求,可以随便整)

设计规约:

/**
 * sentence to describe
 * @param type paramiters
 * @requires ***
 * @effects ***
 * @return type param
 */

规约的强度:(强的比弱的好)
前置条件更弱,后置条件更强,则规约更强

ADT 操作的四种类型
在这里插入图片描述

AF与RI是什么,怎么写
AI即abstraction function 抽象函数
RI即使representation invariants表示不变两

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值