sábado, 27 de abril de 2019

Introducción a Programación Orientada a Objetos POO

El paradigma de programación orientado a objetos tiene su origen a principios de los años 70 pero que se ha popularizado desde principios de los años 90. Básicamente un lenguaje de programación orientado a objetos está diseñado para crear una abstracción de hechos y objetos del mundo real de tal forma que pueda ser interpretado y ejecutado por las maquinas o computadoras.

Su origen se debe a un lenguaje de programación, Simula 67, diseñado para hacer simulaciones y donde surgieron los conceptos de clases, objetos, herencia, instancia, polimorfismo, etc.

Se popularizo a principios de los años 90 como consecuencia de la Crisis del Software en donde es necesario dar respuesta a las siguiente preguntas:

  • ¿Cómo representar entidades de problemas de la vida real en el diseño de sistemas?
  • ¿Cómo diseñar sistemas con interfaces abiertos?
  • ¿Cómo garantizar la reusabilidad y la extensibilidad de los módulos?
  • ¿Cómo desarrollar módulos que sean tolerantes a los cambios futuros?
  • ¿Cómo mejorar la productividad del software y disminuir el coste del software?
  • ¿Cómo mejorar la calidad del software?
  • ¿Cómo gestionar las planificaciones temporales?
  • ¿Cómo industrializar el proceso de desarrollo de software?

Aunque no voy a escribir en esta entrada sobre Calidad es importante mencionarlo, cuando se habla de la Calidad en los productos de Software hay que evaluar de forma crítica:

  • Correctitud
  • Mantenibilidad
  • Reusabilidad
  • Apertura e Interoperabilidad
  • Portabilidad
  • Seguridad
  • Integridad
  • Amabilidad con el usuario


Es importante tener algunos conceptos claros y que son usados ampliamente en programación orientada a objetos:


Clases
Es un conjunto completo de datos definidos por el usuario para representar un objeto de la vida real, por ejemplo, Carro, Casa, Persona, Estudiante, Motor, etc. Las Clases encapsulan todas las propiedades esenciales de los objetos que van a ser creados.


Objetos
Los objetos son una instancia de una Clase que ocupan espacio en memoria, son datos de tipo Clase que podemos manipular y a la vez pueden interactuar con otros objetos. La comunicación entre Objetos se hace por medio de funciones que proporcionan una interfaz de comunicación para acceder a los datos de los objetos, a estas funciones se les llama Métodos o Funciones Miembro.


Abstracción de datos y encapsulación
A la envoltura de datos y funciones en un solo conjunto llamada Clase, se conoce como encapsulación, esta es la característica mas llamativa de una clase. La abstracción se refiere al acto de representar las características esenciales de objetos o hechos del mundo real sin incluir los detalles de fondo o las explicaciones.


Herencia
El concepto de herencia suministra la idea de reusabilidad, esto significa que podemos añadir características a una Clase existente sin modificarla, esto es posible al derivar una nueva clase a partir de una clase ya existente, la nueva Clase tendrá las características combinadas de ambas clases.


Polimorfismo
Del vocablo griego, significa la posibilidad de tomar más de una forma. Al proceso de hacer que un operador tenga diferentes comportamientos en diferentes situaciones se le conoce como Sobrecarga del Operador, al uso de un solo nombre de función para realizar diferentes tareas se le conoce como Sobrecarga de la Función.


Paso de mensajes
Los Objetos se comunican entre sí enviando y recibiendo información de la misma manera que las personas se pasan mensajes entre ellas. Un mensaje para un objeto es una solicitud para la ejecución de un procedimiento y por tanto invocará a una función en el objeto receptor que genere el resultado deseado. El paso de mensajes implica la especificación del nombre del objeto, el nombre de la función y la información a enviar.



Ventajas de la POO

  • Por medio de la herencia podemos eliminar código redundante y extender el uso de clases existentes.
  • Podemos escribir programas a partir de módulos de trabajo estándar que se comunican entre si, en lugar de tener que empezar desde cero la escritura del código. Esto conduce a un ahorro en el tiempo de desarrollo ya una productividad mayor.
  • El principio de encapsulación de datos ayuda al programador a construir programas seguros que no pueden ser invadidos por código de otras partes del programa.
  • Es posible tener múltiples copias de un objeto que coexisten sin ninguna interferencia.
  • Es fácil dividir el trabajo de un proyecto basado en objetos.
  • El enfoque del diseño centrado en los datos nos permite capturar mas detalles de un modelo de forma que se puedan implementar.
  • Se pueden mejorar y actualizar fácilmente los sistemas orientados a objetos desde los pequeños hasta los grandes sistemas.
  • Las técnicas de pase de mensajes para la comunicación entre objetos simplifican mucho las descripciones de las interfaces con sistemas externos.
  • Se puede gestionar fácilmente la complejidad del software.


No hay comentarios.:

Publicar un comentario