一、数据类型:
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):描述了一个类的一组外部可用的操作(方法)集合
体现了“接口与实现的分离”的思想,即“信息隐藏”。