Skip to content

Programación orientada a objetos

poo

La Programación Orientada a Objetos (OOP) es una forma especial de programación, más cercana a cómo expresaríamos las cosas en la vida real que otros tipos de programación.

Con el POO tenemos que aprender a pensar las cosas de una manera diferente, a escribir nuestros programas en términos de objetos, propiedades, métodos y otras cosas que veremos rápidamente para aclarar conceptos y dar una pequeña base que nos permita relajarnos un poco con este tipo de programación.

Lenguajes de programación orientada a objetos

Durante años, los programadores han estado construyendo aplicaciones muy similares que resolvían los mismos problemas una y otra vez. Para asegurar que los esfuerzos de los programadores puedan ser utilizados por otros, se creó el POO. Es un conjunto de reglas para hacer las cosas de modo que otras personas puedan utilizarlas y avanzar en su trabajo, de modo que el código pueda ser reutilizado.

El POO no es difícil, pero es una forma especial de pensar, a veces subjetiva del programador, por lo que la forma en que se hacen las cosas puede ser diferente dependiendo del programador. Aunque podemos hacer los programas de diferentes maneras, no todos son correctos, lo difícil no es programar orientados a objetos sino programar bien. Programar bien es importante porque podemos aprovechar todas las ventajas del POO.

Pensar en términos de objetos es muy parecido a cómo lo haríamos en la vida real. Por ejemplo, pensemos en un coche para intentar modelarlo en un esquema POO. Diríamos que el coche es el elemento principal que tiene una serie de características, como el color, el modelo o la marca. Además, dispone de una serie de funciones asociadas, como arrancar, parar o aparcar.

Como en un esquema POO el coche sería el objeto, las propiedades serían las características como el color o el modelo y los métodos serían las funcionalidades asociadas como start o stop.

Para dar otro ejemplo, veamos cómo modelaríamos una fracción en un esquema POO, es decir, esa estructura matemática que tiene un numerador y un denominador que divide el numerador, por ejemplo 3/2.

La fracción será el objeto y tendrá dos propiedades, el numerador y el denominador. Entonces podrías tener varios métodos como simplificarlo, sumarlo con otra fracción o número, restarlo con otra fracción, etc.

Estos objetos pueden ser usados en programas, por ejemplo en un programa de matemáticas se usarán objetos de fracción y en un programa que maneja un taller de coches se usarán objetos de coche. Los programas orientados a objetos utilizan muchos objetos para realizar las acciones que desea realizar, y también son objetos en sí mismos. Es decir, el taller de automóviles será un objeto que utilizará objetos de automóvil, herramientas, mecánica, repuestos, etc.

Programación orientada a objetos ejemplos

Al escribir un programa en un lenguaje orientado a objetos, definimos una plantilla o clase que describe las características y el comportamiento de un conjunto de objetos similares. La clase de coche describe las características comunes de todos los coches: sus atributos y comportamiento. Los atributos o propiedades se refieren a la marca o fabricante, el color, las dimensiones, si tienen dos, tres, cuatro o más puertas, la potencia, si utilizan gasolina o gasóleo como combustible, etc. El comportamiento se refiere a la posibilidad de viajar por carretera, frenar, acelerar, cambiar de marcha, girar, etc.

Entonces, tenemos coches específicos, por ejemplo el coche de una cierta marca, color, potencia, etc., el coche del vecino de otra marca, de otro color, etc., el coche de un amigo, etc.

Una clase es por lo tanto una pantilla implementada por un software que describe un conjunto de objetos con atributos y comportamiento similares.

Una instancia u objeto de una clase es una representación concreta y específica de una clase y reside en la memoria del ordenador.

Atributos

Los atributos son las características individuales que diferencian un objeto de otro y determinan su apariencia, estado u otras cualidades. Los atributos se almacenan en variables llamadas variables de instancia, y cada objeto en particular puede tener valores diferentes para estas variables.

Las variables de instancia, también llamadas miembros de datos, se declaran en la clase pero sus valores se fijan y se modifican en el objeto.

Además de las variables de instancia, hay variables de clase, que se aplican a la clase y a todas sus instancias. Por ejemplo, el número de ruedas de un coche es el mismo cuatro, para todos los coches.

Comportamiento

El comportamiento de los objetos en una clase se implementa mediante funciones o métodos de miembros. Un método es un conjunto de instrucciones que realizan una tarea particular y son similares a las funciones de los lenguajes estructurados.

Así como hay variables de instancia y clase, también hay métodos de instancia y clase. En el primer caso, un objeto llama a un método para realizar una determinada tarea, en el segundo, se llama al método desde la propia clase.

Programación orientada a objetos clases

Las clases son declaraciones de objetos, también podrían definirse como abstracciones de objetos. Esto significa que la definición de un objeto es la clase. Cuando programamos un objeto y definimos sus características y funcionalidades estamos programando una clase. En los ejemplos anteriores hablábamos realmente de las clases de coche o fracción porque sólo estábamos definiendo, aunque más arriba, sus formas.

Propiedades en clases

Las propiedades o atributos son las características de los objetos. Cuando definimos una propiedad normalmente especificamos su nombre y tipo. Podemos acostumbrarnos a la idea de que las propiedades son algo así como variables donde almacenamos datos relacionados con objetos.

Métodos en el aula

Estas son las funcionalidades asociadas a los objetos. Cuando programamos clases las llamamos métodos. Los métodos son como funciones asociadas a un objeto.

Todavía hay mucho que saber sobre el POO, ya que sólo nos hemos referido a las cosas más básicas. También existen mecanismos como la herencia y el polimorfismo que se encuentran entre las posibilidades más potentes de POO.

La herencia se utiliza para crear objetos que incorporan propiedades y métodos de otros objetos. De esta manera podemos construir algunos objetos a partir de otros sin tener que reescribirlo todo. Puede encontrar en DesarrolloWeb.com un artículo completo dedicado al Patrimonio.

El polimorfismo sirve para que no tengamos que preocuparnos por lo que estamos trabajando, y abstraernos para definir un código que sea compatible con objetos de varios tipos. Puede acceder a otro artículo para obtener más información sobre el polimorfismo.

Se trata de conceptos avanzados que son difíciles de explicar en las líneas de este informe. No olvides que hay libros enteros dedicados al POO y aquí sólo pretendemos dar un repaso a algunas cosas para que suenen familiares cuando tengas que ponerlos delante de ti en los lenguajes de programación que un desarrollador web debería conocer.

Ventajas de la programación orientada a objetos

  • Reutilización. Cuando se diseñan correctamente, las clases pueden ser utilizadas en diferentes partes del programa y en numerosos proyectos.
  • Mantenibilidad. Debido a la simplicidad para abstraer el problema, los programas orientados a objetos son más fáciles de leer y entender, ya que nos permiten ocultar los detalles de implementación dejando visibles sólo los detalles más relevantes.
  • Modificabilidad. La facilidad de añadir, borrar o modificar nuevos objetos nos permite realizar modificaciones de una forma muy sencilla.
  • Fiabilidad. Dividiendo el problema en partes más pequeñas podemos probarlas de forma independiente y aislar los posibles errores que puedan surgir mucho más fácilmente.

La programación orientada a objetos también tiene algunas desventajas, tales como

  • Cambio en el pensamiento de la programación tradicional a la orientada a objetos.
  • La ejecución de programas orientados a objetos es más lenta.
  • La necesidad de utilizar las bibliotecas de clase requiere aprendizaje y capacitación.

Imágenes de programación orientada a objetos

poo

poo

Vídeos de programación orientada a objetos