理解ADT与OOP

x33g5p2x  于2022-06-27 转载在 其他  
字(1.0k)|赞(0)|评价(0)|浏览(329)

ADT

1.概念

2.组成

3.意义

OOP

1.概念

2.核心概念

ADT与OOP的关系

ADT

1.概念

指一个数学模型及定义在该模型上的一组操作,抽象数据类型的定义仅取决于它的一组逻辑特性,而与其在计算机内部如何表示和实现无关

2.组成

一个抽象数据类型定义了:一个数据对象、数据对象中各数据元素之间的关系及对数据元素的操作

3.意义

抽象数据类型体现了程序设计中问题分解、抽象和信息隐藏的特性。抽象数据类型把实际生活中的问题分解为多个规模小且容易处理的问题,然后建立一个计算机能处理的数据模型,并把每个功能模块的实现细节作为一个独立的单元,从而使具体实现过程隐藏起来

OOP

1.概念

面向对象的编程方法/语言应该具有类的概念作为中心概念。语言应该能够为类和它的特征提供断言(即规范:前置条件,后置条件和不变量)和异常处理,依靠工具生成这些断言中的文档,并且可选地在运行时监视它们 时间。

2.核心概念

静态类型:一个定义良好的类型系统应该通过强制执行一些类型声明和兼容性规则来保证它接受的系统的运行时类型安全。

泛型(Genericity):用于“准备改变”和“为/重用设计”:应该可以编写具有表示任意类型的正式泛型参数的类。

继承(Inheritance):应该可以将一个类定义为从另一个继承,以控制潜在的复杂性。

多态(Polymorphism):在基于继承的类型系统的控制下,应该可以将实体(表示运行时对象的软件文本中的名称)附加到各种可能类型的运行时对象。

动态分派/绑定(Dynamic dispatch / binding):在一个实体上调用一个特性应该总是触发与所附加的运行时对象的类型相对应的特性,这在调用的不同执行过程中不一定是相同的。

ADT与OOP的关系

面向对象程序设计的四大思想:封装、继承、多态、抽象
ADT刚好也体现了封装和抽象两个编程思想。想要实现ADT和具体实现语言无关(不管你用什么语言都可以体现某种编程思想)。因此你问题中“实现了面向对象编程中的封装”这种说法本身就有问题,不能说“实现”某种思想,只能说“体现”。

此外,ADT(抽象数据类型)只是一种数据类型,这种数据类型是一种数学模型和定义在该模型上的一组操作。封装、继承、多态、抽象是面向对象编程所使用的思想,ADT根本不是一门语言,只是一种模型,二者不能相提并论

CSDN 社区图书馆,开张营业!

深读计划,写书评领图书福利~

相关文章