15 - Herencia

[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
La clasificación de los objetos en nuestra vida diaria es evidentemente jerárquica. Sabemos que todos los gatos son mamíferos y que todos los mamíferos son animales. Las clases inferiores heredan características de las clases superiores a las que pertenecen. Si todos los mamíferos respiran, entonces los gatos respiran.

Este concepto se puede expresar en Ruby:

|| ruby> class Mamifero
ruby| def respira
ruby| print "inhalar y exhalar\n"
ruby| end
ruby| end
nil
ruby> class Gato<Mamifero
ruby| def maulla
ruby| print "miau \n"
ruby| end
ruby| end
nil
||

Aunque no se dice cómo respira un Gato, todo gato heredará ese comportamiento de Mamifero dado que se ha definido Gato como una subclase de Mamifero. En terminología OO, la clase inferior es una subclase de la clase superior que es una superclase. Por lo tanto, desde el punto de vista del programador, los gatos obtienen gratuitamente la capacidad de respirar; a continuación se añade el método maulla, así nuestro gato puede respirar y maullar.

|| ruby> tama = Gato.new
#<Gato:0x401c41b8>
ruby> tama.respira
inhalar y exhalar
nil
ruby> tama.maulla
miau
nil
||

Existen situaciones donde ciertas propiedades de las superclases no deben heredarse por una determinada subclase. Aunque en general los pájaros vuelan, los pingüinos es una subclase de los pájaros que no vuelan.

|| ruby> class Pajaro
ruby| def aseo
ruby| print "me estoy limpiando las plumas."
ruby| end
ruby| def vuela
ruby| print "estoy volando."
ruby| end
ruby| end
nil
ruby> class Pinguino<Pajaro
ruby| def vuela
ruby| fail "Lo siento. yo sólo nado."
ruby| end
ruby| end
nil
||

En vez de definir exhaustivamente todas las características de cada nueva clase, lo que se necesita es añadir o redefinir las diferencias entre cada subclase y superclase. Esta utilización de la herencia se conoce como programación diferencial. Y es uno de los beneficios de la programación orientada a objetos.
[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.