软件构造学习第三章2

3.3Abstract Data Type(抽象数据类型)ADT
Java只有两种类型基本数据类型,和对象数据类型,而抽象数据类型则是进行了约束,只能通过给出的方法来进行操作这类,不能直接通过属性如果把所有的属性变成private可以看起来简单的实现。

抽象数据型与表示独立性::如何设计良好的抽象数据结构,通过封装来避免客户端获取数据的内部表示(即“表示泄露”),避免潜在的bug——在client和implementer之间建立“防火墙”

 ADT的特性:表示泄漏、抽象函数AF、表示不变量RI基于数学的形式对ADT的这些核心特征进行描述并应用于设计中。
如何对类的属性进行设计(写的注释叫做AF RI)
用户是看不到AF以及RI的,对应了类中的表示如何实现,类中的属性如何设计,和用户无关。
一、 什么是抽象以及用户定义类型
除了编程语言所提供的基本数据类型和对象数据类型,程序员可定义自己的数据类型
数据抽象:由一组操作所刻画的数据类型
对比两种类型:
传统的类型定义:关注数据的具体表示 抽象类型:强调“作用于数据上的操作”,程序员和 client无需关心数据如何具体存储的,只需设计/使用操作即可。

所以请记住——抽象数据类型是由其操作定义的,使用者无法接触到内部,只能看到操作的规约,也不关心内部数据如何存储,类中的属性也不需要知道。

二、类型和操作的分类
数据类型的分类:可变和不可变数据类型
可变类型的对象:提供了可改变其内部数据的值的操作mutable
不变数据类型:其操作不改变内部值,而是构造新的对象immutable

对抽象类型的操作进行分类
构造器 创建者创建该类型的新对象。创建者可以接受一个对象作为参数,但不能接受正在构造的类型的对象。

生产器 从旧的对象,产生新的对象的类型 例如,String的concat()方法是一个生成器:它接受两个字符串并生成一个表示它们连接的新字符串。

观察器 观察者获取抽象类型的对象并返回不同类型的对象。- size()方法的列表,例如,返回一个整数。

变值器,改变对象属性的方法 例如,List的add()方法通过添加元素到最后。

creator : t* → T
producer : T+, t* → T
observer : T+, t* → t
mutator : T+, t* → void | t | T

着重讲解一下creator
构造器:可能实现为构造函数或静态函数
类的构造器应该不被用户发现,但是用户如果要创造对象的时候还得用
作为静态方法实现的创建者通常称为工厂
方法
这时候需要使用工厂方法
使用静态方法类名来调用,来产生新的创造

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值