前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >大白话给你讲清楚面向对象编程和面向对象编程语言的区别与联系

大白话给你讲清楚面向对象编程和面向对象编程语言的区别与联系

作者头像
陶朱公Boy
发布2022-10-28 13:51:37
7560
发布2022-10-28 13:51:37
举报
文章被收录于专栏:用户10106051的专栏

今天跟大家分享一个很容易搞混的知识点即面向对象编程和面向对象编程语言。

你觉得它们的联系与区别是什么?说的是一回事吗?

答案还真的不是一回事。我们好好分析一下

1

面向对象编程语言(OOPL)

是什么

是一门语言!

如JAVA、C++、C#等语言都是一门面向对象编程的语言。

背景

面向对象语言借鉴了20世纪50年代的人工智能语言LISP,引入了动态绑定的概念和交互式开发环境的思想;始于20世纪60 年代的离散事件模拟语言SIMULA67,引入了类的要领和继承,成形于20世纪70年代的Smalltalk。

面向对象语言的发展有两个方向:一种是纯面向对象语言,如Smalltalk、EIFFEL等;另一种是混合型面向对象语言,即在过程式语言及其它语言中加入类、继承等成分,如C++、Objective-C、JAVA等。

设计意图

为了能更加直接地描述客观世界中存在的事件(及对象)以及它们之间的关系。通过抽象把同一类事物共同属性、行为组合在一起最终以类的形式展现。

2

面向对象编程(OOP)

是什么

是一个编程范式、是一种编程思想。

作用

推动了高级语言的快速发展和工业化进程。它的封装、继承、多态特效使软件大规模化成为可能,有效降低软件开发成本。它实践了软件工程的三个目标:可维护性、可重用性、可扩展性。

谈面向对象编程我们势必会拿面向过程编程进行对比

3

区别与联系

我们拿开门场景举例:

“open(Door door)” 在面向过程编程中,door是被当作入参传人方法体内的,方法内才详细定义开门的各个步骤

比如

代码语言:javascript
复制
public void open(Door door){
//步骤一
//步骤二
}

而在面向对象设计中,先抽象出门的具体属性与动作。属性包括尺寸、颜色等。动作包括开门方式(往里开或往外开)和防盗功能等。

所以区别是:面向过程结构比较松散,强调流程化的解决问题,而面向对象的思维更加内聚、强调高内聚、低耦合。先抽象模型,定义共性行为,解决实际问题。

草图大致是这样的:

代码语言:javascript
复制
public class Door{
//属性 一:尺寸
//属性二:颜色
  public void open(){
   //什么样情况往里开
   //什么样场景往外开
  }
}
代码语言:javascript
复制
public class Demo{
   public void main(String[] arts){
      Door door=new Door();
      door.open();//往里开还是外开已经在door对象定义了;这就是内聚的体现
  }
}

4

写到最后

最后我们抛一个问题,虽然比如像JAVA是一门面向对象编程语言,但你自查一下你平时写的代码是采用面向对象编程还是面向过程编程呢?

延伸一下

业界有事务型脚本模式和领域驱动模式跟本文讲的思想有一定的异曲同工之妙。

比如事务型脚本模式是不是更像面向过程编程这种范式

领域驱动模型更像面向对象编程范式

有兴趣大家可以去了解一下,有时间我也会单独写一篇讲解一下。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-07-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 陶朱公Boy 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档