Abstract Data Types 抽象数据类型 Institute of Computer Software 2022-2-27 Nanjing University
抽象数据类型 Abstract Data Types 2022-2-27 Institute of Computer Software Nanjing University 1
&雪扇 0o2 摘要 UNIVE 2 口从面向过程到面向对象 口如何规约对象?一抽象! Abstract data type 口ADT与软件开发 Institute of Computer Software 2022-2-27 Nanjing University
摘要 从面向过程到面向对象 如何规约对象?——抽象! Abstract data type ADT与软件开发 2022-2-27 Institute of Computer Software Nanjing University 2
&扇 回顾:结构化软件开发 1902 3 口何谓“结构化(structured)”开发方法? The Big Name“E.W.Dijkstra'” ▣开发过程侧面 口自顶向下,逐步求精 口程序设计侧面 口小结构:concatenation,,selection,and repetition.. 口大结构:过程抽象,避免全局变量 Institute of Computer Software 2022-2-27 Nanjing University
回顾:结构化软件开发 何谓“结构化(structured)”开发方法? The Big Name “E.W. Dijkstra” 开发过程侧面 自顶向下,逐步求精 程序设计侧面 小结构:concatenation, selection, and repetition. 大结构:过程抽象,避免全局变量 2022-2-27 Institute of Computer Software Nanjing University 3
&扇 NAN 回顾:结构化软件开发 1002 UNIVE 4 “结构化(structured)”的合理性 ▣管理复杂性的有效手段 ■分解,抽象,层次 Correctness 口规约与实现 Extendibility?Reusability? Institute of Computer Software 2022-2-27 Nanjing University
回顾:结构化软件开发 “结构化(structured)”的合理性 管理复杂性的有效手段 分解, 抽象, 层次 Correctness 规约与实现 Extendibility? Reusability? 2022-2-27 Institute of Computer Software Nanjing University 4
从面向过程到面向对象 1002 5 “结构化”的基本思想已经深入人心 口但对于复杂、易变、交互性软件系统,以“功 能”为中心的分解方式有局限 口完全自顶向下的功能分解? ▣线性过程式的程序组织? 应变 Institute of Computer Software 2022-2-27 Nanjing University
从面向过程到面向对象 “结构化”的基本思想已经深入人心 但对于复杂、易变、交互性软件系统,以“功 能”为中心的分解方式有局限 完全自顶向下的功能分解? 线性过程式的程序组织? 应变 2022-2-27 Institute of Computer Software Nanjing University 5
The first step 1902 6 口程序运行:在某个数据体上施以某些操作。 a 两个要素 口操作(功能)Functions[or:Operations,,Actions] 口客体(对象)Objects[or:Data] Action Object Processor Institute of Computer Software 2022-2-27 Nanjing University
The first step 程序运行:在某个数据体上施以某些操作。 两个要素 操作(功能)Functions [or: Operations, Actions] 客体(对象)Objects [or: Data] 2022-2-27 Institute of Computer Software Nanjing University 6 Action Object Processor
&扇 NAN 如何导出软件系统的结构? 1002 口两条途径: ▣从操作/功能入手 口从客体/对象入手 口形成两种抽象方法: 口基于过程的抽象 口基于数据的抽象 Institute of Computer Software 2022-2-27 Nanjing University
如何导出软件系统的结构? 两条途径: 从操作/功能入手 从客体/对象入手 形成两种抽象方法: 基于过程的抽象 基于数据的抽象 2022-2-27 Institute of Computer Software Nanjing University 7
过程抽象vs.数据抽象 过程抽象:指任何一个明确定义功能的操作都 可以被使用者看作单个的实体,尽管这个操作 实际上可能由一系列更低级的操作完成 数据抽象:定义了数据类型和施加于该类型对 象上的操作,并限定了对象的值只能通过使用 这些操作修改和观察。包含了2个概念: 1. 模块封装 2. 信息隐蔽 Institute of Computer Software 2022-2-27 Nanjing University
过程抽象 vs. 数据抽象 过程抽象:指任何一个明确定义功能的操作都 可以被使用者看作单个的实体,尽管这个操作 实际上可能由一系列更低级的操作完成 数据抽象:定义了数据类型和施加于该类型对 象上的操作,并限定了对象的值只能通过使用 这些操作修改和观察。包含了2个概念: 1. 模块封装 2. 信息隐蔽 2022-2-27 Institute of Computer Software Nanjing University 8
数据抽象的意义 02 9 口数据抽象提供了面向对象计算的起点:系统应 该被分解为概念上的实体,实体的内部细节应 该被隐藏! Institute of Computer Software 2022-2-27 Nanjing University
数据抽象的意义 数据抽象提供了面向对象计算的起点:系统应 该被分解为概念上的实体,实体的内部细节应 该被隐藏! 2022-2-27 Institute of Computer Software Nanjing University 9
数据抽象发展 10 口第一阶段:从无类型的二进制到基本数据类型 口Fortran,Algol::整型、实数、布尔数 口第二阶段:从基本类型到用户自定义类型 口Algol68,Pascal 口第三阶段:从用户自定义类型到抽象数据类型 (Abstract Data Types)-面向对象 口模块化程序设计和模块 Institute of Computer Software 2022-2-27 Nanjing University
数据抽象发展 第一阶段:从无类型的二进制到基本数据类型 Fortran, Algol: 整型、实数、布尔数 第二阶段:从基本类型到用户自定义类型 Algol68, Pascal 第三阶段:从用户自定义类型到抽象数据类型 (Abstract Data Types)-- 面向对象 模块化程序设计和模块 2022-2-27 Institute of Computer Software Nanjing University 10