- 面向对象编程-数据
- 初步编程(有关数据,有点晦涩)
- 数据:数据的原始形态,如数字、文本、图片等
- 数据类型:定义了数据在计算机中的表示和能执行的操作
- 基本类型
- 空类型
void
- 算术类型
- 整形
- 整数:
-2、0、1
- 布尔:
Ture / Flase(1 / 0 存储)
- 字符:
a、!、您(ASCLL码)
- 整数:
- 浮点型
123.456
- 整形
- 空类型
- 复合类型
- 提供对其他对象的间接访问
- 引用:变量的别名
- 指针:指向其他变量的数据类型
- 提供对其他对象的间接访问
- 基本类型
- 数据元素(
Data Element
):可简单亦可复杂。数据结构中其通常被视为不可分割的个体,是数据操作的基本对象。- 标识性:
- 每个数据元素都有唯一的标识,使其能够与其他元素区分开来。在某些数据结构中,这 个标识可能是元素的索引或键值
- 数据值:
- 数据元素包含一个或多个数据值,这些值可以是基本数据类型(如整数、浮点数、字符)或复合数据类型(如记录、结构体、对象)
- 结构属性:
- 数据元素在数据结构中的位置和关系定义了其结构属性。例如,在数组中,数据元素按顺序排列,可以通过索引直接访问;在树结构中,数据元素具有父子关系
- 操作:
- 数据元素通常支持一系列操作,如插入、删除、查找、更新等。这些操作取决于数据元素所在的数据结构
- 复杂度:
- 数据元素可以是简单的,如一个整数或一个字符;也可以是复杂的,如一个包含多个字段的对象。在复杂数据元素中,每个字段都可以是一个简单或复杂的数据项
- 抽象层次:
- 在不同的抽象层次上,数据元素的概念可能有所不同。在高级编程语言中,数据元素可以是任何变量或数据对象;在数据库中,数据元素可能指的是表中的行或记录。
- 标识性:
- 数据结构:组织和存储数据元素的方式,它决定了数据如何被访问和修改
- 线性数据结构:元素以线性方式排列,每个元素最多只有两个邻居
- 数组(
Array
):固定大小的元素序列,可以随机访问 - 链表(
Linked List
):动态大小的元素序列,元素通过指针连接 - 栈(
Stack
):后进先出(LIFO),只允许在一端进行插入和删除操作 - 队列(
Queue
):先进先出(FIFO),允许一端插入元素,另一端删除元素
- 数组(
- 树形数据结构:元素以层次化的树状结构排列
- 二叉树(
Binary Tree
):每个节点最多有两个子节点的树结构 - 平衡树(
AVL Tree
):自平衡的二叉搜索树 - 红黑树(
Red-Black Tree
):自平衡的二叉搜索树,保持黑高性质
- 二叉树(
- 图形数据结构:元素以非线性的图形结构排列
- 图(
Graph
):由节点和边组成,用于表示对象之间的多对多关系 - 有向图(
Directed Graph
):边有方向的图 - 无向图(
Undirected Graph
):边没有方向的图
- 图(
- 集合数据结构:用于存储不重复的元素集合
- 集合(
Set
):存储不重复元素的集合 - 多集合(
Multiset
):允许元素重复的集合
- 集合(
- 散列数据结构:使用散列函数组织数据,以便快速访问
- 哈希表(
Hash Table
):使用哈希函数索引数据的结构
- 哈希表(
- 其他数据结构:包括堆(
Heap
)、优先队列(Priority Queue
)等
- 线性数据结构:元素以线性方式排列,每个元素最多只有两个邻居
- 容器:容器是一种特殊的数据结构,它提供了对数据元素进行管理和操作的方法
- 与数据结构的区别
- 关注点
- 数据结构:数据的组织和操作方法
- 容器:数据的储存与管理
- 实现
- 数据结构:是容器的一种实现方式,如数组可是数据结构,亦是容器
- 容器:数据结构的具体实现,如
C++
的STL
中的vector
- 接口
- 数据结构:提供提供了一组操作:插入、删除、查找等
- 容器:提供了一组接口,如添加、移除、访问等
- 关注点
- 例子
- 数据结构
- 数组:一种线性数据结构,允许随机访问和固定大小的存储。
- 链表:一种线性数据结构,允许动态大小和顺序访问。
- 树:一种树形数据结构,用于层次化的数据组织和快速访问。
- 容器
- Python列表(
list
):容器,基于数组,提供动态大小、顺序访问 - C++向量(
vector
):容器,基于数组,提供动态大小、随机访问 - Java集合(
Collection
):接口,表示不同类型的容器- 如列表、集合、队列等
类:创建具有特定属性和方法的对象的模板,类是对象的蓝图,对象是类的实例
- 如列表、集合、队列等
- Python列表(
- 数据结构
- 属性(
Attributes
)- 属性是对象的特征或状态,通常是指对象可以拥有的一些值
- 例:一个
Person
类可能有一属性叫做name
,用于存储一个人的名字
- 方法(
Methods
)- 方法是对象可以执行的操作或功能。它们定义了对象的行为
- 例:
person
类可能有一方法sayHello
,用于让对象打印出"Hello"
- 构造函数(
Constructors
)- 构造函数是一种特殊的方法,用于在创建对象时初始化对象的属性
- 每个类都有一个构造函数,默认下,如果没有显式定义
- 编译器会提供一个默认构造函数
- 析构函数(
Destructors
)- 析构函数是当对象被销毁时自动调用的特殊方法
- 用于清理对象占用的资源
- 继承(
Inheritance
)- 继承允许一个类(子类)继承另一个类(父类)的属性和方法
- 子类可以添加新的属性和方法,或者覆盖父类的方法
- 多态(
Polymorphism
)- 多态允许一个对象以多种不同的形式出现
- 在面向对象编程中,多态通常是通过继承和接口实现的
- 封装(
Encapsulation
)- 封装是将数据和操作数据的函数组合在一起,隐藏对象的内部实现细节
- 只对外提供接口。这有助于保护对象的状态,并使代码更加易于维护
- 与数据结构的区别
- 数据类型:定义了数据在计算机中的表示和能执行的操作
- 数据:数据的原始形态,如数字、文本、图片等
-END-