zoukankan      html  css  js  c++  java
  • 面向对象和面向过程

    起因

    函数学的一直都不怎么好,对这两个面向也总是不太理解,今天就好好的去深入了解一下到底什么是面向对象什么是面向过程

    解析

    定义:

    面向过程三要素:封装、继承、类。

    面向过程就是:分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。
    面向对象是把:构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。

    通俗解释

    定义看的总是让人摸不着头脑
    面向对象侧重于对象
    面向过程侧重于过程
    但什么是对象什么是过程呢?

    我从知乎上看到了几个生动形象的例子,我觉得可以更加生动的去了解这两者的区别~

    • 面向过程是编年体;面向对象是纪传体

    编年体:按照年份一步一步来
    纪传体:按照诸侯英雄好汉来写
    我也是这么理解的
    面向对象:重在解决问题,达到目的
    面向过程:重在研究解决问题的过程
    侧重点不一样

    • 面向对象: 是给你给你一堆零件让你组装一个东西
      面向过程: 是给你一堆零件+锤子扳手 让你自己造一个东西

    对比

    面向过程 面向对象
    优点 流程化使得编程任务明确,在开发之前基本考虑了实现方式和最终结果,具体步骤清楚,便于节点分析。
    效率高,面向过程强调代码的短小精悍,善于结合数据结构来开发高效率的程序。
    结构清晰,程序是模块化和结构化,更加符合人类的思维方式;
    易扩展,代码重用率高,可继承,可覆盖,可以设计出低耦合的系统;
    易维护,系统低耦合的特点有利于减少程序的后期维护工作量。
    缺点 需要深入的思考,耗费精力,代码重用性低,扩展能力差,后期维护难度比较大。 开销大,当要修改对象内部时,对象的属性不允许外部直接存取,所以要增加许多没有其他意义、只负责读或写的行为。
    这会为编程工作增加负担,增加运行开销,并且使程序显得臃肿。
    性能低,由于面向更高的逻辑抽象层,使得面向对象在实现的时候,不得不做出性能上面的牺牲,计算时间和空间存储大小都开销很大。

    拓展

    有时候不妨这么思考一下,我们学习的编程语言是怎么样出现的?编程语存在着哪些意义?
    透过现象去看本质,再深入一点,有一种刨根问题的精神,这样我们才能走的更远!

    1. 是先有了面向对象还是先有了面向过程?
      面向过程
    2. 为什么有了面向对象之后还需要面向对象呢?
    3. 继承
    4. 父类子类
    5. 强类弱类 and 静态类动态类

    参考: 编程的发展史

  • 相关阅读:
    win7同时安装python2和python3
    Centos6.8安装python3.6
    Typescript的接口
    ES5中的类相关/Typescript的类相关
    Typescript介绍
    Global Interpreter Lock 全局解释器锁
    Go语言设计模式(五)
    Go语言设计模式(四)
    Go语言反射
    Go语言程序设计(三)
  • 原文地址:https://www.cnblogs.com/unixcs/p/12175162.html
Copyright © 2011-2022 走看看