Tutorial de Ruby – Parte 17 – Clases

Capítulo 13. Clases

 

El mundo real está lleno de objetos que podemos clasificar. Por ejemplo, un niño muy pequeño es probable que diga “guau guau” cuando vea un perro, independientemente de su raza; naturalmente vemos el mundo en base a estas categorías.

 

En terminología OO, una categoría de objetos, como “perro”, se denomina clase y cualquier objeto determinado que pertenece a una clase se conoce como instancia de esa clase.

 

Generalmente, en Ruby y en cualquier otro lenguaje OO, se define primero las características de una clase, luego se crean las instancias. Para mostrar el proceso, definamos primero una clase muy simple Perro.

 

ruby> class Perro

ruby| def ladra

ruby| print «guau guau\n»

ruby| end

ruby| end

nil

 

En Ruby, la definición de una clase es la región de código que se encuentra entre las palabras reservadas class y end.

 

Dentro de esta área, def inicia la definición de un método, que como se dijo en el capítulo anterior, corresponde con algún comportamiento específico de los objetos de esa clase.

 

Ahora que tenemos definida la clase Perro, vamos a utilizarla:

 

ruby> rufi = Perro.new

#<Perro:0x401c444c>

 

Hemos creado una instancia nueva de la clase Perro y le hemos llamado rufi. El método new de cualquier clase, crea una nueva instancia. Dado que rufi es un Perro, según la definición de la clase, tiene las propiedades que se decidió que un Perro debía tener. Dado que la idea de Perrunidad es muy simple, sólo hay una cosa que puede hacer rufi

 

ruby> rufi.ladra

guau guau

nil

 

La creación de una instancia de una clase se conoce, a veces, como instanciación. Es necesario tener un perro antes de experimentar el placer de su conversación; no se puede pedir simplemente a la clase Perro que ladre para nosotros:

 

ruby> Perro.ladra

ERR: (eval):1: undefined method ‘ladra’ for Perro:Class

 

Tiene el mismo sentido que intentar comer el concepto de un sándwich

 

Por otro lado, si queremos oír el sonido de un perro sin estar emocionalmente atados, podemos crear (instanciar) un perro efímero, temporal y obtener un pequeño sonido antes de que desaparezca.

 

ruby> (Perro.new).ladra # o también, Perro.new.ladra

guau guau

nil

 

Pero un momento, “¿qué es todo esto de que a continuación el pobre tipo desaparece?”. Pues es verdad, si no nos preocupamos de darle un nombre (como hicimos con rufi) el recolector de basura automático de Ruby decide que se trata de un perro perdido, no deseado y sin piedad se deshace de él. Ciertamente está muy bien, porque podemos crear todos los perros que queramos.

Gus Terrera

Apasionado por el agile testing y la ia.

Deja una respuesta