martes, 21 de agosto de 2007

Programación orientada a objetos sencilla y elegante

La mayoría de los programadores cuando piensan en programación orientada a objetos piensa en java o c++, pero hay muchos lenguajes que implementan esta técnica y algunos mucho mejor que en c++ y java.

Me ha llamado la atención python, para mí uno de los mejores lenguajes para aprender orientación a objetos, más que nada, por su sencillez.

¿Qué hay que hacer para definir una clase en python?
Imaginemos que queremos definir una clase llamada pareja que tiene dos atributos, con una única operación, sumarlos.

class pareja:
def __init__(self, a=0, b=0):
self.a=a
self.b=b
def sumar(self):
return self.a+self.b

Simplemente eso, __init__ siempre es el constructor, y tal y como lo he definido se pueden crear objetos así:

p=pareja(2,3)

O así:

p=pareja()

O incluso así:

p=pareja(b=2)

Añadiendo un parámetro más, ¡se puede tener el constructor por defecto, por parámetros y por copia con un mismo método y así de simple!

Otro aspecto son los iteradores, tanto en java como c++, cuando quieres recorrer un array, con un iterador, hay que declarar el iterador indicando su tipo, crear un bloque for que vaya desde it.begin hasta it.end, etc...

En python esto es mucho más fácil, ¿como se recorre un array de objetos?

for i in array:
print i

Da igual si el array es de números, de listas, de objetos complejos, o incluso si el array es una cadena de carácteres.

Una última cosa, normalmente hay que pelearse con las bases de datos para ir guardando los objetos, vamos, para que sean persistentes. En python esto no es problema, simplemente haciendo:

pickle.dump(objeto, fichero)

Se guarda el objeto en el fichero, y haciendo:

objeto=pickle.load(fichero)

Se carga el objeto desde el fichero, sin más complicaciones.

0 comentarios: