以C语言和C++为例。

C语言是面向过程的,封装单元是函数。函数里面按照逻辑流程一步一步实现就行了,这符合我们现实生活中解决问题时的思考过程。

C++是面向对象的,封装单元是类。首先,面向对象是为了提高开发效率而设计的。使用C语言开发大项目编码量很大,开发难度很大。一方面是因为大项目业务繁琐,另一方面是因为C语言只能实现函数层面的复用,导致代码复用率不高。而C++在函数的基础上,提供了更高等级的封装——类,类的三个特性,继承、封装、多态,提高了代码复用率,减少代码量,同时又能减少代码耦合,能较好的胜任大型项目的开发。

需要明确的一点是,面向过程和面向对象之间的关系,绝不是互相排斥的两种编程方法。相反,面向对象是对面向过程的一次更高等级的封装。这也就是为什么C++是完全兼容C语言的,这一事实也从侧面说明了,面向对象和面向过程不是二者选其一的编程方式,而是可以同时存在的编程方式。

从类的编写方式看,它和客观世界的事物抽象模型比较契合。它将事物的属性抽象成类的属性,将事物的行为抽象成类的方法。这体现了类的封装特性:将某类事物的相关信息封装在一起,更好管理,正因为高内聚,所以类之间只需要少量接口就可以相互配合工作,也就是实现了低耦合。

很多面向对象的教程的内容只是教读者,类是如何描述事物的,读者虽然感觉用类描述事物的确很合适,但是却不知道既然可以面向过程解决问题,为什么还要面向对象?这是因为,当我们谈及面向对象编程的时候,我们实际上谈的是一种适合大型项目开发的代码复用技术和高内聚低耦合技术。


面向过程和面向对象的联系和区别相关推荐

  1. 架构师之路(1)---面向过程和面向对象

    1.引言    机算机科学是一门应用科学,它的知识体系是典型的倒三角结构,所用的基础知识并不多,只是随着应用领域和方向的不同,产生了很多的分支,所以说编程并不是一件很困难的事情,一个高中生经过特定的训 ...

  2. 架构师之路---面向过程和面向对象 王泽宾

    1.引言    机算机科学是一门应用科学,它的知识体系是典型的倒三角结构,所用的基础知识并不多,只是随着应用领域和方向的不同,产生了很多的分支,所以说编程并不是一件很困难的事情,一个高中生经过特定的训 ...

  3. 面向过程与面向对象编程的区别和优缺点

    ■面向过程与面向对象编程的区别 转载至:https://www.cnblogs.com/strivers/p/6681876.html 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步 ...

  4. JAVA入门级教学之(面向过程和面向对象的区别)

    目录 JAVA入门级教学之(面向过程和面向对象的区别) 面向过程和面向对象的区别: -面向过程: -面向对象: -发展历程: -生命周期中包括: -什么是类: -什么是对象: -软件开发的过程: -重 ...

  5. 面向过程与面向对象有什么区别

      目录   一.什么是面向过程 1.面向过程的缺点 2.面向过程的优点 补:简单介绍代码与代码之间的耦合度 二.什么是面向对象 三.面向过程与面向对象有什么区别 一.什么是面向过程 面向过程主要的特 ...

  6. 你真的知道面向过程和面向对象的区别吗?

    在面试时经常会被问到面向过程和面向对象有什么区别,虽然都是编程的一种思想,但是他们的侧重点不同,我们从以下几个方面进行简单总结. 1. 面向过程 面向过程是一种以事件为中心的编程思想,编程的时候把解决 ...

  7. 什么是面向对象、面向过程与面向对象的区别

    要讲区别,首先我们得先来弄弄清楚什么是面向过程,什么是面向对象. 面向过程是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了. 比如把大象放进冰箱,第一 ...

  8. 简单抽象的去理解 面向过程和面向对象 的区别

    面向过程和面向对象的区别 兴趣所致录 面向过程 场景:你是一条不折不扣的单身狗,然后还想吃苹果[手动滑稽狗头] 首先吃苹果得有苹果,所以得去买苹果,然后洗苹果, 如果焦作一下不想吃皮,你得先削皮, 要 ...

  9. 面向过程和面向对象的区别及优缺点

    面向过程和面向对象的区别及优缺点 面向过程: 面向过程是一种自顶向下的编程. 面向过程优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机.嵌入式开发. Linux/U ...

最新文章

  1. 如何使git接受自签名证书?
  2. 如何在Java中创建一个新的List
  3. 商丘网络推广中网站内部优化需要注意的要点有哪些?
  4. 谦卑的心 2008-9-27 10:21:00 (21ic)
  5. 009_Vue循环结构
  6. PW Live直播 | 清华大学NLP组秦禹嘉:基于自然语言解释的数据增强
  7. eclipse maven项目 class类部署不到tomcat下_Springboot介绍以及用Eclipse搭建一个简单的Springboot项目教程
  8. PAT (Basic Level) 1004. 成绩排名 (20)
  9. Python笔记(二)——python调用C/C++模块
  10. RK3288 查看时钟树
  11. 大一python简答题_大学moocPython编程基础答案大全
  12. 通过adb命令安装卸载apk
  13. PyTorch Geometric (PyG) 入门教程
  14. 普通人的爱国在日常生活中如何提现
  15. 蓝桥杯 分解质因数 C语言
  16. 2018 年度读书总结
  17. Hander消息处理机制的步骤
  18. 九步教你笔记本开箱验机 联想拯救者安全下车
  19. 如何在官网下载各个版本的tomcat
  20. 【LeetCode】动态规划入门(专项打卡21天合集)

热门文章

  1. Linux 挂载命令 --mount
  2. DropBox 超实用的免费文件网络同步、备份、分享工具
  3. 目录服务用户OSX: ARD的基于目录服务用户权限
  4. WebSite和Web Application\网站与Web项目的区别
  5. [轉]Flash/Flex监听浏览器的关闭事件
  6. 动态规划——变形的杨辉三角形
  7. [hackinglab][CTF][解密关][2020] hackinglab 解密关 writeup
  8. 学PHP的嫌弃什么歌,抖音再见了互相嫌弃的老同学是什么歌
  9. 和县机电工程学校工业机器人_【校企合作】学校举行工业机器人教学系统捐赠仪式...
  10. 软件测试之逻辑覆盖测试理论总结(白话文)