Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oop 命令式编程和面向对象编程之间有什么区别?_Oop_Imperative - Fatal编程技术网

Oop 命令式编程和面向对象编程之间有什么区别?

Oop 命令式编程和面向对象编程之间有什么区别?,oop,imperative,Oop,Imperative,当我看很多网站的时候。一些人交替使用面向对象编程和命令式编程,而另一些人则说它们是不同的 我想知道面向对象和命令式之间的区别,以及这些范例的区别。或者,如果他们之间没有任何区别。这是一个困难的问题,因为所涉及的术语对不同的人意味着不同的东西 粗略地说(尽管有些人会说“严格地说”),祈使句与声明式相反 严格的OO支持者可能会说OO是声明性的。请参阅大卫·韦斯特(David West)的同名书和本博客中OO的“对象思维”风格: OO作为一种常用的方式,通常会“转移”(同样,其他人会强烈反对)到一种非

当我看很多网站的时候。一些人交替使用面向对象编程和命令式编程,而另一些人则说它们是不同的


我想知道面向对象和命令式之间的区别,以及这些范例的区别。或者,如果他们之间没有任何区别。

这是一个困难的问题,因为所涉及的术语对不同的人意味着不同的东西

粗略地说(尽管有些人会说“严格地说”),祈使句与声明式相反

严格的OO支持者可能会说OO是声明性的。请参阅大卫·韦斯特(David West)的同名书和本博客中OO的“对象思维”风格:

OO作为一种常用的方式,通常会“转移”(同样,其他人会强烈反对)到一种非常程序化和命令式的风格,在这种风格中,你开始告诉计算机该做什么,而不是用你的对象描述和建模现实世界(在某种意义上)

(一段可能有用的视频。它对比了过程编程和OO,就我们的目的而言,“过程”大致是“命令式”的同义词。)


我知道这不是一个很好的答案,但也许它很有用。

从上而下,命令式语言有两种主要的子类型

  • 过程语言(如BASIC、FORTRAN)-其中代码和数据被视为完全独立的,并且有一个简单的代码在数据范式上操作

  • 面向对象(OO)语言——将数据和代码(以方法的形式)捆绑在一起形成对象。在OO语言中,元数据(如类信息)或多或少地施加了额外的结构


不要将编程语言与编程范例混淆。大多数现代语言都支持多种范式。那么OOP在隐喻上是否像一个介于过程范式和命令范式之间的人?@attachPost,请编辑您的问题,或者问一个新问题,而不是在评论中开始讨论。不太清楚您的意思@attachPost,但我想说,OOP可以被认为是命令式的,也可以被认为是声明式的,这取决于您如何定义OOP。为了充分说明这一点,我将直接转向“好的”OOP(正确理解的OOP)基本上是声明性的观点。命令性或程序性越强,你就越会错过要点。理想情况下,这两种方法不应该混合太多(如果有的话)。这种观点不会受到很多人的欢迎。但你至少应该意识到两个“极端”:啊,对不起@jaco0646。有什么评论吗?(这是一个真实的问题,以防遇到刺耳的问题!)干杯。@JohnPage我知道这不是一个很好的答案,但可能有用,我认为这是一个很好的答案。这是比较OOP和FPP的人常见的困惑来源。这个问题更适合程序员。stackexchange。com@RobK不,真的不会。有关于这个主题的书和关于这个术语的圣战。除了一篇论文之外,它在任何地方都是不可回答的。@enderland“不那么不适合”那么?但我们同意,这显然不适合这里。@RobK:对于问题迁移来说,这还不够好。