Guía del usuario de Ruby - Redefinición de métodos

16 - Redefinición de métodos

[editar]
Tutorial creado por matz. Extraido de: http://es.tldp.org/Manuales-LuCAS/doc-guia-usuario-ruby/doc-guia-usuario-ruby-html/
27 de Febrero de 2006
En una subclase se puede modificar el comportamiento de las instancias redefiniendo los métodos de la superclase.

|| ruby> class Humano
ruby| def identidad
ruby| print "soy una persona.\n"
ruby| end
ruby| def tarifa_tren(edad)
ruby| if edad < 12
ruby| print "tarifa reducida.\n"
ruby| else
ruby| print "tarifa normal. \n"
ruby| end
ruby| end
ruby| end
nil
ruby> Humano.new.identidad
soy una persona.
nil
ruby> class Estudiante<Humano
ruby| def identidad
ruby| print "soy un estudiante.\n"
ruby| end
ruby| end
nil
ruby> Estudiante.new.identidad
soy un estudiante.
nil
||

Supongamos que en vez de reemplazar el método identidad lo que queremos es mejorarlo. Para ello podemos utilizar super

|| ruby> class Estudiante2<Humano
ruby| def identidad
ruby| super
ruby| print "también soy un estudiante.\n"
ruby| end
ruby| end
nil
ruby> Estudiante2.new.identidad
soy una persona.
también soy un estudiante.
nil
||

super nos permite pasar argumentos al método original. Se dice que hay dos tipos de personas ...

|| ruby> class Deshonesta<Humano
ruby| def tarifa_tren(edad)
ruby| super(11) #quiero una tarifa barata
ruby| end
ruby| end
nil
ruby> Deshonesta.new.tarifa_tren(25)
tarifa reducida.
nil
ruby> class Honesta<Humano
ruby| def tarifa_tren(edad)
ruby| super(edad) #pasa el argumento entregado
ruby| end
ruby| end
nil
ruby> Honesta.new.tarifa_tren(25)
tarifa normal.
nil
||
[editar]

5 opiniones

ejemplos

deberian colocar mas ejemplos =)
D:

y los atributos de la clase que?
bien

bien
Exelente.

Excelente traduccion de: http://www.rubyist.net/~slagell/ruby/singletonmethods.html
muy recomendable.
Bueno.

Muy bueno como introduccion a el leguaje de ruby.

Tutoriales relacionados con 'Guía del usuario de Ruby'

Autor y licencia de 'Guía del usuario de Ruby'

Licencia GNU Free Documentation License: http://www.es.gnu.org/licencias/fdles.html
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.