ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2019-08-13 22:03:09  阅读:283  来源: 互联网

标签:COP 范式 组合 对象 继承 编程 面向对象 配方


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

编程范式大家都应该不陌生,随口都可以说出来几个,比如 : 过程式,函数式,面向对象......

前言

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

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,并且借用例证,表明对象范式的主张。

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

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

标签:COP,范式,组合,对象,继承,编程,面向对象,配方
来源: https://www.cnblogs.com/Kate-liu/p/11348855.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有