Programación Orientada a Objetos – Introducción.

¡Bienvenidos un día más a un nuevo rootie queridos amigos! La semana pasada en ohmyroot! nuestra compañera Susan, nos estuvo hablando de PHP y esta la vamos a empezar con fuerza y energía y que mejor para ello que empezar a hablar sobre la programación orientada a objetos (POO u OOP por sus siglas en inglés).

La programación orientada a objetos, no es más que uno (aunque muy extendido) de lo diferentes paradigmas de programación que podemos encontrar hoy en día. Esta es un enfoque al diseño modular y reutilizable del software, resultado de la evolución de anteriores técnicas, como la programación estructurada.

programación orientada a objetos
Veo que de esto dominas un rato…

Características de la programación orientada a objetos

La programación orientada a objetos, tiene una serie de características básicas:

  • Abstracción: define las características esenciales de un objeto, donde se establecen sus comportamientos. Cada objeto en el sistema, es el medio para que un agente abstracto para realizar su trabajo sin revelar cómo se implementa. El proceso de abstracción permite seleccionar las características relevantes dentro de un conjunto e identificar comportamientos comunes para definir nuevos tipos de entidades en el mundo real. La abstracción es clave en el proceso de análisis y diseño orientado a objetos, ya que nos permite la creación de un conjunto de clases que permitan solucionar un problema.
  • Encapsulamiento: establece que todos los elementos que puedan ser considerados parte de un mismo objeto, han de ser reunidos al mismo nivel de abstracción. Esto nos ayuda a mejorar la cohesión.
  • Polimorfismo: Capacidad que tienen los objetos de una clase de responder al mismo mensaje o evento en función de los parámetros utilizados durante su invocación 
  • Herencia: Las clases no se encuentran aisladas unas de otras, si no que existen relaciones entre ellas, formando una jerarquía. Los objetos heredan las propiedades y el comportamiento de las clases a las que pertenecen y pueden extender el funcionamiento, sin necesidad de volver a implementarlo.. Esto ayuda al polimorfismo y el encapsulamiento, permitiéndonos crear objetos con tipos de objetos ya existentes.
  • Modularidad:  es la propiedad que permite subdividir una aplicación en partes más pequeñas (llamadas módulos), cada una de las cuales debe ser tan independiente como sea posible de la aplicación en sí y de las restantes partes.
  • Principio de ocultación: Todo objeto está aislado y solo expone una interfaz a otro objetos para interactuar. Este aislamiento protege las propiedades de la clase frente a cambios por parte de quien no tiene derecho para acceder a ellas.
  • Recolección de basura: Es la técnica por la cual el entorno se encarga de destruir automáticamente (y por tanto de liberar recursos) los objetos que ya no estén en uso. Esto hace que el programador no tenga que preocuparse por la asignación o liberación de memoria.

Recolector de basura, explicación rápida

Objetos.

Cuando hablamos de objetos, en ciencias de la computación nos podemos referir a cualquier variable, método, función, estructura que tienen un espacio en memoria con un valor y con un identificador, pero cuando hablamos de Objeto (a partir de ahora con la O mayúscula) en el ámbito de la OOP, nos referimos particularmente a una instancia particular de una Clase, que puede ser una combinación de variables, métodos o estructuras de datos. Un Objeto contará siempre con un estado (datos) y un comportamiento (código) e implementará polimorfismo y herencia.

La idea del objeto es que cuando estamos programando, podamos hacer una correspondencia entre nuestro código y algo que exista en el mundo real. Por ejemplo, en una aplicación de mensajería tendríamos objetos como; mensaje, canal, destinatario y el sistema admitiría comportamientos como enviar un mensaje, leer un mensaje, seleccionar destinatario, etc.

Clases.

Ahora que ya hemos visto las características de la programación orientada a objetos y lo que es un objeto, viene el momento de que os presentemos las Clases. Las clases son uno de los pilares de la programación orientada a objetos, estas permiten realizar la abstracción de los datos y las operaciones asociadas en modo de caja negra.

Una Clase es una plantilla a seguir para la creación de Objetos. Esta definirá un conjunto inicial de variables (recordemos el estado) y métodos (comportamiento) apropiados para manejar los datos. Cuando un Objeto es creado por el constructor de una Clase el resultado es una instancia de la clase y las variables específicas del objeto se llaman variables de instancia, en oposición a las variables de clases compartidas a través de la Clase.

Beneficios.

La utilización de Clases nos permite un desarrollo más rápido ya que reducen la brecha entre la semántica del código y los usuarios. Esto ayuda a mejorar la comunicación entre los distintos miembros del equipo de desarrollo. Además la mayoría de los entornos de desarrollo orientado a objetos incluyen potentes herramientas de debugging y test, lo que permite inspeccionar las clases en tiempo de ejecución para asegurarnos de que se comportan como esperamos.

Otra ventaja es que nos facilitan el mantenimiento a través de la encapsulación, ya que cuando modificamos el comportamiento de un objeto, el cambio está localizado al objeto y sus componentes, esto reduce los posibles efectos secundarios.

Y por último, facilita la reusabilidad a través de la herencia y las interfaces. Cuando se necesita de un nuevo comportamiento, se puede crear con una nueva clase que herede los datos y la funcionalidad por defecto de otra clase, y ajustar el comportamiento a los nuevos requerimientos.

Y con esto terminamos por hoy la introducción a la programación orientada a objetos. Dada la complejidad de este tema, os puede haber dado la sensación de que en este post no hemos explicado demasiado y que es muy teórico, pero hemos querido crear una visión general y explicar las partes fundamentales y básicas de la POO para poder continuar en un arco argumental propio, con post dedicados a profundizar en lo que ya hemos mencionado, ¡así que estad atentos a las próximas entregas!.

Para cualquier duda, pregunta, comentario, soborno o amenaza, podéis usar los comentarios o en nuestras redes sociales Facebook y Twitter.

 

One Comment

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *