Guía del usuario de Ruby - Inicialización de objetos

32 - Inicialización de objetos

[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 clase Fruta del capítulo anterior tiene dos variables instancia, una para describir la clase de fruta y otra para describir su estado. Después de redefinir el método inspect de la clase, nos dimos cuenta de que no tiene sentido que una pieza de fruta carezca de esas características. Afortunadamente, Ruby tiene un mecanismo para asegurar que las variables instancia se inicialicen siempre.

El método initialize

Siempre que Ruby crea un objeto nuevo, busca un método llamado initialize y lo ejecuta. Luego lo más sencillo que se puede hacer es utilizar este método para dar valores a las variables instancia, así el método inspect no tiene nada por lo que quejarse.

|| ruby> class Fruta
ruby| def initialize
ruby| @kind = "manzana"
ruby| @condition = "madura"
ruby| end
ruby| end
nil
ruby> f4 = Fruta.new
una manzana madura
||

Modificando suposiciones por requisitos

Hay veces en las que no tiene mucho sentido la presencia de valores por defecto. ¿Existe una cosa tal como una fruta por defecto? Es preferible que se deba especificar el tipo en el momento de la creación de cada pieza de fruta. Para hacer esto se debe añadir un argumento formal al método initialize. Por razones en las que no vamos a entrar, los argumentos que se entregan a new se pasan a initialize

|| ruby> class Fruta
ruby| def initialize(k)
ruby| @kind = k
ruby| @condition = "madura"
ruby| end
ruby| end
nil
ruby> f5 = Fruta.new "pera"
una pera madura
ruby> f6 = Fruta.new
ERR: (eval):1:in `initialize': wrong # of arguments(0 for 1)
||

Inicialización flexible

Hemos visto que una vez que se asocia un argumento al método initialize no se puede omitir sin que se genere un error. Si queremos ser más considerados podemos utilizar el argumento si se proporciona, y en caso contrario, recurrir al valor por defecto.

|| ruby> class Fruta
ruby| def initialize(k="manzana")
ruby| @kind = k
ruby| @condition = "madura"
ruby| end
ruby| end
nil
ruby> f5 = Fruta.new "pera"
una pera madura
ruby> f6 = Fruta.new
una manzana madura
||

Se pueden utilizar los valores por defecto de un argumento en cualquier método no sólo en initialize. Los argumentos hay que organizarlos de tal forma que aquellos con valores por defecto aparezcan al final de la lista.

A veces es útil tener varias formas de inicializar un objeto. Aunque está fuera del ámbito de este tutorial, Ruby permite reflexión sobre los objetos y listas de argumentos de tamaño variable. Ambas técnicas combinadas permiten realizar sobrecarga de métodos.
[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.