首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >过程型、面向对象型和事件驱动型之间的关系是什么?

过程型、面向对象型和事件驱动型之间的关系是什么?
EN

Stack Overflow用户
提问于 2022-11-14 03:22:03
回答 1查看 60关注 0票数 1

我认为过程型、面向对象型和事件驱动型是软件开发.And中的主要范式,如何在它们之间建立关系?

过程型、面向对象型和事件驱动型之间的关系是什么?

很难澄清它们之间的关系。

EN

回答 1

Stack Overflow用户

发布于 2022-11-14 05:18:08

过程驱动和事件驱动描述了应用程序或决策逻辑的一般工作流,其中面向对象更多地描述了决策逻辑的结构。

  • Procedural描述了一个顺序的逻辑工作流,通常有许多步骤必须在一个序列中执行,每个步骤之间可能有条件依赖于先前步骤的结果,但是逻辑序列是预先确定的,并且硬编码到应用程序中。

在过程编程中,系统的状态通常在各步骤之间直接传递,因此它不需要存在于执行逻辑之外的上下文中,并且不需要正式地管理该状态的形状或结构。

代码语言:javascript
复制
- Prodedural logic complements _Functional_ programming architectures but can be used in many contexts.
- Procedural logic suits scenarios where interaction with external systems is instantaneous or not required or if it is OK for your logic to halt processing until the external system responds.
- Procedural logic may raise events for external _event driven_ logic to respond to, that doesn't make it _event driven_.

从测试的角度来看,正确地测试纯过程编程应用程序需要完成整个应用程序。您还可以通过直接评估每个步骤的状态或结果来测试流程中的每个步骤,但是在纯PP中,状态并不是在一个我们可以轻松访问逻辑之外的上下文中维护的,所以测试的唯一方法是运行每个流程以完成检查结果。

代码语言:javascript
复制
- This means that the external _state_ is generally less of a concern for testing PP logic.
- End-To-End testing is greatly simplified because there are less permutations of outcomes to consider.

  • Event驱动的描述了一个工作流,其中系统会引发事件消息,或者响应从其他系统引发的事件。应用程序逻辑是直接响应这些事件执行的,与过程编程相比,事件的时间被认为是不可控制的,因此许多事件可能需要并发服务,这是直接约定的过程编程,其中每个步骤都需要运行到完成,以便为链中的下一个步骤做好准备。

这意味着在事件驱动逻辑中,在执行决策逻辑时检查系统的状态更为重要。可以想象,这些步骤可以按任何顺序执行,因此在任何时候,状态都需要在大多数逻辑之外的上下文中进行管理,这就是OO概念开始变得非常有用的地方。

代码语言:javascript
复制
- Most Graphical User Interfaces will implement forms of _Event Driven_ programming. Think of a simple _button click_ event, the user controls the timing of the execution, or if the button is clicked at all.

从测试的角度来看,在测试过程之前,系统的当前状态对于评估或控制是非常重要的。根据测试过程中可能引起复杂问题的事件类型,您可能需要模拟、模拟或拦截其他系统或事件。

面向

  • Object的编程描述了一种使用描述一组元数据以及行为和与其他对象的交互的类来建模系统状态的样式。我们可以创建类的实例来创建对象。通过这种方式,您可以将OO看作是首先定义一系列模板,然后从这些模板创建对象。

因此,OO最终产生了许多额外的锅炉板逻辑,在真正进入行为或反动逻辑之前,需要在状态和环境的设计上做更多的努力。

OO对与事件驱动的编程非常好,对象使表示环境更容易,并对环境进行了细微的更改。

从测试的角度来看,OO使复制状态或环境成为可能,而无需访问实际的操作环境。因为逻辑是在每个对象中定义的一组更细粒度的行为集,所以我们可以很容易地与系统的其他部分隔离来测试这些行为。

然而,同样的恩惠也可能成为一种负担,但需要更加小心地确保状态的定义足够准确,以获得有意义的测试结果。为了完成端到端的测试,可以有大量的移动部件,因为与PP相比,事件的时间限制更少(如果有的话),就有更多的潜在结果需要定义和自动化。因此,在面向对象程序设计中,更重要的是在粒度级进行适当的测试,以验证离散逻辑块以获得可信度,然后在更大的级联规则集中进行测试。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74426618

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档