12.7. Los objetos son mudables

Podemos cambiar el estado de un objeto efectuando una asignación sobre uno de sus atributos. Por ejemplo, para cambiar el tamaño de un rectangulo sin cambiar su posición, podemos cambiar los valores de anchura y altura:

   1: caja.anchura = caja.anchura + 50
   2: caja.altura = caja.altura + 100

Podemos encapsular este código en un metodo y generalizarlo para agrandar el rectangulo en cualquier cantidad:



   1: def agrandaRect(caja, danchura, daltura) :
   2:     caja.anchura = caja.anchura + danchura
   3:     caja.altura = caja.altura + daltura

Las variables danchura y daltura indican cuanto debe agrandarse el rectangulo en cada dirección. Invocar este método tiene el efecto de modificar el Rectangulo que se pasa como argumento.
Por ejemplo, podemos crear un nuevo Rectangulo llamado bob y pasárselo a agrandaRect:




   1: >>> bob = Rectangulo()
   2: >>> bob.anchura = 100.0
   3: >>> bob.altura = 200.0
   4: >>> bob.esquina = Punto()
   5: >>> bob.esquina.x = 0.0;
   6: >>> bob.esquina.y = 0.0;
   7: >>> agrandaRect(bob, 50, 100)

Mientras agrandaRect se esta ejecutando, el parámetro caja es un alias de bob.

Cualquier cambio que haga a caja afectara también a bob.

A modo de ejercicio, escriba una función llamada mueveRect que
tome un Rectangulo y dos parámetros llamados dx y dy. Tiene que
cambiar la posición del rectangulo añadiendo dx a la coordenada x
de esquina y añadiendo dy a la coordenada y de esquina.


 


 
0