Llegamos a la programación orientada a objetos, que al fin y al cabo era la misión de esta serie de tutoriales. Esto va a ser un poco ladrillo porque no se me ocurre una forma simple de explicarlo sin enrollarme.

¿Que son los objetos? Buena pregunta (si, hablo solo…), antes de comenzar a programar orientado a objetos tendrás que saber que son los objetos y como detectarlos. Cuando a desarrollo de software nos referimos, los objetos es un concepto que engloba bastantes definiciones, se podría decir que son la representación en el software de una forma de actuar o de un objeto real.

Imagina que tienes que construir una casa, pero en vez de usar ladrillos y cemento, vas a usar bloques de código. Si identificamos los materiales tendríamos, ladrillos, cemento, tuberías, cables, etc. Cada uno de estos seria un objeto, con un comportamiento único y sin tener nada que ver con los demás elementos, así la función del cemento es unir piezas mientras que la del ladrillo es servir de como pieza de construcción. Pero si rompes un ladrillo, solo se romperá ese ¿cierto?, me refiero a que si ocurre un cambio en un objeto, este cambio solo lo afecta a el sin propagarse a los demás objetos aunque sean de la misma clase. Esto me está resultando complicado de explicar porque a todo lo que he dicho hay excepciones, que las veremos en su momento.

Pongamos el típico ejemplo del coche. El coche en si representa al sistema que hemos desarrollado, y sus piezas como el motor, ruedas, cristales representan los objetos, cada uno de una clase diferente y comportamiento diferente. Por ejemplo que el motor deje de funcionar no afectará en nada al cristal, ni viceversa, porque no están relacionados entre sí, sin embargo que el motor deje de funcionar afecta directamente a las ruedas, que si están relacionadas con este, en este caso no modificamos nada en las ruedas, solo tocaríamos lo necesario del motor para que volvieran a moverse, esto se debe a que los objetos pueden interactuar entre si, siempre que se programen para ello, al final todos los objetos juntos son necesarios para un correcto funcionamiento del sistema.

¿Por que usar programación orientada a objetos?

Piensa en un videojuego en el que hay 100 personajes con características diferentes pero que todos comparten la misma base, ¿Reescribirías el mismo código las 100 veces para definir lo mismo en cada personaje?, supongo que la respuesta es no (algunos diréis que si xD). La primera gran ventaja de POO (o OOP como mas os guste) es que el código se reutiliza de manera muy fácil, no solo bajo un mismo proyecto, si no que de un proyecto a otro se podrán reutilizar muchas de las clases.

Debemos de pensar que el código orientado a objetos es mucho mas ordenado y legible que la programación estructurada, el mero hecho de leer el código para aprender de el ya es mucho mas sencillo, y si hay que realizar cambios sabremos rápidamente donde, si falla la rueda deberá de estar en la clase rueda ¿no?.

Otra ventaja importante es que solo realizamos los cambios en un sitio, en el mismo caso del videojuego, si queremos añadir que los personajes salten solo deberemos de modificar la clase principal sin cambiar uno a uno todos los personajes.

Entrando un poco mas en la parte técnica, tenemos que saber que* un objeto se crea a partir de una clase, eso significa que la clase es la que define el comportamiento y características* de ese objeto, y que el objeto una vez creado no es mas que una instancia de esta. Las clases se componen de atributos y métodos, una comparación con la programación estructurada fácil de recordar seria que los atributos son similares a las variables, y* los métodos a las funciones*. Los atributos como su nombre indica definen los diferentes atributos que tendrá el objeto, por ejemplo color, peso, o altura, y los métodos definen los diferentes comportamientos, por ejemplo caminar, correr, o detenerse.

De momento paro aquí con la teórica que es muy aburrida y dejo la parte mas practica con ejemplos para el siguiente tutorial. !Si tenéis cualquier duda usad los comentarios!