domingo, 25 de noviembre de 2012

Programacion Orientada a Objeto y Programacion estructurada



Programación Estructurada
La programación estructurada nació como solución a los problemas que presentaba la programación no estructurada, la cual se empleó durante mucho tiempo antes de la invención de la programación estructurada.
Un programa no estructurado es un programa procedimental: las instrucciones se ejecutan en el mismo orden en que han sido escritas. Sin embargo, este tipo de programación emplea la instrucción "goto". Una instrucción "goto" permite pasar el control a cualquier otra parte del programa. Cuando se ejecuta una instrucción "goto" la secuencia de ejecución del programa continúa a partir de la instrucción
indicada por "goto". De esta forma, para comprender como funciona un programa es necesario simular su ejecución. Esto quiere decir que en la mayoría de los casos es muy difícil comprender la lógica de un programa de este tipo. Algunos compiladores crean referencias cruzadas a las instrucciones apuntadas por los "goto", posibilitando una navegación rápida a través del código fuente. Sin embargo, es algo común en muchos lenguajes de programación el empleo de una variable en asociación con el destino del "goto", no permitiendo la creación automática de tablas de referencias cruzadas. Existen problemas similares en algunos lenguajes de programación estructurada, por ejemplo cómo implementar las vistas en diferentes idiomas, de forma que varias personas puedan visualizar la misma información, pero cada una en su idioma. 
Esto se opone a la idea de utilizar algún tipo de abstracción que permita comprender cómo funciona realmente un programa, que es lo que hace la programación estructurada. Lo que podíamos llamar "programación tradicional", por ejemplo la que se utilizaba (utiliza) en la confección de programas para los primitivos PCs bajo MS-DOS, o en los actuales Win-32 bajo una "ventana" DOS, es un concepto un tanto ambiguo, pero podemos intentar una definición diciendo que se basa en algunas premisas y características bastante definidas. Estas características pueden coexistir juntas o faltar alguna, pero en general se dan simultáneamente.
La programación estructurada es una técnica para escribir programas (programación de computadora) de manera clara. Para ello se utilizan únicamente tres estructuras: secuencia, selección e iteración; siendo innecesario el uso de la instrucción o instrucciones de transferencia incondicional (GOTO, EXIT FUNCTION, EXIT SUB o múltiples RETURN).
Hoy en día las aplicaciones informáticas son mucho más ambiciosas que las necesidades de programación existentes en los años 1960, principalmente debido a las aplicaciones gráficas, por lo que las técnicas de programación estructurada no son suficientes. Ello ha llevado al desarrollo de nuevas técnicas, tales como la programación orientada a objetos y el desarrollo de entornos de programación que facilitan la programación de grandes aplicaciones.
Programación orientada a objetos
La programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que usa objetos y sus interacciones, para diseñar aplicaciones y programas informáticos. Está basado en varias técnicas, incluyendo herencia, abstracción, polimorfismo y encapsulamiento. Su uso se popularizó a principios de la década de los años 1990. En la actualidad, existe variedad de lenguajes de programación que soportan la orientación a objetos.

Los objetos son entidades que tienen un determinado estado, comportamiento (método) e identidad:
  • El estado está compuesto de datos, será uno o varios atributos a los que se habrán asignado unos valores concretos (datos).
  • El comportamiento está definido por los métodos o mensajes a los que sabe responder dicho objeto, es decir, qué operaciones se pueden realizar con él.
  •   La identidad es una propiedad de un objeto que lo diferencia del resto, dicho con otras palabras, es su identificador (concepto análogo al de identificador de una variable o una constante).
Un objeto contiene toda la información que permite definirlo e identificarlo frente a otros objetos pertenecientes a otras clases e incluso frente a objetos de una misma clase, al poder tener valores bien diferenciados en sus atributos. A su vez, los objetos disponen de mecanismos de interacción llamados métodos, que favorecen la comunicación entre ellos. Esta comunicación favorece a su vez el cambio de estado en los propios objetos. Esta característica lleva a tratarlos como unidades indivisibles, en las que no se separa el estado y el comportamiento.
Los métodos (comportamiento) y atributos (estado) están estrechamente relacionados por la propiedad de conjunto. Esta propiedad destaca que una clase requiere de métodos para poder tratar los atributos con los que cuenta. El programador debe pensar indistintamente en ambos conceptos, sin separar ni darle mayor importancia a alguno de ellos. Hacerlo podría producir el hábito erróneo de crear clases contenedoras de información por un lado y clases con métodos que manejen a las primeras por el otro. De esta manera se estaría realizando una programación estructurada camuflada en un lenguaje de programación orientado a objetos.
La POO difiere de la programación estructurada tradicional, en la que los datos y los procedimientos están separados y sin relación, ya que lo único que se busca es el procesamiento de unos datos de entrada para obtener otros de salida. La programación estructurada anima al programador a pensar sobre todo en términos de procedimientos o funciones, y en segundo lugar en las estructuras de datos que esos procedimientos manejan. En la programación estructurada sólo se escriben funciones que procesan datos. Los programadores que emplean POO, en cambio, primero definen objetos para luego enviarles mensajes solicitándoles que realicen sus métodos por sí mismos.

CUADRO COMPARATIVO ENTRE PROGRAMACIÓN ESTRUCTURADA Y PROGRAMACIÓN ORIENTADA A OBJETOS.
  • Los programas son más fáciles de entender, ya que pueden ser leídos de forma secuencial.  
  •  La estructura del programa es clara,puesto que las instrucciones están más ligadas o relacionadas entre sí. 
  • Reducción del esfuerzo en las pruebas, por lo que los errores se pueden detectar y corregir más fácil. 
  •  Reducción de los costos de Mantenimiento de los programas. 
  • Programas más sencillos y   más rápidos (ya que es más fácil su Optimización).
  •  Abstracción: Denota las características esenciales de un objeto, donde se capturan sus comportamientos.
  • Encapsulamiento: Significa reunirá todos los elementos que pueden considerarse pertenecientes a una misa entidad, al mismo nivel de abstracción.
  • Principio de ocultación: Cada objeto está aislado del exterior, es un modulo natural, y cada tipo de objeto expone una interfaz a otros objetos que especifica cómo pueden interactuar con los objetos de la clase.
  •  Polimorfismo: comportamientos diferentes, asociados a objetos distintos, pueden compartir el mismo nombre, al llamarlos por ese nombre se utilizará el comportamiento correspondiente al objeto que se está usando.
  • Herencia: Los objetos heredan las propiedades y el comportamiento de todas las clases a las que pertenecen.
  • Recolección de basura: la Recolección de basura o Garbage Collector es la técnica por la cual el ambiente de Objetos se encarga de destruir automáticamente, y por tanto desasignar de la memoria los Objetos que hayan quedado sin ninguna referencia a ello.

4 comentarios:

  1. No se entiende de que tipo de programación estas hablando en el cuadro comparativo.... (que ni es cuadro)

    ResponderEliminar
  2. Gracias por la información. Saludos.

    ResponderEliminar
  3. Este comentario ha sido eliminado por el autor.

    ResponderEliminar