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.
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:
Muy bueno, quiero aprender POO.Espero que sigas con mas ejemplos, gracias.
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
Publicar un comentario