Que es la programación orientada a objetos POO

Índice de contenidos

Introducción

La programación estructurada está basada fundamentalmente en la ecuación de wirth: Algoritmos + Estructuras de Datos = Programas. Esto significa que en la programación estructurada el código se trata por separado y lo único que se hace es crear funciones que tratan esos datos, y los van pasando de uno a otro hasta que se obtiene el resultado deseado. La POO funciona de forma diferente.

Definición

La Programación Orientada a Objetos, POO (OOP, Object Oriented Programming, en inglés) es una técnica de programación que utiliza los objetos como representación de alguna cosa o evento del mundo real.La programación orientada a objetos es una filosofía, es una forma de pensar, es otra forma de descomponer problemas. Vamos a fijarnos no en lo que hay que hacer en el problema, sino en cuál es el escenario real del mismo, y vamos a intentar simular ese escenario en nuestro programa. Estamos hablando de una nueva forma de pensar acerca del proceso de descomposición de problemas y de desarrollo de soluciones de programación.

Conceptos básicos de la programación orientada a objetos (POO)

Ahora que ya vimos que es la programación orientada a objetos, vamos a ver una breve descripción de los conceptos más importantes que existen en este paradigma de programación:

Que es una Clase

Es una colección de elementos que comparten atributos y comportamientos. En otras palabras es un conjunto de elementos similares, agrupados y llamados bajo un mismo nombre. Un ejemplo de una clase puede ser Coches.

Que es un Objeto

Son personas, lugares o cosas que son relevantes para el software a analizar. Los sistemas que están desarrollados utilizando la programación orientada a objetos describen las entidades como objetos. Algunos ejemplos de objetos podrían ser: artículos, clientes, pedidos, ventas etc. Todo objeto tiene un nombre (identificador), un estado y un comportamiento (él puede cambiar o cambiar otras entidades de la clase). Un ejemplo de la clase coche puede ser Toyota Corolla.

Que es un Atributo

Es una característica concreta de una clase. Algunos ejemplos de la clase coches pueden ser: el color, el número de puertas, el peso etc.

Que es un Método

Es una operación concreta de una determinada clase. En otras palabras, es un comportamiento que pertenece a una determinada clase. Un ejemplo de método para clase coches puede ser: arrancar(), que lo que hace es poner el coche en marcha.

Que es una instancia

Es una manifestación concreta de una determinada clase, un objeto con valores concretos. Otro término utilizado para llamar a la instancia es ocurrencia. Otros definen la instancia como el despertar de una clase que estaba dormida, pero luego de hacer el llamado (instancia), despiertas dicha clase. Por ejemplo, una instancia de la clase coches puede ser: un Toyota Corolla , de color negro con 4 puertas.

Diagrama de clases Vehiculo , Auto y Camion

Que es la Herencia

Es un mecanismo mediante el cual se puede crear una clase, partiendo de otra clase existente. Se dice que una clase en concreto, puede tener clases hijas, esto quiere decir que las clases que se crean a partir de una existente, van a heredar los comportamientos y característica de la clase padre (principal).

La herencia reduce la labor de programación al permitir que se utilicen los objetos comunes con facilidad. El programador sólo necesita declarar que la clase Auto hereda de la clase Coches y después proporcionar todos los detalles adicionales sobre los nuevos atributos o comportamientos que sean únicos para un automóvil.

Todos los atributos y comportamientos de la clase Coches pasan de manera automática e implícita a formar parte de la clase Auto y no requieren de programación adicional. Esto permite al analista definir una vez pero usar muchas veces.

Un diagrama de clases que muestra la herencia. Auto y Camión son ejemplos específicos de vehículos y heredan las características de la clase más general, Vehículo.

Que es el polimorfismo

El polimorfismo hace referencia a que varios métodos que tengan el mismo nombre, ejecuten diferentes acciones, dependiendo del objeto que lo ejecuta o de los parámetros que reciben. En otras palabras, el termino polimorfismo se refiere a que un mismo método puede tener diferentes acciones, o que puede tomar varias formas. De ahí la palabra polimorfismo, (muchas formas).

A continuación unos ejemplos:

Coches::acelerar(){

Pisar más el pedal derecho

}

Motos::acelerar(){

Girar más el puño derecho

}

Que son las interfaces o Interfaces

Las interfaces son plantillas que permiten crear código con el cual especificar que métodos deben ser implementados por una clase, sin tener que definir cuál es el comportamiento de dichos métodos.

Otra definición:

Una interfaz es una descripción de una acción que un objeto puede hacer. Por ejemplo cuando acciones un botón de luz, la luz se enciende, pero a ti no te importa como lo hace, solo sabes que lo hace. Con las interfaces en la programación orientada a objetos ocurre algo parecido. Una interfaz es una descripción de todas las acciones que un objeto debe tener para ser X. Volvemos a lo de la luz, todo lo que actúa como una luz, debe tener un método encender() y apagar().

Que es una clase Abstracta

Las clases abstractas, son clases generales y se utilizan cuando se incluye la especificación en el diseño. Las clases generales se convierten en clases abstractas. Esto quiere decir que las clases abstractas funcionan como plantillas para las otras clases de un sistema.

Las clases abstractas no tienen objetos o instancias directas. En otras palabras no puedes instanciar una clase abstracta. Por lo general las clases abstractas pueden tener atributos y unos cuantos métodos.

Que son los Trait o Rasgos en español

Un trait se encarga de encapsular definiciones de métodos y campos que se pueden reutilizar mezclándolos dentro de clases. Un Trait es similar a una clase, pero con el único objetivo de agrupar funcionalidades muy específicas y de una manera coherente. No se puede instanciar directamente un Trait, pero lo que si puedes hacer es declarar un método publico estático y llamarlo directamente con los dobles puntos Clase::Metodo(). Es un añadido a la herencia tradicional, permite combinar miembros de clases sin tener que usar herencia.

El objetivo de un trait es el de reducir las limitaciones propias de la herencia simple permitiendo que los desarrolladores reutilicen a voluntad conjuntos de métodos sobre varias clases independientes y pertenecientes a clases jerárquicas distintas.

Modificadores de Accesos

Los modificadores de acceso permite al desarrollador establecer distintos niveles de encapsula-miento para los miembros de una clase en función de desde donde queremos que se puedan acceder a ellos. Cuando se habla de miembros de una clase, se refiere a los atributos y métodos de una clase en concreto. En esta tabla se puede apreciar los modificadores de acceso de una forma más detallada.

  Nivel

      Significado       

Código

Simbología UML

Público

Se puede acceder al elemento de la clase desde cualquier lugar.

   public  

+

Protegido

Solo se puede acceder al elemento de la clase, desde la propia clase o desde una clase hija que hereda los atributos y características de la clase.

    protected

#

Privado

Solo se puede acceder al elemento de la clase, desde la propia clase que contiene el elemento.

    private

~

El encapsulamiento permite agrupar datos y operaciones en un objeto, de tal forma que los detalles del objeto se ocultan a sus usuarios.

Ventajas de la Programación Orientada A Objetos

A continuación vamos a ver cuáles son las ventajas de utilizar la programación orientada a objetos:

  • Facilidad de mantenimiento: los programas que se diseñan utilizando el concepto de programación orientada a objetos son más fáciles de leer y comprender. Esto es gracias a la ocultación de la información que se consigue a través de la separación del código en objetos.A esto se le conoce como Mantenibilidad.

  • Facilidad de modificar los programas: Se puede modificar gran parte del código de un software simplemente añadiendo, suprimiendo o eliminando objetos por separado. A esto se le conoce como Modificalidad.

  • Reutilización de código: Se pueden reutilizar los objetos numerosas veces, y así evitar código repetitivo. Esto quiere decir que si cierta parte del código se va a repetir en nuestro programa, podemos convertir dicho código en un objeto. A esto se le conoce como Reusabilidad.

  • Código más confiable: Los programas orientados a objetos suelen ser más confiables, porque se basan en objetos separados, que ya han sido testados. A esto se le conoce como Fiabilidad.

Estas ventajas no solo benefician al programador, también benefician a los demás colaboradores del proyecto. Además utilizar un análisis orientado a objetos, proporciona muchos beneficios en todo el ciclo de vida del desarrollo de un software.

Referencias:

http://luis.izqui.org/resources/ProgOrientadaObjetos.pdf.

http://elvex.ugr.es/decsai/java/pdf/9D-access.pdf.

http://php.net/manual/es/language.oop5.interfaces.php.

http://php.net/manual/es/language.oop5.traits.php

http://www.dccia.ua.es/dccia/inf/asignaturas/LPP/2010-2011/clases-domingo/sesion29.html

Autor

Eury Rodríguez

Hola que tal , soy una persona apasionada con todo lo que tiene que ver con Internet y las nuevas tecnologías.

Artículos de interés

Comentarios