面向对象是由最原始的程序变量名冲突所产生的划时代的概念和方法,由ALGOL的块结构概念向前发展一步,提出了对象的概念,并使用了类,也支持类继承。随后逐步发展、建立出具有模块化、信息封装与隐蔽、抽象性、继承性、多样性等特性的完整体系。面向对象的意义就在于可以按照人们通常的思维来建立问题模型,设计出符合我们日常行为的程序软件。
对象:万物皆对象,它不仅能表示有形的实体,也能表示无形的(抽象的)规则、计划或事件。
类:类是对象的模板,即一组具有相同属性的对象的定义或集合,由对象抽象化而来的概念,而对象则是类的具体化,是类的实例。
面向对象主要特征:
封装性,即是一种信息隐蔽的手段,其可以将数据和加工该数据的方法(即函数)封装为一个整体模块
继承性,即对象与类的一种父子关系,子(对象)可以继承父(类)的所有属性,同时可以进行修改和扩充
多态性,即同一信息在不同接收对象所表现的不同状态(父类的一个属性在不同子类对象所表现的不同形式)
用OO方法进行面向对象程序设计,其基本步骤如下:
(1) 分析确定在问题空间和解空间出现的全部对象及其属性;
(2) 确定应施加于每个对象的操作,即对象固有的处理能力;
(3) 分析对象间的联系,确定对象彼此间传递的消息;
(4) 设计对象的消息模式,消息模式和处理能力共同构成对象的外部特性;
(5) 分析各个对象的外部特性,将具有相同外部特性的对象归为一类,从而确定所需要的类;
(6) 确定类间的继承关系,将各对象的公共性质放在较上层的类中描述,通过继承来共享对公共性质的描述;
(7) 设计每个类关于对象外部特性的描述;
(8) 设计每个类的内部实现(数据结构和方法);
(9) 创建所需的对象(类的实例),实现对象间应有的联系(发消息)。
面向对象设计程序的原则
开闭原则:即对扩展开放,修改封闭
类的单一职责:一个类尽量只有唯一一个改变他的原则
依赖倒置:又依赖抽象,即对象依赖类,具体依赖抽象
组合复用:效果组合,功能复用
里氏替换原则:父类出现的地方可以被子类替换,重写父类方法时尽量选择扩展重写
迪米特法则:低耦合原则,即对象之间联系尽量互不影响
面向对象的分析方法(OOA)------核心
面向对象的设计方法(OOD)------过程
面向对象编程(OOP)------实现