当前位置:网站首页>理解ADT与OOP
理解ADT与OOP
2022-06-23 12:56:00 【静静子*】
目录
ADT
1.概念
指一个数学模型及定义在该模型上的一组操作,抽象数据类型的定义仅取决于它的一组逻辑特性,而与其在计算机内部如何表示和实现无关
2.组成
一个抽象数据类型定义了:一个数据对象、数据对象中各数据元素之间的关系及对数据元素的操作
3.意义
抽象数据类型体现了程序设计中问题分解、抽象和信息隐藏的特性。抽象数据类型把实际生活中的问题分解为多个规模小且容易处理的问题,然后建立一个计算机能处理的数据模型,并把每个功能模块的实现细节作为一个独立的单元,从而使具体实现过程隐藏起来
OOP
1.概念
面向对象的编程方法/语言应该具有类的概念作为中心概念。语言应该能够为类和它的特征提供断言(即规范:前置条件,后置条件和不变量)和异常处理,依靠工具生成这些断言中的文档,并且可选地在运行时监视它们 时间。
2.核心概念
①静态类型:一个定义良好的类型系统应该通过强制执行一些类型声明和兼容性规则来保证它接受的系统的运行时类型安全。
②泛型(Genericity):用于“准备改变”和“为/重用设计”:应该可以编写具有表示任意类型的正式泛型参数的类。
③继承(Inheritance):应该可以将一个类定义为从另一个继承,以控制潜在的复杂性。
④多态(Polymorphism):在基于继承的类型系统的控制下,应该可以将实体(表示运行时对象的软件文本中的名称)附加到各种可能类型的运行时对象。
⑤动态分派/绑定(Dynamic dispatch / binding):在一个实体上调用一个特性应该总是触发与所附加的运行时对象的类型相对应的特性,这在调用的不同执行过程中不一定是相同的。
ADT与OOP的关系
面向对象程序设计的四大思想:封装、继承、多态、抽象
ADT刚好也体现了封装和抽象两个编程思想。想要实现ADT和具体实现语言无关(不管你用什么语言都可以体现某种编程思想)。因此你问题中“实现了面向对象编程中的封装”这种说法本身就有问题,不能说“实现”某种思想,只能说“体现”。此外,ADT(抽象数据类型)只是一种数据类型,这种数据类型是一种数学模型和定义在该模型上的一组操作。封装、继承、多态、抽象是面向对象编程所使用的思想,ADT根本不是一门语言,只是一种模型,二者不能相提并论
边栏推荐
- 618's money saving technology strategy is coming - experience the scene and get a 10 yuan cat super card!
- First exposure! The only Alibaba cloud native security panorama behind the highest level in the whole domain
- Broadcast level E1 to aes-ebu audio codec E1 to stereo audio XLR codec
- Go write file permission WriteFile (filename, data, 0644)?
- Part C - value types and reference types
- Tuikit audio and video low code solution navigation page
- 快速了解常用的非对称加密算法,再也不用担心面试官的刨根问底
- How to use androd gradle module dependency replacement
- Meta said that the UK security law will "scan all private information", which risks infringing on users' privacy
- R language dplyr package mutate_ The all function multiplies all numeric columns (variables) in the dataframe by a fixed value to generate a new data column, and specifies a user-defined suffix name f
猜你喜欢

MySQL使用ReplicationConnection導致的連接失效分析與解决

LM05丨曾经的VIX(二代产品)

技术分享| WVP+ZLMediaKit实现摄像头GB28181推流播放

You call this shit MQ?

Cloud native essay deep understanding of ingress

Unity learning day14 -- collaboration and WWW

美国的国家公园概览

Gradle Build Cache引发的Task缓存编译问题怎么解决

【网站架构】10年数据库设计浓缩的绝技,实打实的设计步骤与规范

Broadcast level E1 to aes-ebu audio codec E1 to stereo audio XLR codec
随机推荐
火绒安全与英特尔vPro平台合作 共筑软硬件协同安全新格局
Analysis and solution of connection failure caused by MySQL using replicationconnection
Cloud native essay deep understanding of ingress
Filtre de texte en ligne inférieur à l'outil de longueur spécifiée
Architecture design methods in technical practice
在線文本過濾小於指定長度工具
[website architecture] the unique skill of 10-year database design, practical design steps and specifications
Online text filter less than specified length tool
32-way telephone +2-way Gigabit Ethernet 32-way PCM telephone optical transceiver supports FXO port FXS voice telephone to optical fiber
R语言使用构建有序多分类逻辑回归模型、ordinal.or.display函数获取有序逻辑回归模型的汇总统计信息(变量对应的优势比及其置信区间、以及假设检验的p值)、汇总统计结果保存到csv
首次曝光!唯一全域最高等级背后的阿里云云原生安全全景图
Go寫文件的權限 WriteFile(filename, data, 0644)?
【网站架构】10年数据库设计浓缩的绝技,实打实的设计步骤与规范
【深入理解TcaplusDB技术】单据受理之事务执行
腾讯的技术牛人们,是如何完成全面上云这件事儿的?
何小鹏:如果可以回到创业的时候 不会以自己的名字给产品命名
First exposure! The only Alibaba cloud native security panorama behind the highest level in the whole domain
R语言使用MatchIt包进行倾向性匹配分析(设置匹配方法为nearest,匹配倾向性评分最近的对照组和病例组,1:1配比)、使用match.data函数构建匹配后的样本集合
How did Tencent's technology bulls complete the overall cloud launch?
PHP handwriting a perfect daemon