¿Cuáles son las ventajas y desventajas de la programación procedimental y la programación orientada a objetos?
Programación orientada a objetos
Autor: Anónimo Fuente del artículo: Desconocido Número de visitas: 11677 Hora de actualización: 2005-10-14
Autor: Ramchandra Garge
p>
Crisis del software
La tecnología del software siempre está desarrollándose y cambiando, y se producen nuevas herramientas y nuevas tecnologías, una tras otra. Esto requiere que la industria del software y los ingenieros de software busquen constantemente nuevas formas de diseño y desarrollo de software. Este requisito se vuelve más urgente debido a la creciente complejidad de los sistemas de software y la intensificación de la competencia dentro de la industria del software. Para superar la crisis de software provocada por este requisito, se deben resolver los siguientes problemas:
1. ¿Cómo representar la entidad real del problema en el diseño del sistema?
2. ¿Cómo diseñar el sistema con una interfaz abierta?
3. ¿Cómo garantizar la reutilización y extensibilidad del módulo?
4. ¿Cómo desarrollar un módulo que pueda tolerar posibles cambios futuros?
5. ¿Cómo mejorar la productividad del software y reducir la sobrecarga del mismo?
6. ¿Cómo gestionar el horario?
7. ¿Cómo mejorar la calidad del software?
8. ¿Cómo industrializar el proceso de desarrollo de software?
Los problemas surgen cuando un producto de software no está terminado, no se utiliza o se lanza con varios errores. Además, los cambios en las necesidades de los usuarios se han convertido en un tema importante. Múltiples informes sobre la implementación de software revelan la necesidad de realizar una evaluación cuidadosa de la calidad antes de lanzar y utilizar los productos de software. Los factores de calidad que generalmente deben considerarse en la evaluación del estado incluyen:
1. Corrección
2. Mantenibilidad
3.
5. Portabilidad
6. Seguridad (Seguridad)
7. Integridad (Integridad)
8. amabilidad (User amigable)
Evolución del software (Evolución del software)
p>
Ernest Tello, un conocido escritor en el campo de la inteligencia artificial, comparó la evolución del software tecnología para el crecimiento de un árbol. Al igual que los árboles, el software evoluciona en distintas etapas, llamadas capas. Durante los últimos cuarenta años, estas capas se han ido acumulando gradualmente, y cada capa se ha desarrollado a partir de la anterior. La figura 1 muestra este proceso. Pero la metáfora del árbol falla cuando se trata de la cuestión de la vida útil de las capas. En un sistema de software, cada capa funciona continuamente, mientras que en un árbol, sólo la capa superior es útil.
La programación orientada a objetos (OOP) es una nueva forma de completar el trabajo de programación. Desde la invención de la computadora, los métodos de programación han cambiado drásticamente para adaptarse a la creciente complejidad de los programas. Después de la invención del lenguaje ensamblador, los programadores finalmente pudieron representar simbólicamente las instrucciones de la máquina, lo que les permitió escribir programas más largos y complejos. A medida que el tamaño de los programas siguió creciendo, se introdujeron lenguajes de alto nivel, lo que proporcionó a los programadores más herramientas para afrontar la creciente complejidad. El primer lenguaje de uso común fue FORTRAN. Sin embargo, aunque FORTRAN ha dado un primer paso importante, el código escrito en él no es claro ni fácil de entender.
La idea de la programación estructurada nació en 1960. Lenguajes como C y Pascal abogan firmemente por este enfoque de programación. Los lenguajes de programación estructurados facilitan la escritura de programas más complejos. Sin embargo, una vez que un proyecto alcanza cierta escala, incluso con métodos de programación estructurados, la situación se vuelve incontrolable.
En el desarrollo de métodos de programación, cada gran avance permitió a los programadores lidiar con una mayor complejidad. En cada paso del camino, se aplicaron nuevos métodos y se desarrollaron las mejores ideas de métodos anteriores. Hoy en día, la escala de muchos proyectos ha crecido aún más. Para resolver este problema, surgió el método de programación orientada a objetos.
Antes de presentar en detalle la programación orientada a objetos, comprendamos brevemente el método de programación orientada a procesos. En un enfoque de programación orientada a procesos, el problema se ve como una secuencia de tareas a realizar, como lectura, computación e impresión. Se utilizan muchas funciones para realizar estas tareas. El foco de la pregunta está en las funciones. La Figura 2 muestra una estructura típica de un programa orientado a procesos. La técnica de descomposición jerárquica se utiliza para identificar una serie de tareas que deben completarse para resolver un problema específico.
La tarea básica de la programación orientada a procesos es escribir una secuencia de instrucciones para su ejecución por computadora y organizar estas instrucciones de manera funcional. Normalmente utilizamos diagramas de flujo para organizar estas acciones y describir el flujo de control de una acción a otra.
Cuando nos centramos en desarrollar funciones, rara vez prestamos atención a los datos utilizados por múltiples funciones. ¿Qué pasó con estos datos? ¿Qué impacto tienen en ellos las funciones que utilizan estos datos?
En los programas multifunción, muchos datos importantes se colocan en el área de datos globales para que todas las funciones puedan acceder a ellos. Cada función puede tener sus propios datos locales. La Figura 3 muestra la relación entre funciones y datos en un programa orientado a procesos.
Patrón de programación orientada a objetos
El principal punto de partida para inventar métodos de programación orientados a objetos es compensar algunas deficiencias en los métodos de programación orientados a procesos. La programación orientada a objetos trata los datos como elementos básicos en el desarrollo de programas y no les permite fluir libremente en el sistema. Conecta estrechamente los datos y las funciones que operan con estos datos y protege los datos para que no sean modificados accidentalmente por funciones externas. La programación orientada a objetos nos permite dividir un problema en una serie de entidades: estas entidades se denominan objetos (objetos) y luego crean datos y funciones en torno a estas entidades. La estructura organizativa de datos y funciones en la programación orientada a objetos se muestra en la Figura 4.
Los datos de un objeto no pueden acceder a las funciones de otros objetos, pero las funciones de un objeto pueden acceder a las funciones de otros objetos.
Algunas características notables de la programación orientada a objetos incluyen:
·La programación se centra en datos en lugar de procedimientos
·Los programas se dividen en los llamados Objetos;
·La estructura de datos está diseñada para expresar las características del objeto;
·La función, como operación sobre los datos de un objeto, está estrechamente integrada con la estructura de datos; /p >
·Los datos están ocultos y no se puede acceder a ellos mediante funciones externas;
·Los objetos pueden comunicarse entre sí a través de funciones
·Se pueden agregar nuevos datos y funciones; cuando sea necesario Se agrega fácilmente
·Sigue un enfoque de diseño ascendente durante el proceso de programación.
La programación orientada a objetos es un concepto nuevo en los patrones de programación, que puede significar cosas diferentes para diferentes personas. Entonces, antes de continuar, es mejor definir la programación orientada a objetos. Nuestra definición de programación orientada a objetos es "La programación orientada a objetos es un enfoque que proporciona espacios de memoria separados y distintos para datos y funciones que pueden servir como plantillas para crear módulos similares cuando sea necesario. Copiar. Este método de programación se llama programación orientada a objetos
Como se puede ver en la definición anterior, un objeto se considera un intervalo independiente en la memoria de la computadora, y en este intervalo se almacenan datos y un conjunto de operaciones que permiten el acceso a los datos. Debido a que los rangos de memoria son independientes entre sí, los objetos se pueden usar en múltiples programas diferentes sin modificaciones.
¿Qué es la programación orientada a objetos?
La tecnología de programación orientada a objetos (OOP) se basa en las buenas ideas de la programación estructurada y las combina con algunos conceptos nuevos y potentes para brindarle una mejor experiencia de programación. Un enfoque completamente nuevo.
Normalmente, en el estilo de programación orientada a objetos, se divide un problema en subconjuntos relacionados, cada uno de los cuales contiene datos y funciones relacionados. Al mismo tiempo, estos subconjuntos se agrupan en diferentes niveles de alguna manera, y un objeto es una variable de cierto tipo que se ha definido. Cuando defines un objeto, implícitamente creas un nuevo tipo de datos.
Conceptos básicos en programación orientada a objetos
Como término, "orientado a objetos" tiene diferentes interpretaciones entre diferentes personas. Por tanto, es necesario comprender algunos conceptos que se utilizan ampliamente en la programación orientada a objetos. En esta sección discutimos los siguientes contenidos:
1. Objeto (Objeto)
2. Clase (Clase)
3.
4. Herencia
5. Vinculación dinámica
6. Encapsulación de datos
7. Polimorfismo
8
Objeto
En un sistema orientado a objetos, el objeto es la entidad básica en tiempo de ejecución. Puede usarse para representar a una persona o una cuenta bancaria, una tabla de datos o cualquier otra cosa que deba ser procesada por el programa. También se puede utilizar para representar datos definidos por el usuario, como un vector, una hora o una lista. En la programación orientada a objetos, el análisis de problemas generalmente se basa en objetos y las conexiones naturales entre objetos. Como se mencionó anteriormente, los objetos ocupan un cierto espacio en la memoria y tienen una dirección asociada, al igual que los registros en Pascal y las estructuras en C.
Cuando un programa se está ejecutando, los objetos interactúan entre sí enviándose mensajes entre sí. Por ejemplo, el programa contiene un objeto "cliente" y un objeto "cuenta", y el objeto cliente puede enviar un mensaje al objeto cuenta para consultar su cuenta bancaria. Cada objeto contiene datos y código para manipular esos datos. Los objetos aún pueden interactuar sin conocer los detalles de los datos y el código de cada uno. Todo lo que necesita saber es los tipos de mensajes que los objetos pueden aceptar y los tipos de respuestas que devuelven, aunque diferentes personas los implementarán de diferentes maneras.
Clase
Acabamos de mencionar que los objetos contienen datos y código que manipula estos datos. Todos los datos y el código contenidos en un objeto se pueden utilizar para formar un tipo de datos definido por el usuario a través de clases. De hecho, los objetos son variables de tipo clase. Una vez que se define una clase, podemos crear múltiples objetos de esta clase, cada objeto está relacionado con un conjunto de datos y el tipo de este conjunto de datos se define en la clase. Por tanto, una clase es una abstracción de objetos del mismo tipo. Por ejemplo, los mangos, las manzanas y las naranjas son todos objetos de la clase de frutas. Una clase es un tipo de datos definido por el usuario, pero dentro de un lenguaje de programación, se comporta igual que los tipos de datos integrados. Por ejemplo, la sintaxis para crear un objeto de clase es exactamente la misma que la de crear un objeto entero. Si la fruta se define como una clase, entonces la declaración
fruta mango
crea un objeto mango de la clase fruta.
Abstracción y encapsulación de datos
El acto de empaquetar datos y funciones en una unidad separada (llamada clase) se llama encapsulación. La encapsulación de datos es la característica más típica de las clases. El mundo exterior no puede acceder a los datos y solo se puede acceder a ellos mediante funciones encapsuladas en la misma clase. Estas funciones proporcionan la interfaz entre los datos del objeto y los programas. El concepto de evitar que un programa acceda directamente a los datos se denomina "ocultación de datos".
La abstracción se refiere al acto de expresar sólo características centrales sin describir detalles de fondo. Las clases utilizan conceptos abstractos y se definen como un conjunto de propiedades abstractas como tamaño, peso y precio, así como funciones que operan sobre estas propiedades. Una clase encapsula todas las propiedades principales del objeto que se va a crear. Debido a que las clases utilizan el concepto de abstracción de datos, se denominan tipos de datos abstractos (ADT).
Encapsulación
El mecanismo de encapsulación agrupa datos y código para evitar interferencias externas e incertidumbre. También permite la creación de objetos. En pocas palabras, un objeto es una entidad lógica que encapsula datos y código que opera con estos datos.
Dentro de un objeto, algunos códigos y/o algunos datos pueden ser privados y el mundo exterior no puede acceder a ellos. De esta manera, los objetos proporcionan distintos niveles de protección para los datos internos para evitar que partes no relacionadas del programa cambien accidentalmente o utilicen incorrectamente las partes privadas del objeto.
Herencia
La herencia es un método que permite que un objeto de un tipo obtenga las propiedades de un objeto de otro tipo. Apoya el concepto de clasificación jerárquica. Por ejemplo, los petirrojos son pájaros y pájaros voladores. Como se muestra en la Figura 5, el principio de esta clasificación es que cada subclase tiene las características comunes de la clase principal.
En POO, el concepto de herencia admite bien la reutilización del código (reusabilidad), es decir, podemos agregar nuevas características a una clase existente sin cambiar la clase. Esto se puede lograr derivando una nueva clase a partir de esta clase existente. Esta nueva clase tendrá las características de la clase original, así como nuevas características. El encanto y el poder del mecanismo de herencia es que permite a los programadores aprovechar una clase ya existente (una clase que está cerca de lo que se necesita, pero no exactamente lo que se necesita), y puede modificar esta clase de alguna manera sin afectar otras cosas.
Tenga en cuenta que cada subclase define solo aquellas características que son exclusivas de esa clase. Si no existe una clasificación de clases, cada clase debe definir explícitamente todas sus características.
Polimorfismo
El polimorfismo es otro concepto importante de la programación orientada a objetos. Polimorfismo significa la capacidad de algo de adoptar diferentes formas. Por ejemplo, una operación puede comportarse de manera diferente en distintas instancias. Este comportamiento depende del tipo de datos que se manipulan. Por ejemplo, si la operación de suma es un número, suma dos números. Si los datos con los que se opera es una cadena, concatenará las dos cadenas.
La Figura 6 muestra una función que maneja diferentes números y tipos de parámetros. Al igual que una palabra tiene diferentes significados en diferentes contextos.
El mecanismo polimórfico permite que objetos con diferentes estructuras internas compartan la misma interfaz externa. Esto significa que aunque las operaciones específicas en diferentes objetos son diferentes, (esas operaciones) se pueden llamar de la misma manera a través de una clase pública. El polimorfismo se usa ampliamente en el proceso de implementación de la herencia.
Los lenguajes de programación orientados a objetos admiten el polimorfismo, que se denomina "método múltiple de una interfaz (una interfaz, múltiples implementaciones)". En pocas palabras, el mecanismo de polimorfismo permite activar un conjunto de acciones relacionadas pero diferentes a través de la misma interfaz. De esta manera, se puede reducir la complejidad del código. El compilador determina qué acción se debe tomar en una situación específica sin intervención manual del programador.
En los programas multifunción, muchos datos importantes se declaran como variables globales para que todas las funciones puedan acceder a ellos. Cada función a su vez puede tener sus propias variables locales. Las variables globales se pueden cambiar fácilmente sin darse cuenta mediante una función. En un programa grande, es difícil saber qué variables utiliza cada función. Si necesitamos modificar la estructura de un dato externo, debemos modificar todas las funciones que acceden a este dato. Esto puede provocar fácilmente errores.
Otro defecto grave de la programación estructurada es la incapacidad de simular bien problemas del mundo real. Esto se debe a que las funciones están orientadas a procesos y en realidad no corresponden a elementos individuales del problema.
Algunas características de la programación orientada a procesos son las siguientes:
·Énfasis en el hacer (algoritmos);
·Los programas grandes se dividen en muchos programas pequeños, y estos pequeños programas se llaman funciones;
·La mayoría de las funciones comparten datos globales
·Los datos fluyen abiertamente de una función a otra. Las funciones convierten datos de un formulario a otro.
Adopte un enfoque de programación de arriba hacia abajo.
Enlace dinámico
El enlace se refiere al acto de vincular una llamada a un procedimiento con el código correspondiente.
El enlace dinámico significa que el código asociado con una llamada a un procedimiento determinado solo se conoce en tiempo de ejecución. Está estrechamente relacionado con el polimorfismo y la herencia. Las llamadas a funciones para una referencia polimórfica dependen del tipo dinámico de la referencia.
Considere el método "dibujar" en la Figura 6. A través de la herencia, cada objeto tiene este proceso. Sin embargo, su algoritmo es diferente para diferentes objetos, por lo que el proceso de dibujo debe redefinirse en cada clase. Durante el tiempo de ejecución, se llamará el código correspondiente al objeto al que se hace referencia actualmente.
Paso de mensajes
Un programa orientado a objetos consta de muchos objetos, y estos objetos necesitan comunicarse entre sí. Por tanto, en los lenguajes de programación orientados a objetos, los principales pasos de la programación son los siguientes:
1. Crear clases, que definen los objetos y sus comportamientos.
2. objetos;
3. Establecer comunicación entre objetos.
Los objetos se comunican entre sí enviando y recibiendo información, lo cual es similar a la transmisión de información entre personas. El concepto de transferencia de mensajes facilita la comunicación directa con los sistemas de simulación y construcción del mundo real.
Para un objeto específico, el mensaje es una solicitud para ejecutar un determinado proceso. Por lo tanto, el objeto receptor del mensaje llamará a una función (proceso) para producir el resultado esperado. El contenido del mensaje pasado incluye el nombre del objeto que recibe el mensaje, el nombre de la función que debe llamarse y la información necesaria.
Los objetos tienen un ciclo de vida. Se pueden crear y destruir. Mientras el objeto esté en su vida útil, puedes comunicarte con él.
Ventajas de la POO
La POO tiene muchas ventajas, tanto para los diseñadores de programas como para los usuarios. La orientación a objetos proporciona soluciones a muchos problemas en la expansión de productos de software y el control de calidad. Esta tecnología puede aumentar considerablemente la productividad del programador, mejorar la calidad del software y reducir sus costos de mantenimiento. Sus principales ventajas se enumeran a continuación:
1. A través de la herencia, podemos reducir en gran medida el código redundante y ampliar el uso del código existente.
2. módulos (por "estándares" nos referimos a acuerdos entre programadores) sin tener que empezar de cero. Esto puede reducir el tiempo de desarrollo de software y mejorar la productividad;
3. El concepto de ocultación de datos ayuda a los programadores a proteger los programas del código externo.
4. al mismo tiempo sin interferir entre sí;
5. Permitir que los objetos en el espacio del problema se asigne directamente al programa
6 La ingeniería basada en objetos se puede dividir fácilmente en independientes. partes;
7. El método de diseño centrado en datos nos permite capturar más detalles del modelo implementable.
8. El sistema es fácil de actualizar gradualmente de pequeño a grande;
9. La tecnología de transmisión de mensajes utilizada para la comunicación entre objetos y la descripción de la parte de la interfaz del sistema externo son más simples.
10.
Cuando es necesario combinar todas las características anteriores en un sistema orientado a objetos, su importancia relativa depende del tipo de proyecto y de las preferencias del programador. Hay muchas cosas que se deben considerar para obtener algunas de las ventajas mencionadas anteriormente. Por ejemplo, las bibliotecas de objetos deben ser reutilizables. La tecnología aún está en desarrollo y los productos existentes se actualizarán rápidamente. Si no se logra la reutilización, se requiere un control y una gestión estrictos.
El software de desarrollo que es fácil de usar suele ser difícil de escribir. Las herramientas de programación orientada a objetos prometen resolver este problema.
Lenguaje de programación orientado a objetos
La tecnología orientada a objetos no es prerrogativa de un lenguaje específico. Al igual que la programación estructurada, los conceptos de programación orientada a objetos se pueden implementar en muchos lenguajes como C y Pascal. Sin embargo, a medida que los programas crecen, la programación se vuelve torpe y confusa. Y un lenguaje de programación que admita conceptos de programación orientada a objetos puede simplificar todo.
Un lenguaje debe soportar varios conceptos importantes de programación orientada a objetos para ser llamado orientado a objetos.
Según las características de programación orientada a objetos admitidas, los lenguajes se pueden dividir en las dos categorías siguientes:
1. Lenguaje de programación basado en objetos
2.
Los lenguajes de programación basados en objetos solo admiten encapsulación e identificación de objetos.
Las características importantes que debe admitir un lenguaje de programación orientado a objetos son las siguientes:
·Encapsulación de datos
·Mecanismo de acceso y ocultación de datos
·Inicialización y borrado automático de objetos
·Sobrecarga de operadores
Los lenguajes que admiten programación de estilo de objetos se denominan lenguajes de programación basados en objetos. No admiten herencia ni enlace dinámico.
Ada es un típico lenguaje de programación basado en objetos.
La programación orientada a objetos no solo incluye las características de la programación basada en objetos, sino que también admite herencia y enlace dinámico.
Aplicaciones de la POO
Las áreas de aplicación más prometedoras de la POO son las siguientes:
1. Sistemas en tiempo real
2. . Modelo de simulación y construcción;
3. Base de datos orientada a objetos;
4. Hipertexto, hipermedia y texto extendido;
5.
6. Red neuronal y programación paralela;
7. Sistema de soporte a la decisión y ofimática.
8.