Colección de citas famosas - Slogan de motivación - ¿Cuál es la diferencia entre programación orientada a objetos y programación orientada a procedimientos en C++?

¿Cuál es la diferencia entre programación orientada a objetos y programación orientada a procedimientos en C++?

Categoría: Computadora/Red >> Programación >> Otros Lenguajes de Programación

Análisis:

Orientado a procesos consiste en analizar los pasos necesarios para resolver el problema, y ​​luego Use funciones para implementar estos pasos paso a paso, y simplemente llámelos uno por uno cuando los use.

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.

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 el 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 funcional garantiza 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 Go. Si está diseñando para el proceso, las reglas del backgammon están distribuidas en cada rincón de su 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.