前两天在软件构造课上学习了Java编写过程中的ADT设计,这里简单分享一下我在课上记录的笔记。

一、“R”与“A”

R:表示空间

A:抽象空间

表示空间与抽象空间的关系如下图:

从表示空间到抽象空间的映射应当是一个满射,但并不一定是单射和双射。

二、Abstraction Function And Rep Invariantand

        抽象函数(Abstraction Function):R和A之间映射关系的函数,即如何去解释R中的每一个值为A中的每一个值。

        表示不变性(Rep Invariant):某个具体的“表示”是否是“合法的”,或所有表示值的一个子集,包含了所有合法的表示值,或一个条件,描述了什么是“合法”的表示值。

选择某种特定的表示方式R,进而指定某个子集是“合法”的(RI),并为该子集中的每个值做出“解释”(AF)——即如何映射到抽象空间中的值。以我个人理解,RI写出了什么东西是合法的,AF写出了程序中的数据如何对应现实问题中的事物。

不同的内部表示,需要设计不同的AF和RI。即使是同样的R、同样的RI,也 可能有不同的AF,即“解释不同”。

三、CheckRep

设置一个函数随时检查自己编写的程序是否符合他的RI:

在所有可能改变rep的方法内都要检查,Observer方法可以不用,但 建议也要检查,以防止你的“万一”。

四、Safety from rep exposure

表示泄漏的安全声明(Safety from rep exposure):给出理由,证明代码并未对外泄露其内部表示。

软件构造笔记——Rep Invariantand Abstraction Function相关推荐

  1. 哈工大软件构造笔记1

    1.1Multi-dimensional software views 1.软件构造中的多维视图 ·Moment维度关注于程序在某一时刻的表现,而Period关注的是程序在一段时间内的表现. ·Bui ...

  2. 软件构造笔记整理1-4

    第一章 软件构造的多维度视图和质量目标 1.多维视图 (1)软件是什么: 系统软件vs应用软件 桌面软件/Web软件/移动软件/嵌入式软件 面向商业软件/面向个人的软件 开源软件与专有软件 (2)软件 ...

  3. 6.8软件构造笔记4

    1.传统的软件过程与模型 两个基本类型:liner(线性过程),iterative(迭代过程) 五个过程与模型: ①Waterfall (瀑布过程):线性非迭代. 线性推进,阶段划分清楚,整体推进,过 ...

  4. 【软件构造笔记】2. SCM和VCS软件配置管理和版本控制工具

    1.SCM(软件配置管理) 软件配置管理:追踪和控制软件的变化 软件配置:包括代码.数据和文档(软件的任何组成部分(源代码.数据.文档.硬件.各种环境)都可能随着软件生命周期的时间而更新.) 软件配置 ...

  5. 软件构造学习笔记(六)抽象数据类型

    目录链接 Part I Abstraction and User-Defined Types Part II Classifying Types and Operations Part III Abs ...

  6. 从零开始的软件构造复习[上篇]

    第一章 1.1 软件构造的多维度视图(Multi-dimensional software views) Build-time, moment, code-level 代码如何在逻辑上被组织为基本的程 ...

  7. 软件构造学习笔记ATD

    在面向对象的编程中,ADT的编写十分重要,与传统的c语言不同,面向对象的编程更加商业化一点,所以保密需要做好,有点商业机密的感觉.如何设计良好的抽象数据结构,通过封装来避免客户端获取数据的内部表示,避 ...

  8. 2021哈工大软件构造期末考点复习笔记

    第一节 多维视图和质量目标 软件构造多维度视图 红色标注为重点(考试会考选择题) Moment 特定时刻的软件形态 Period 软件形态随时间的变化 AST (Abstract Syntax Tre ...

  9. 【软件构造】实验笔记(一)Lab1-Fundamental Java Programming and Testing

    一.前言 <软件构造>课程是我校根据MIT.CMU等计算机领域名校的相关课程近年来开展的软件开发相关的课程.课程的实验和课件都很大程度上参考了上述学校. 本笔记对在课程实验练习进行中遇到的 ...

  10. 【哈工大软件构造】学习笔记10 第十章、第十一章、第十二章

    目录 第十章 面向可维护性的构造技术 1 软件维护和演化 2 可维护性的度量 3 模块化设计和模块性准则 模块划分的五个准则 模块设计的五个原则 耦合度和聚合度 4 OO设计准则:SOLID SRP ...

最新文章

  1. Go 知识点(13) — 如何判断变量类型
  2. [Python]urllib库的简单应用-实现北航宿舍自动上网
  3. 青海省计算机应用能力考试,青海省2015年职称计算机应用能力考试西宁考区四月份考试安排通知...
  4. ewebeditor后台拿shell
  5. 获取本地公网ip_本地与远程linux服务器之间传输数据
  6. 我的2018年终总结
  7. 可以扣6分也可以扣0分?闯红灯也是有技巧的
  8. WebService入门简介教程
  9. Scala多特质混入时的执行顺序
  10. halcon Bit图位像素处理算子,持续更新
  11. YBROJ洛谷P3211:XOR和路径(线性基,期望dp)
  12. linux用户操作的日志,linux 用户操作记录并录入日志
  13. 第二章 系统设置及基本操作
  14. 02.vs2015编译qt动态库
  15. 使用Entity Framework Core,Swagger和Postman创建ASP.NET Core Web API的分步指南
  16. vim 批量替换字符串_Vim 有什么奇技淫巧?
  17. LVS_TUN 实验
  18. MySQL书籍和资料
  19. 在rhel 7.3中安装glibc-devel-2.17-157.el7.i686包的过程详录
  20. 新视野大学英语(第三版)读写教程1答案(Units1-6)

热门文章

  1. win10去掉微软拼音的简繁体转换
  2. pytorch参数dim为-1的解释
  3. java 调用阿里云中通快递查询示例
  4. 【pyplot】scatter根据点的label或位置设置不同颜色
  5. Powershell攻击指南1——PowerSploit
  6. 一文读懂高频交易程序化交易和量化交易区别
  7. EA enterprise architect 画类图
  8. c语言编程猪八戒吃西瓜,儿童故事:猪八戒吃西瓜
  9. 数据猿·金猿榜丨2017中国智能语音领域最具潜力创业公司
  10. 回调地址没备案_回调地址常见问题及修改方法