¿Cuáles son las similitudes y diferencias entre la orientación a procesos y la orientación a objetos?
Orientado a procesos es analizar los pasos necesarios para resolver el problema y luego usar funciones para implementar estos pasos paso a paso. Cuando los use, simplemente llámelos uno por uno. Primero el algoritmo, segundo el método.
Orientado a objetos consiste en descomponer la transacción que constituye el problema en varios objetos. El propósito de establecer el objeto no es completar un paso, sino describir el comportamiento de algo en todo el paso de resolución del problema. problema. Primero el método, después el algoritmo.
Por ejemplo, en backgammon, la idea de diseño orientado a procesos es analizar primero los pasos del problema: 1. Iniciar el juego, 2. La piedra negra se mueve primero, 3. Hacer el dibujo, 4. Juzga si ganas o pierdes, 5. Es el turno de las blancas, 6, haz un dibujo, 7. Determina si ganas o pierdes, 8. Regresa al paso 2, 9. Muestra el resultado final. Implemente cada uno de los pasos anteriores con funciones separadas y el problema se resolverá.
El diseño orientado a objetos resuelve los problemas desde otra perspectiva. Todo el backgammon se puede dividir en 1. los lados blanco y negro, cuyo comportamiento es exactamente el mismo; 2. el sistema de tablero de ajedrez, que es responsable de dibujar la imagen; 3. el sistema de reglas, que es responsable de determinar las faltas y ganar; y perder, etc. El primer tipo de objeto (objeto jugador) es responsable de aceptar la entrada del usuario e informar al segundo tipo de objeto (objeto tablero de ajedrez) sobre los cambios en el diseño de las piezas de ajedrez. Después de que el objeto tablero recibe los i cambios de las piezas de ajedrez, es. responsable de mostrar este cambio en la pantalla y al mismo tiempo usar El tercer tipo de objeto (sistema de reglas) se utiliza para juzgar el juego de ajedrez.
Se puede ver claramente que la orientación a objetos divide los problemas por funciones, no por pasos. También se trata de dibujar un juego de ajedrez. Este comportamiento se dispersa en múltiples pasos en el diseño orientado a procesos, y es probable que aparezcan diferentes versiones de dibujo, porque normalmente los diseñadores harán varias simplificaciones teniendo en cuenta la situación real. En el diseño orientado a objetos, el dibujo sólo puede aparecer en el objeto del tablero de ajedrez, asegurando así la unidad del dibujo.
La unificación de funciones asegura la escalabilidad del diseño orientado a objetos. Por ejemplo, si quiero agregar la función de lamentar el ajedrez, si quiero cambiar el diseño orientado al proceso, entonces se debe cambiar la serie de pasos desde la entrada hasta el juicio y la visualización, e incluso se debe ajustar el orden entre los pasos. una gran escala. Si está orientado a objetos, solo necesita cambiar el objeto del tablero de ajedrez. El sistema de tablero de ajedrez guarda los registros de ajedrez de los lados en blanco y negro y simplemente retrocede, no es necesario tener en cuenta la visualización y el juicio de las reglas. tiempo, todo el orden de llamada de las funciones del objeto permanece sin cambios. Los cambios son sólo parciales.
Para otro ejemplo, quiero cambiar este juego de backgammon a un juego de Go. Si estás diseñando para el proceso, entonces las reglas del backgammon están distribuidas en cada rincón de tu programa. , es mejor reescribirlo. Pero si tuviste un diseño orientado a objetos desde el principio, entonces solo necesitas cambiar los objetos de las reglas, ¿no es la diferencia entre backgammon y Go las reglas? (Por supuesto, el tamaño del tablero de ajedrez parece ser diferente, pero ¿crees que esto es un problema? Simplemente haz algunos pequeños cambios en el objeto del tablero de ajedrez). Los pasos generales del juego de ajedrez no han cambiado en absoluto con respecto a un juego orientado a objetos. perspectiva. .
Por supuesto, para lograr solo cambios parciales, el diseñador debe tener suficiente experiencia. El uso de objetos no garantiza que su programa esté orientado a objetos. Es probable que los programadores principiantes o muy pobres utilicen el nombre falso de. orientado a objetos, sin embargo, debido al hecho de que está orientado a procesos, es difícil que el llamado programa orientado a objetos diseñado de esta manera tenga buena portabilidad y escalabilidad.
(2), Orientado a procesos es un método de programación directa, que considera problemas de acuerdo con las ideas de los lenguajes de programación. Especialmente los lenguajes de procedimiento como el lenguaje C, que implementa una función ejecutando secuencialmente un conjunto de declaraciones, y el proceso de ejecución de estas declaraciones es el programa completo. Diferentes idiomas tienen diferentes procesos para resolver el mismo problema.
La orientación a objetos es un método de programación más abstracto. Se centra en resolver el problema en sí más que en el lenguaje. Su objetivo es hacer que los módulos sean más abstractos y más reutilizables. El propósito de la orientación a objetos es ser reutilizable.
La diferencia entre la orientación a procesos y la orientación a objetos no es tan grande como la gente piensa. La mayoría de las ideas de la orientación a objetos también pueden reflejarse en la orientación a procesos, pero el mayor problema (quizás el único). El defecto inherente) de la orientación a procesos) es que a medida que el sistema se expande, la orientación a procesos no podrá hacer frente, lo que eventualmente conducirá al colapso del sistema.
Además, C, C++ y Java son todos lenguajes y no hay diferencia entre ellos si están orientados a objetos o no.
También puedes escribir programas orientados a objetos en C, basta con mirar el código del kernel de Linux. C ++ y Java también pueden escribir programas orientados a procesos. La razón por la que se les llama lenguajes de programación orientados a objetos es que las características del lenguaje que proporcionan facilitan la implementación de métodos de programación orientados a objetos. hacer programación orientada a objetos.
Además, no significa que la orientación a objetos sea necesariamente mejor que la orientada a procesos. En muchos campos, es imposible implementar métodos orientados a objetos. Por ejemplo, campos como la programación de hardware y la programación integrada que requieren un alto tiempo real y eficiencia no pueden utilizar métodos orientados a objetos. El área principal de la orientación a objetos todavía se utiliza en sistemas de software grandes y complejos.
(3) La orientación a objetos encapsula datos y métodos de procesamiento de datos;
En la orientación a procesos, los datos y los métodos de procesamiento de datos están separados.
(4) Orientado a procesos es programar cada proceso, mientras que orientado a objetos es aislar cada objeto y luego expresar la relación entre ellos (funciones miembro).
(5) La clave para la orientación de procesos son las funciones, procedimientos, datos y algoritmos. Representado por c.
La clave de la orientación a objetos es la herencia, la sobrecarga y el polimorfismo. Representado por Java, C++ y C#. (6) En pocas palabras, los objetos son clases y los procesos son secuencias, selecciones, bucles, matrices y funciones. La orientación a objetos es difícil de aprender. Después de aprender a orientarse a procesos, es decir, sentar las bases para los objetos. Una clase consiste en encapsular la secuencia, selección, bucle y matriz de todos los procesos de una clase en forma de funciones. Un programa orientado a objetos está N compuesto de categorías