ADT

这⾥列出了⼏个能够表达ADT思想的词:

  • 抽象: 忽略底层的细节⽽在⾼层思考
  • 模块化:将系统分为⼀个模块,每个模块可以单独的进⾏设计、实现、测试、推倒,并且在剩下的开发中进 ⾏复⽤。
  • 封装:在模块的外部建⽴起⼀道“围墙”,使它只对⾃⼰内部的⾏为负责,并且系统别处的bug不会影响到它内 部的正确性。
  • 信息隐藏:将模块的实现细节隐藏,使未来更改模块内部时不必改变外部代码。
  • 功能分离:⼀个模块仅仅负责⼀个特性/功能,⽽不是将⼀个特性运⽤在很多模块上或⼀个模块拥有很多特性。

 

抽象数据类型(ADT)是通过它们对应的操作区分的。

  • 操作可以分类为创建者、⽣产者、观察者、改造者。
  1. creator 创作该类型的新对象,creator可以将对象作为参数,但不是正在构建类型的对象
  2. producer 从该类型旧对象中产生新对象,String的Concat方法是一个producer
  3. observers 采用ADT对象并返回不同类型 eg:List中的Size()
  4. Mututors 改变对象 eg:List中的add()
  • ADT的标识由它的操作集合和规格说明组成。
  • ⼀个好的ADT应该是简单,逻辑明确并且表⽰独⽴的。
  • 对于ADT的测试应该对每⼀个操作进⾏测试,并同时利⽤到创建者、⽣产者、观察者、改造者。

 

设计⼀个抽象类型包括选择合适的操作以及它们对应的⾏为。

  • 设计少量,简单,可以组合实现强⼤功能的操作⽽⾮设计很多复杂的操作。
  • 每个操作都应该有⼀个被明确定义的⽬的,并且应该设计为对不同的数据结构有⼀致的⾏为,⽽不是针对某些特殊情况。
  • 操作集合应该充分地考虑到⽤户的需求,也就是说,⽤户可以⽤这个操作集合做他们可能想做的计算。
  • 抽象类型可以是通⽤的:例如,列表、集合,或者图。

转载于:https://www.cnblogs.com/L160300101/p/9191230.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值