Aquí hay un desglose:
Software tradicional (procedimiento/estructurado):
* Estructuras de control explícitas: Los componentes de control a menudo son muy explícitos en la programación de procedimientos. Cosas como las declaraciones `if-else`,` for` y `while` loops, declaraciones` goto` (aunque desanimadas), y las llamadas de función dictan directamente el flujo de ejecución. El programador controla directamente la secuencia de operaciones.
* Variables globales y datos compartidos: El control a menudo se ejerce manipulando variables globales o estructuras de datos compartidas. Una parte del programa podría modificar una variable global, desencadenando un cambio en el comportamiento de otra parte. Esto puede conducir a la complejidad y la dificultad para manejar el flujo de control.
* Subrutinas/Funciones: Las funciones actúan como componentes de control encapsulando una tarea específica y controlando la ejecución dentro de esa tarea. Sin embargo, el flujo general sigue dictado en gran medida por la estructura del programa principal.
Software orientado a objetos:
* Control implícito a través de interacciones de objetos: El flujo de control en el software orientado a objetos a menudo es menos explícito y es más implícito definido a través de las interacciones entre objetos. Los objetos se envían mensajes entre sí, activando métodos (funciones dentro de los objetos). La secuencia de estas interacciones determina el flujo general del programa.
* Programación impulsada por eventos: Muchos sistemas orientados a objetos utilizan arquitecturas basadas en eventos. Eventos (como clics de usuario, mensajes de red, vencimientos del temporizador) activan acciones en objetos. El flujo de control es impulsado por estos eventos externos en lugar de una secuencia lineal dictada por el programador.
* Patrones de diseño: Los patrones de diseño orientados a objetos, como el estado, la estrategia y los patrones de comando, proporcionan formas estructuradas de administrar y controlar el flujo de ejecución dentro de un sistema. Estos actúan como mecanismos de control de nivel superior.
* Concurrencia y múltiples lectura: Los sistemas orientados a objetos a menudo aprovechan hilos o procesos, que requieren mecanismos (como mutexes, semáforos) para controlar el acceso concurrente a los recursos compartidos y administrar la sincronización, que son componentes de control cruciales.
La diferencia clave:
La diferencia no es la *ausencia *de los componentes de control, sino más bien el *nivel de abstracción *y cómo se distribuye *el control *. En la programación procesal, el control a menudo es centralizado y explícito. En la programación orientada a objetos, el control está más descentralizado e implícito, distribuido entre los objetos que interactúan. Sin embargo, la necesidad de mecanismos para administrar el orden de operaciones e interacciones sigue siendo fundamental.
En resumen, ambos paradigmas requieren mecanismos para controlar el flujo de ejecución. La programación orientada a objetos simplemente cambia el foco de estructuras de control centralizadas explícitas a control implícito y distribuido a través de interacciones de objetos y manejo de eventos. Sin embargo, la necesidad subyacente para administrar el flujo del programa sigue siendo constante.