面向对象程序设计中的概念主要包括:对象、类、数据抽象、继承、动态绑定、数据封装、多态性、消息传递。通过这些概念面向对象的**得到了具体的体现。
1)对象(Object) 可以对其做事情的一些东西。一个对象有状态、行为和标识三种属性。
2)类(class) 一个共享相同结构和行为的对象的集合。
类(Class)定义了一件事物的抽象特点。通常来说,类定义了事物的属性和它可以做到的(它的行为)。
举例来说,“狗”这个类会包含狗的一切基础特征,例如它的孕育、毛皮颜色和吠叫的能力。
类可以为程序提供模版和结构。一个类的方法和属性被称为“成员”。
3)封装(encapsulation): 第一层意思:将数据和操作捆绑在一起,创造出一个新的类型的过程。第二层意思:将接口与实现分离的过程。
4)继承 类之间的关系,在这种关系中,一个类共享了一个或多个其他类定义的结构和行为。继承描述了类之间的“是一种”关系。子类可以对基类的行为进行扩展、覆盖、重定义。
5)组合 既是类之间的关系也是对象之间的关系。在这种关系中一个对象或者类包含了其他的对象和类。 组合描述了“有”关系。
6)多态 类型理论中的一个概念,一个名称可以表示很多不同类的对象,这些类和一个共同超类有关。因此,这个名称表示的任何对象可以以不同的方式响应一些共同的操作集合。
7)动态绑定 也称动态类型,指的是一个对象或者表达式的类型直到运行时才确定。通常由编译器插入特殊代码来实现。与之对立的是静态类型。
8)静态绑定 也称静态类型,指的是一个对象或者表达式的类型在编译时确定。
9)消息传递 指的是一个对象调用了另一个对象的方法(或者称为成员函数)。
10)方法 也称为成员函数,是指对象上的操作,作为类声明的一部分来定义。方法定义了可以对一个对象执行那些操作。
https://baike.baidu.com/item/OOP/1152915 https://baike.baidu.com/item/%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1%E7%A8%8B%E5%BA%8F%E8%AE%BE%E8%AE%A1/24792?fromtitle=%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1%E7%BC%96%E7%A8%8B&fromid=254878
所谓“对象”在显式支持面向对象的语言中,一般是指类在内存中装载的实例,具有相关的成员变量和成员函数(也称为:方法)。 面向对象的程序设计完全不同于传统的面向过程程序设计,它大大地降低了软件开发的难度,使编程就像搭积木一样简单,是当今电脑编程的一股势不可挡的潮流。
OOP:重用性、灵活性和扩展性。 为了实现整体运算,每个对象都能够接收信息、处理数据和向其它对象发送信息。
OOP 主要有以下的概念和组件:
-
组件: 数据和功能一起在运行着的计算机程序中形成的单元,组件在 OOP 计算机程序中是模块和结构化的基础。
-
抽象性: 程序有能力忽略正在处理中信息的某些方面,即对信息主要方面关注的能力。
-
封装: 也叫做信息封装:确保组件不会以不可预期的方式改变其它组件的内部状态;只有在那些提供了内部状态改变方法的组件中,才可以访问其内部状态。 每类组件都提供了一个与其它组件联系的接口,并规定了其它组件进行调用的方法。
-
多态性 - 组件的引用和类集会涉及到其它许多不同类型的组件,而且引用组件所产生的结果依据实际调用的类型。
-
继承性 - 允许在现存的组件基础上创建子类组件,这统一并增强了多态性和封装性。典型地来说就是用类来对组件进行分组,而且还可以定义新类为现存的类的扩展,这样就可以将类组织成树形或网状结构,这体现了动作的通用性。
由于抽象性、封装性、重用性以及便于使用等方面的原因,以组件为基础的编程在脚本语言中已经变得特别流行。 Python 和 Ruby 是最近才出现的语言,在开发时完全采用了 OOP 的**,而流行的 Perl 脚本语言从版本5开始也慢慢地加入了新的面向对象的功能组件。 用组件代替“现实”上的实体成为 JavaScript(ECMAScript) 得以流行的原因,有论证表明对组件进行适当的组合就可以在英特网上代替 HTML 和 XML 的文档对象模型(DOM)。
面向对象编程技术的关键性观念是它将数据及对数据的操作行为放在一起,作为一个相互依存、不可分割的整体——对象。 对于相同类型的对象进行分类、抽象后,得出共同的特征而形成了类。 面向对象编程就是定义这些类。 类是描述相同类型的对象集合。 类定义好之后将作为数据类型用于创建类的对象。 程序的执行表现为一组对象之间的交互通信。 对象之间通过公共接口进行通信,从而完成系统功能。类 中声明的public成员组成了对象的对外公共接口。 简单来说就是以功能为解决问题的中心。