Programación Orientada a Objetos
icruz3 de Abril de 2014
4.581 Palabras (19 Páginas)390 Visitas
LA PROGRAMACION ORIENTADA A OBJETOS FRENTE A LA PROGRAMACION ESTRUCTURADA
En el articulo se describe las características, ventajas y desventajas de la Programación Orientada a Objetos frente a la metodología tradicional como lo es la Programación Estructurada para el desarrollo de software. Como también se hace una comparación de dos niveles: macroscópica y microscópica.
Carlos Alberto Vanegas•
Introducción
Cuando hablamos de la crisis del software hacemos énfasis en todos los inconvenientes que se presentan en el proceso de desarrollo, en la calidad de los programas que se producen y en los procesos de mantenimiento. Estos problemas han incidido directamente en el incremento en los costos de construcción del software. El costo del mantenimiento (correctivo y evolutivo) pueden alcanzar alrededor del 70% del costo total del producto. Las posibles fuentes de estos problemas se deben buscar en el proceso mismo de construcción de software y, en especial, en las metodologías utilizadas para tal fin.
El ciclo de vida del software esta dividido en tres etapas: Análisis, Diseño e implementación. En la etapa de análisis, estudiamos el problema y establecemos los requerimientos que se desean satisfacer. En la etapa de diseño se implanta una solución al problema. En la etapa de implementación se desarrolla el software; después que ha estado en uso, se realizan cambios en los requerimientos o errores de funcionamiento. Vamos a centrarnos en la implementación.
El factor central de la subetapa de diseño es el modelaje del mundo en el que se presenta el problema, lo que se logra es abstrayendo y copiando las características de sus elementos y sus relaciones, lo mismo que el problema que desea resolver. Esta es, indudablemente la etapa donde se determina las características estructurales de la solución. De acuerdo con esto, una metodología de diseño es una forma de lograr un modelo del mundo del problema, un lenguaje de programación es una sintaxis para implantar el modelo y un esquema de implantación es una manera de traducir el modelo a un lenguaje de programación. Existen muchos modelos validos para un mismo mundo, muchas maneras de lograrlo, muchas sintaxis para expresarlo y muchas maneras para hacer la implantación, siendo todas perfectamente utilizables. En consecuencia, el programador se debe plantear, entre otras muchas las siguientes preguntas, Bajo que criterios debe escoger una metodología de diseño?, Que características del problema hacen que una metodología sea más conveniente que otra?, etc..
Vamos a realizar comparaciones de la Programación Orientada a Objetos (POO) con la metodología de Programación Estructurada (PE).
En la PE existe uniformidad en la terminología y en los conceptos que se manejan la PE debido al tiempo que han tenido para madurar y su gran difusión. Esto no sucede con la POO en donde hay un gran problema grave de terminología y una tendencia preocupante hacia la trivilización de todos los conceptos.
1. LA PROGRAMACION ORIENTADA A OBJETOS (POO)
El paradigma de la POO se basa en la idea que el mundo puede ser modelado como un conjunto de objetos que interactuan entre sí, de manera que programar se reduce a identificar dichos objetos y copiar adecuadamente las características y comportamientos. El objetivo central del diseño es que todo elemento del mundo (objeto real) corresponda directamente a un objeto del mundo computacional (objeto formal) que lo modele. El proceso de programación se puede resumir de la siguiente manera:
a. Identificar las clases de objetos y sus atributos.
b. Identificar y especificar sus operaciones
c. Implantar las clases de objetos
Cada uno de estos pasos corresponde a refinamientos progresivos, buscando cada vez el mejoramiento del modelaje que se está haciendo del mundo. Es muy usual tener que regresar a pasos anteriores para mejorar algún aspecto del diseño. La POO se basa en cuatro conceptos básicos: Objetos, Clases, métodos y herencia.
Objeto: Cada elemento del mundo involucrado en el problema debe tener una adecuada representación dentro de un programa. Un objeto es la representación de un elemento del mundo real (mucho mas que un dato, mucho mas que un simple conjunto de variables con un conjunto de procedimientos asociados). Para hacer esto debemos copiar todas las características observables e interesantes (para el problema) del objeto como también su comportamiento. Un objeto esta compuesto por un conjunto de atributos (objetos más simples) que mantienen el estado actual del objeto y un conjunto de métodos que representa su comportamiento, es decir, la forma de reaccionar a los diversos estímulos que se le pueden presentar. Cada objeto reconoce y puede responder a determinadas acciones denominadas eventos. Un evento es una actividad especifica y predeterminada, iniciada por el usuario o por el sistema.
Clase: Si programar utilizando el enfoque orientado por objetos consistiera en modelar individualmente todos y cada uno de los elementos del mundo real involucrados en el problema, la tarea sería realmente pesada y larga. Se deben tratar entonces de no concentrarse en describir elementos individuales, si no de encontrar patrones de objetos que, por sus características comunes, puedan ser representados de una manera similar. Cada uno de estos patrones se denomina una clase. Las clases son los paquetes principales de la programación orientada a objetos. Las clases y los objetos están estrechamente relacionados, pero no son lo mismo, una clase contiene información sobre el cuál debe ser la apariencia y el comportamiento de un objeto. Una clase es el plano o esquema de un objeto. Por ejemplo, el esquema eléctrico y de diseño de un teléfono seria similar a una clase. El objeto, o una instancia de la clase, seria el teléfono.
La estructuración de una clase en un lenguaje de programación orientada a objetos seria:
class Nombre_de_la_clase
{
atributos; // encapsulamiento de los datos
metodos(); // comportamientos del objeto
}
Método: El comportamiento de los objetos de una clase se representa a través de métodos. Estos le indican la manera de reaccionar a los diversos estímulos que le pueden llegar. La interacción entre los objetos del sistema se hace por medio de mensajes: Un objeto envía a otro un mensaje a manera de estímulo para obtener de éste una respuesta. El receptor del mensaje decide cual de sus métodos debe activar para responder. Un método es una secuencia de mensajes a otros objetos más simples (en la mayoría de los casos a sus atributos) para simular la reacción a un mensaje (encontrar la forma de resolverlo).
Herencia: Es un mecanismo por el cual se puede aprovechar el diseño de clases ya existente para definir nuevas clases, ya sea especializando sus características y comportamiento (herencia sencilla), o haciendo una composición de varias de ellas (herencia múltiple), en la cual la clase resultante corresponde a la suma de todas las clases. La reutilización de código ahorra tiempo en el desarrollo de software.
La metodología sugerida por la POO se puede resumir muy brevemente de la siguiente manera:
a. Identificar las clases de objetos y sus atributos: Para realizar este proceso el programador debe identificar, como primera medida, los objetos directamente involucrados en el problema. Para cada uno de estos objetos debe decidir el conjunto de características importantes para el problema (sus atributos). Esto produce un conjunto de objetos del mundo real, con todos sus atributos modelados, en términos de objetos más simples.
b. Identificar y especificar sus operaciones: Cada objeto formal debe tener suficientes métodos para que cualquier transformación imaginable en el mundo real sobre el elemento que se modela sea expresable en términos de las operaciones incluidas en el diseño y, por lo tanto, sea simulable en el mundo formal (Un conjunto completo de operaciones). Mientras no se llegue a este estado es necesario incluir nuevas operaciones en la clase del objeto.
c. Implantar las clases de objetos: Existen tres opciones básicas para hacer la implantación. La primera es utilizar lenguajes Orientados por Objetos puros como Smalltalk o Eiffel, en los cuales no es necesario tener un esquema de implantación. La segunda opción es utilizar lenguajes orientados por Objetos Híbridos como Object Pascal o C++, para los cuales es necesario establecer un esquema de implantación que no resulta muy complicado y que depende de la calidad de la extensión hecha a los lenguajes originales para manejo de Objetos. La tercera opción es utilizar lenguajes imperativos tradicionales como C y Pascal.
2. PROGRAMACIÓN ESTRUCTURADA
La metodología de la programación Estructurada está basada en la idea que se requiere para resolver un problema y no el mundo en el cual éste ocurre. El modelo representa una solución al problema y corresponde a un conjunto de procesos jerárquicos conectados por medio de flujos de datos, el cual se logra utilizando la técnica de refinamiento a pasos para descomponer las funciones del sistema. Un proceso o modulo es una serie de instrucciones que puede ser invocada por su nombre y se encarga de transformar los datos de entrada en datos de salida. La jerarquía entre los procesos significa que la función que realiza un modulo o el problema que se resuelva, puede ser descompuesto en varios subprocesos
...