【思维导图】HIT软件构造Java笔记——第六章抽象数据类型(一)

这篇博客探讨了抽象数据类型(ADT)的概念,强调了其与表示独立性的重要性,旨在避免客户端获取数据的内部表示,减少潜在的错误。ADT通过封装来设计良好的数据结构,并将类型分为可变和不可变。博客详细阐述了构造器、观察器和变值器等操作,并通过实例如int、String和List展示了这些概念。此外,还讨论了如何使用工厂方法创建对象以及如何通过操作分类来更好地理解ADT。
摘要由CSDN通过智能技术生成

请添加图片描述
(在app上图片看不清的话可以复制链接到浏览器里,就可以看清了,电脑端也可以看清)
尝试根据上课的PPT整理出了一份不是很全的思维导图,省略了一些东西,如果有不对的地方或者困惑的地方请多多指正。下附xmind导出大纲,希望能对大家的学习有所帮助.

抽象数据类型

概述

抽象数据类型与表示独立性

  1. 分离程序中数据结构和具体的实现形式
  2. dangerous problem
    用户对类型的内部表示进行猜想

目的

设计良好的数据结构

- 通过封装避免客户端获取数据的内部表示

	- 表示泄露

避免潜在bug

- 建立client——implementer之间的防火墙

ADT的特性:(解释class的meaning)

  1. AF, rep invariants
  2. invariants, representation exposure
  3. 均基于数学形式进行描述

Abstraction, User-defined types

介绍

  • built-in 类型:整形, 布尔型…
  • 自定义类型

数据抽象

由一组可实现操作刻画的数据类型

辨析
- 传统类型定义

	- 关注数据的具体表示

- 抽象类型定义

	- 强调作用于数据上的操作

基于操作定义的抽象数据类型

- a set of opaque values

	- 可以实现list类操作的--均是list

对操作和类型进行分类

可变和不可变数据类型(mutable/immutable)

可变类型对象

- 提供改变内部值得operations

不可变类型对象

- 可以new 不能change

对操作进行抽象分类

  1. 构造器creator
    构造方法——从无到有
  2. 生产器producer
    concat() of String–producer产生了一个新的同类对象(immutable类型)
  3. 观察器observer
    返回不同类型的对象
  4. 变值器mutator
    改变对象–add() of List

构造器

可实现为构造函数/静态函数:静态方法–xx.aslist

	- 通常称为工厂方法

变值器

  • 通常返回void:将会产生副作用

  • 也可返回非空类型: Set.add

      - 返回布尔值
    

ADT举例

int不可变

  • 没有mutator

  • producer

    • 四则运算
  • observers

    • ==,!=…

String不可变

  • producer

    • concat, substring, toUpperCase
  • observer

    • length, charAt

List可变

  • creator

    • 链表/数组的构造函数
  • producer

    • Collection.unmodifiableList
  • observer

    • size, get
  • mutator

    • add, remove, addAll, .sort
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值