抽象数据类型与类层次(一)

本文探讨抽象数据类型(ADTs)的概念,强调其在编程中的重要性,特别是如何通过C++的类层次来实现。文章介绍了抽象的思维方式,ADT关注的数据类型属性,并对比了泛型和类层次设计。还提到了类层次设计中的多态性和基础类,如Wrapper<T>,作为后续学习的基础。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        本系列文章主要学习抽象数据类型(Abstract Data Types)的基本知识和使用C++类层次(Class Hierarchy)来表示各种抽象数据类型。

        本文主要介绍一些基本概念:抽象(Abstract)、ADTs、设计模式(Design Patterns)。然后再展示后面要用到的类层次图。


一、抽象与抽象数据类型

        抽象就是将物体的性质从具体的、真实的物体中分离出来单独考虑的一种思维方式。比如在按高矮排队的时候,我们只关注身高而不关注具体的人。抽象就是这样一种超越(忽略)不相干的属性同时强调相干的属性的一种方法,它有利于程序员把复杂事物简单化。

        抽象数据类型是对计算机程序中保存(或表征)数据的变量的一种抽象。变量包括多个属性:name、address、value、lifetime、scope、type and size。其中每一种属性都有一个值,而ADT关注的是“type”这一项属性,它的值有:int、double、char...这些值实际上代表两方面的含义:1)“a set of values”,即可以赋值对象或取值范围;2)“a set of operations”,可以支持的操作。

        参考原文:Abstract Data Types


二、类层次

        我们将一些基本的ADTs当作C++类层次来设计。如下图:


        实现这些基本数据结构有两种设计方式,一种泛型,如STL;另一种就是这种类层次设计。这种类层次的设计方式很常见,如C#语言就是基于一个根类(Object)来设计其他数据类型(本书也是参照这种设计),另外MFC和Qt库也是这种设计。

        类层次的设计可以充分利用多态(主要是“基类指针或引用指向派生类对象”的特性),统一操作,某种程度上达到泛型模版的效果。(泛型的效率更高)

三、基础类

        本系列文章主要学习上面类图中的几个基础类,它们是后续章节数据类型的父类。


                            基础类图

        上图是几个基础类及其关系图。其中Wrapper<T>是一个包裹类,它的作用是让这套设计兼容内置数据类型。(C#语言也是这种设计)这种使用包裹类或适配器类来扩展的设计非常常见,如函数对象,另外,C++11中还提供了bind方法来扩展接口。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值