编程范式--对象范式,这不是原来的配方了

编程范式|对象范式,这不是原来的配方了

编程范式你们都应该不陌生,随口均可以说出来几个,好比 : 过程式,函数式,面向对象......程序员

前言

在正式开始正文以前,我想你思考几个问题:编程

1.什么是面向对象编程?编程语言

2.面向对象的特性是什么?函数

3.面向对象继承真的好吗?设计

4.你还记得面向对象中的组合吗?对象

好了,看完这四个问题,开始正文的内容吧。继承

正文

面向对象,即对象范式,诞生于20世纪80年代,属于第二次软件危机的产物,解决告终构化编程的危机。面向对象编程

可是真正的发展,是很曲折的,毕竟编程范式,必定程度上解决了当前的环境的困惑,影响了下一代环境。程序设计

诞生

1967 年的** Simula-67 语言**,属于第一个面向对象的语言,使用的是直接调用目标对象的方法,也就是咱们所称的组合方法。软件

受到 Simula-67 语言的启发, Smalltalk-71 编程语言诞生,Smalltalk 不一样于 Simula ,使用发消息实现对象方法的调用。

在一开始的对象范式中,对象范式思想 : 程序由对象组成,对象之间互相发送消息,协做完成任务。
注意 : 并不包括如今的 继承

演变

面向对象编程范式的流行,更多的缘由是解决了当时的困境,进行了新的演化。能够将其称为软件方法

C++ 编程语言的诞生,带来了对象范式的演化。

因为在本来的对象范式思想中,在对象之间互相发消息,须要知道目标对象有哪些方法。因此,此时就须要在对象范式中,引入定义对象自己有哪些方法的“类”和“继承”。此时的对象,也就是类造出来的,并不重要了。(七夕,程序员new对象,来源于此~)

通过演变,此时的对象范式,核心就变成 : 封装、继承、多态。
而本来的 面向对象 OOP(Object Oriented Programming) 也 演变为了 面向类程序设计 COP(Class Oriented Programming)

注意 : 此时,你是否是以为本身一直写的类,而且一直叫的面向对象,是否是能够改名为面向类了呢?

变化与不变

当对象范式变为 COP 以后,已经与初期的面向对象不一致了。

或者说,使用 COP这个概念,是‘错’的。

这里的错,来源于继承与组合

1994 年 Robert C. Martin 在《** Object-Oriented C++ Design Using Booch Method** 》中,曾建议面向对象程序设计从对象活动图入手,而不是从类图入手。(对象活动图 : 组合,类图 : COP)

1995 年出版的经典做品《 Design Patterns 》中,建议优先考虑组合而不是继承。

2000 年后,工程界明确的提出:“组合比继承重要,并且更灵活”。

好了,看到这里,我不知道你们,在本身写程序的时候,使用的是组合多呢? 仍是继承多?

结束语

综上,我介绍了OOP的诞生,一级演化为COP,而且借用例证,代表对象范式的主张。

此刻,不知道你是否对于前言的四个问题有了本身的答案。

其实,面向对象的初衷 : 复合对象的惟一方法是组合。(并非继承)

相关文章
相关标签/搜索