Tutorial 6, Orientación a objetos.

Hola a tod@s de nuevo, hoy voy a tratar un tema un poco delicado, la orientación a objetos, este tema es muy amplio así que lo explicaré en varios tutoriales, en este, aprenderéis a crear una clase y a partir de la cual un objeto.

El concepto de objeto y clase surgió a partir de la programación orientada a objetos, antiguamente existía como principal metodología la programación funcional (que se basa en funciones).



Una clase es un tipo de objeto, mientras que un objeto es algo formado a partir de una clase y que tiene características propias, digamos que una clase es una plantilla, y los objetos, todo lo que se crea a través de esa plantilla, por ejemplo, una clase puede ser un coche, pero mi coche puede ser un descapotable con dos puertas, o un coche normal con 4 puertas, los dos de la misma clase, pero tienen características diferentes que los hacen únicos, estas características se llaman atributos, y son pasadas a la clase en el momento de crear el objeto.

Las clases se deben de definir al igual que las funciones, las funciones se definían con la palabra reservada "def" y las clases con la palabra reservada "class", la estructura de una clase se basa en funciones (en las clases se llaman métodos), por lo que si no os leísteis el tutorial anterior, antes de seguir leerlo, bueno, un pequeño ejemplo:

class perro():

           def __init__(self, velocidad, edad):

                        print "ha nacido el perro"
                        self.velocidad=velocidad
                        self.edad=edad

            def correr(self):

                        print "el perro esta corriendo a", self.velocidad, "m/s"

            def morir(self):

                        print "el perro de edad", self.edad, "ha muerto"

tobi=perro(5, 3)

Ya esta, esto es una clase con tres métodos (las antiguas funciones), os estaréis preguntando ¿Y que es eso de __init__ que has puesto al principio? Es el constructor de la clase, cuando creamos el objeto automáticamente se ejecuta este método, en este caso nada mas crear un perro a través de esta clase imprimirá "ha nacido el perro", en este ejemplo hemos creado el perro "tobi" con 5 de velocidad y 3 de edad

Pero....¿y eso de self?¿Qué es eso?, muy sencillo, el método __init__ es el que recibe los atributos cuando creamos un objeto, en este caso velocidad y edad, pero hay un atributo que se le pasa automáticamente, que es self, los atributos que se le pasan a __init__ son locales como los argumentos de todas las funciones, pero como queremos usar velocidad y edad en otros métodos aparte de en __init__ como en correr y morir, simplemente, especificamos al constructor __init__ self como primer atributo, y después en el constructor hacemos:

self."nombredelatributo"="nombredelatributo"

De esta forma, podremos usarlos en toda la clase con:

self."nombredelatributo"

En nuestro ejemplo es:

self.velocidad 
self.edad

Puede que os cueste asimilar un poco lo de self, pero es mas sencillo de lo que parece, a mi me costó entender este concepto, bueno, para crear un objeto a partir de una clase escribimos en nombre del objeto a crear seguido de un igual y el nombre de la clase con los atributos especificados entre paréntesis:

tobi=perro(5, 3)

Creamos un perro llamado tobi, cuya velocidad va a valer 5 y la edad 3, el self no hace falta especificarlo al crear el objeto, se le pasa automáticamente a la clase.

Para acceder a los métodos, es decir, que el perro corra o muera, simplemente escribimos el nombre del objeto que hemos creado seguido de un punto y el método:

tobi.correr()

y para que muera

tobi.morir()

A través de la clase que hemos declarado, podemos crear todos los perros que queramos con las diferencias características de cada perro (velocidad y edad), para eso sirve la programación orientada a objetos, para reutilizar código.

Cabe destacar que cada método en la clase puede tener sus propios atributos, no solo al método __init__ se le pueden pasar atributos, la diferencia esta en que a __init__ se le pasan cuando se crea el objeto, y al resto de métodos cuando se usan.

Bueno, espero que os haya gustado el tutorial de hoy, mañana hablaremos de herencia de clases,  la verdad es que este me a costado un poco explicarlo pero al final lo he hecho, este tema es un poco complicado para los que nunca han programado usando objetos, lo se por experiencia propia, pero al final se saca, ya sabéis que me podéis preguntar todas las dudas que queráis a través de los comentarios, me despido de todos vosotros, un abrazo y nos vemos mañana en el siguiente tutorial.

PD: Para probar los ejemplos no copiad y pegad el código, os va a dar error por la indexación (las tabulaciones) se deben de escribir a mano.

         

2 comentarios:

Dr Coloso dijo...

Muy bueno, quiero aprender POO.Espero que sigas con mas ejemplos, gracias.

Martinez dijo...

Gracias por todos tus artículos, me gusta bastante este blog, para mi el mejor que leído por los momentos, solo noto que tienes tiempo sin escribir... se te agradece todo el esfuerzo