博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
软件构造 第三章第三节 抽象数据型(ADT)
阅读量:5094 次
发布时间:2019-06-13

本文共 996 字,大约阅读时间需要 3 分钟。

软件构造 第三章第三节 抽象数据型(ADT)

Creators(构造器):

创建某个类型的新对象,个创建者可能会接受个对象作为参数,但是这个对象的类型不能是它创建对象对应的类型。可能实现为构造函数或静态函数。(通常称为工厂方法)

t* ->  T

例子:Integer.valueOf( )

 

Producers(生产器):

通过接受同类型的对象创建新的对象。

T+ , t* -> T

例子:String.concat( )

 

Observers(观察器):

获取抽象类型的对象然后返回一个不同类型的对象/值。

T+ , t* -> t

例子:List.size( ) ;

 

Mutators(变值器):

改变对象属性的方法 ,

变值器通常返回void,若为void,则必然意味着它改变了对象的某些内部状态;当然,也可能返回非空类型 

T+ , t* -> t || T || void

例子:List.add( )

 

Representation Independence

表示独立性:client使用ADT时无需考虑其内部如何实现,ADT内部表示的变化不应影响外部spec和客户端。

除非ADT的操作指明了具体的前置条件/后置条件,否则不能改变ADT的内部表示——spec规定了 client和implementer之间的契约。

 

 

Invariance和表示泄露(Rep exposure):

-一个好的抽象数据类型的最重要的属性是它保持不变量。一旦一个不变类型的对象被创建,它总是代表一个不变的值。当一个ADT能够确保它内部的不变量恒定不变(不受使用者/外部影响),我们就说这个ADT保护/保留自己的不变量。

-Defensive Copy

 

 

 

 

抽象函数AF与表示不变量RI

  • 对于RI(表示不变量),仅仅宽泛的说什么区域是合法的并不够,你还应该说明是什么使得它合法/不合法。
  • 对于AF(抽象函数)来说,仅仅宽泛的说抽象域表示了什么并不够。抽象函数的作用是规定合法的表示值会如何被解释到抽象域。作为一个函数,我们应该清晰的知道从一个输入到一个输入是怎么对应的。

 

做出具体的解释:每个rep value如何映射到abstract value

Safety from Rep Exposure

转载于:https://www.cnblogs.com/masteryellow/p/9214293.html

你可能感兴趣的文章
linux运维、架构之路-Kubernetes集群部署TLS双向认证
查看>>
leetcode算法:Trim a Binar Search Tree
查看>>
机器学习之路: python 支持向量机 LinearSVC 手写字体识别
查看>>
和运营开会的知道的一些点
查看>>
学习NLP:《自然语言处理原理与技术实现(罗刚)》PDF+代码
查看>>
2.5.1 命令与参数
查看>>
重装win 修复ubuntu引导
查看>>
Keyboard项目中观察者模式解析
查看>>
【转】Oracle查询用户所有表
查看>>
微信域名防红防屏蔽系统的原理 微信域名防屏蔽的注意点
查看>>
使用tc对linux中某ip段限速
查看>>
移动端动画使用transform提升性能
查看>>
【转】谈一谈PHP字串清除空格函数不安全
查看>>
C++笔记之CopyFile和MoveFile的使用
查看>>
常用模块以及常用方法
查看>>
CodeForces 1109F. Sasha and Algorithm of Silence's Sounds
查看>>
图片报错,显示默认图片
查看>>
[原创]java WEB学习笔记103:Spring学习---Spring Bean配置:基于注解的方式(基于注解配置bean,基于注解来装配bean的属性)...
查看>>
[转]手把手教你搭建Hive Web环境
查看>>
vue父子组件的传值
查看>>