面向对象

面向对象的概念

面向对象(Object Oriented):是软件开发方法;是一种对现实世界理解和抽象的方法。是计算机编程技术发展到一定阶段后的产物。
面向对象的方法:就是利用抽象、封装等机制,借助于对象、类、继承、消息传递等概念进行软件系统构造的软件开发方法。

面向对象涉及的基本概念

对象:某一具体事物,即在现实生活中可以看得见摸得着的事物。对象是数据和行为的结合体。
方法:对象能够进行的操作。它另外一个称呼函数
继承:简单来说是一种层次模型,这种层次模型能够被重用。层次结构的上层具有通用性,下层具有特殊性。
:具有相同特性(数据元素)和行为(功能)的对象的抽象。对象的抽象是类,类的具体化是对象。也可以说类的实例是对象。类实际上就是一种数据类型。
封装:将对象和代码捆绑到一起。实现了对数据和行为的包装和信息隐藏。
多态:不同事物具有不同表现形式的能力。多态使具有不同内部结构的对象可以共享相同的外部接口。
动态绑定:多态实现的具体形式,指与给定的过程的调用相关联的代码只有在运行期才可知的一种绑定。
消息传递:对象之间需要相互沟通,沟通的途径就是对象之间收发消息。消息的内容包括接收消息的对象标识、需要调用的标识、以及必要的信息。消息传递的概念使得对现实世界的描述更容易。

面向对象的来源

早期的计算机编程是基于面向过程的方法,随着计算机技术的不断提高,计算机被用于解决越来越复杂的问题。一切事物皆对象,通过面向对象的方式,将现实世界的事物抽象成对象,现实世界中的关系抽象成类、继承,帮助人们实现对现实世界的抽象与建模。

面向对象是在结构化设计方法(面向过程)出现很多问题的情况下应运而生的。结构化设计方法它求解问题的基本思路是从功能的角度审视问题域,它与我们人类解决问题的方式存在视角偏差、抽象度不够、没有整体封装、可复用性差等特点,从而面向对象的程序设计方法由此产生。

1967年5月20日,在挪威奥斯陆郊外的小镇莉莎布举行的IFIP TC-2 工作会议上,挪威科学家Ole-Johan Dahl和Kristen Nygaard正式发布了Simula 67语言。Simula 67被认为是最早的面向对象程序设计语言,它引入了所有后来面向对象程序设计语言所遵循的基础概念:对象、类、继承。之后,在1968年2月形成了Simula 67的正式文本。

易混概念

面向对象 VS 基于对象

简单来说:面向对象具有三大特点:封装、继承、多态,三者缺一不可。
基于对象实现了封装概念,没有实现继承和多态。

对象过程 VS 面向对象

面向过程:分析问题所需要的步骤,而后一步一步实现。
面向对象:把构成问题的事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描述某个事物在整个解决问题的步骤中的行为。