面向过程程序设计:将程序分为若干模块,按照自顶向下的功能分解法进行程序设计的方法
程序单位:过程或函数
过程或函数:由赋值语句、条件语句、循环语句、过程调用语句组成的语句序列;
设计方法:自顶向下的功能分解法
思想:将一个待解决的问题,划分为若干子问题,再将子问题划分为若干子问题,直至子问题足够简单,可以在相应过程中得到解决。
缺点:数据与处理数据的过程分离为相对独立的实体,当数据结构发生改变时,所有与之相关的过程都要进行相应的修改,程序的可复用性差。造成面向过程程序设计方法的开发和维护都很困难。
面向对象程序设计:
引入:解决传统的面向过程程序设计中过程型程序设计和自顶向下程序设计中遇到的主要问题
对象:1)由数据和对数据的操作行为组成的一个相互依存、不可分割的整体
2)具有唯一对象名和固定对外接口的一组属性和操作的集合
对象名:区别于其他对象的标志;
对象接口:对象在约定好的运行框架和消息传递机制中与外界通信的通道;
对象的属性:表示对象所处的状态;
类:相同类型对象分类、抽象后,得出共同的特性的集合。
类是一个数据类型,对象是类的实例。
具有类类型的变量被称为对象引用。
对象之间通过消息相互作用。
优点:程序的独立性高、数据安全,其具有的特性:封装性、抽象性、,继承性和多态性,使得软件具有可重用性,开发和维护的代价降低。
封装:将对象的属性和操作结合成一个不可分割的独立的单位,并尽可能的隐藏对象的内部实现细节,只保留有限的对外接口。
作用:1)解决了面向过程程序设计中数据与操作分离的问题,提高了程序的可复用性和可维护性;
2)把对象的私有数据和公有数据分开,保护了私有数据,降低了模块之间的干扰,降低了程序的复杂性、提高了可控性。
继承:在已有类(即:父类或超类)的基础上派生出新的类(子类),新的类可以吸收已有类的属性和行为,并扩展新的能力;
作用:提高了程序的可复用性,降低了程序开发的成本,简约了代码量
单重继承:子类只能有一个负累,并只能继承这个父类的属性和方法
多重继承:子类拥有多个父类
缺点:多重继承往往会使程序具有二义性,一般用接口来支持多重继承。
多态性:在超类中定义的属性或行为被子类继承后,可以具有不同的数据类型或表现出不同的行为;一个符号在不同的情况下具有不同的解释。