数据结构基础1

一、数据类型:

1.基本数据类型(物理数据类型)

一般分为整数、实数、字符等。

c语言的基本数据类型:

整数(int)字符(char)单精度浮点数(float)双精度浮点数(double)

2.结构数据类型(虚拟数据类型)

指一个数据结构包含其他的数据类型,如字符串(string)、集合(set)、数组(Array),比基础数据类型更高级。

3.抽象数据类型(Abstract Data Type)

指定义一些结构数据类型所具备的数学运算关系,只针对数据的运算,而非数据本身的性质。例如:某个数据对象可以插入一个列表,或者在列表中增删数据对象,而不需关心这个对象的类型是字符串、整数、实体还是逻辑值。(堆栈Stack和队列Queue就是一种典型的ADT模式,比结构数据类型更高级)

二、面向对象程序设计

面向对象 = 对象 + 类 + 继承 + 消息

对象

对象(Object):具有责任的实体。用来描述客观事物的实体,是构成系统的一个基本单位,由一组属性以及作用在这组属性的操作构成。

特性:标识符(区别其他对象)、属性(状态)和操作(行为)。

属性(Attribute):与对象关联的数据,描述对象静态特性;

操作(Operation):与对象关联的程序,描述对象动态特性;

类(Class):

概念

具有相同属性和操作的一组对象的抽象,它为属于该类的全部对象提供了统一的抽象描述。

区别

类是静态的,类的存在、语义和关系在程序执行前就已经定义好了。

对象是动态的,对象在程序执行时可以被创建和删除。

层次 
这里写图片描述


属性 
这里写图片描述


方法 
这里写图片描述

消息

这里写图片描述

面向对象程序设计具备以下三个特性:

1.封装性:利用“类”来实现抽象数据类型。

抽象:将代表事务特征的数据隐藏起来,并定义一些方法来作为操作这些数据的接口,让用户可以接触到这些方法,而无法直接使用数据,也符合信息隐藏的意义。这种自定义的数据类型称为“抽象数据类型”

封装:每个类都有其数据成员与函数成员,将数据成员定义为私有的(private),而将用来运算或操作数据的函数成员定义为公有的(public)或受保护的(protected)来实现信息隐藏的功能,即封装的作用。

封装的作用

使对象形成两个部分:接口(可见)和实现(不可见),将对象所声明的功能(行为)与内部实现(细节)分离

“封装”的作用是什么?

数据的安全性:保护对象,避免用户误用。
模块的独立性:保护客户端(调用程序),其实现过程的改变不会影响到相应客户端的改变。
易开发、易维护性:隐藏复杂性,降低了软件系统开发难度;各模块独立组件修改方便,重用性好。

2.继承性:接近于现实生活中的遗传,就像子女遗传父母的某些特征。继承允许定义一个新的类来继承现有的类,进而使用或者修改继承而来的方法,也支持在子类中加入新的数据成员与函数成员。

泛化(generalization)/继承(Inheritance) 关系是类元的一般描述和具体描述之间的关系,具体描述建立在一般描述的基础之上,并对其进行了扩展。

继承(Inheritance):子类( Subclass)可自动拥有父类/超类(SuperClass)的全部属性和操作。

表示两个类之间是“is a”关系。
继承使两个以上的类共享相同的属性和/或相同方法。
继承的各个类间形成层次结构。
继承提高了复用性,使多态成为了可能。

3.多态性:“同名异式”

在父类中定义的属性或服务被子类继承后,可以具有不同的数据类型或表现出不同的行为。

java中有重写(静态),重载(动态)

抽象类(abstract class)与接口(Interface)
抽象类

抽象类中至少有一个方法被定义为“abstract”类型的。
“abstract”类型的方法:只有方法定义,没有方法的具体实现。https://blog.csdn.net/vegetable_bird_001/article/details/51820835
抽象类的类名在模型中一般为“斜体”,或
接口

接口(Interface):描述了一个类的一组外部可用的操作(方法)集合

体现了“接口与实现的分离”的思想,即“信息隐藏”。
 

猜你喜欢

转载自blog.csdn.net/qq_38360675/article/details/84891800