Métodos, clases y objetos en Ruby


El uso de métodos clases y objetos van a permitir que tú código sea menos complejo y más fácil de mantener aumentando con ello tu productividad. Esa son unas de las razones por la que te mostraré como utilizar estos en ruby.

Voy a comenzar haciendo un poco de refactorización en el código del post anterior para que aprendas a definir y utilizar métodos.

#!/usr/bin/env ruby

def saludar( nombre )
  fecha = Time.now
  puts "Hoy es #{fecha}"
  if( nombre.nil? or nombre.empty? )
    puts "Hola amigo poco conversador. Bienvenido al mundo de Ruby."
  else
    puts "Hola #{nombre}. Bienvenido al mundo de Ruby."
  end
end

print "Por favor escribe tu nombre y presiona la tecla de retorno: "
nombre = gets.chomp

saludar( nombre )

La definición de un método es un procedimiento sencillo que consiste en el uso de la palabra reservada def seguido del nombre del método, los parámetros, el bloque de código a ejecutar y se termina la definición con la palabra reservada end. Para usarlo solo tienes que escribir el nombre del método y los parámetros que lleve.

Bien, ya tuviste una introducción a los métodos, ahora vamos a la definición de una clase y la creación de objetos.

Crea un fichero nombrado clases.rb o el nombre que te parezca mejor y copia el siguiente código en él.

#!/usr/bin/env ruby

class Persona
  private
  @nombre
  @edad 
  @sexo

  public

  def initialize(nombre, sexo)
    @nombre = nombre
    @sexo = sexo
    @edad = rand( 120 )
  end

  def nombre
    return @nombre
  end

  def nombre= nombre
    @nombre = nombre
  end

  def sexo
    return @sexo
  end

  def edad
    @edad
  end

end

¿Qué hay de nuevo en este código?

Te habrás percatado de cinco palabras reservadas nuevas:

  • class, se utiliza para definir una nueva clase.
  • private, establece que las variables o métodos definidos debajo de su declaración solo podrán ser accedidos dentro del objeto.
  • initialize, este es un método especial que se ejecuta al crear un objeto, es algo parecido al constructor en otros lenguajes de programación.
  • public, establece que las variables y métodos definidos debajo de su declaración podrán ser accedidos por cualquiera.
  • return, indica que se va a retornar el objeto o variable que aparece a la derecha; esta palabra reservada es opcional pues los métodos en ruby siempre devuelven la última sentencia que contienen.

La definición de la clase se compone por un nombre que debe de comenzar con letra mayúscula, una serie de variables, métodos y termina con la palabra reservada end.

Habrás notado que hay variables que comienzan con arroba (@), esto significa que estas son variables de instancias; osea que pertenecen a objetos individuales. También existen variables globales y de la clase pero estas te las mostraré en otro momento.

Ahora voy crear algunos objetos de la clase recién definida. En el fichero clases.rb agrega el siguiente fragmento luego del último end:

hombre = Persona.new("Pedro","M")

mujer = Persona.new("Maria","F")
mujer.nombre = "Nuris Maria"

puts "El hombre se llama #{hombre.nombre} y su edad es #{hombre.edad}." 

puts "La mujer se llama #{mujer.nombre} y su edad es #{mujer.edad}."

Ahora guarda los cambios en el fichero y ejecutalo para que observes el script en acción.

Conclusiones.

Hoy has aprendido sobre los métodos, clases, nuevas palabras reservadas y creación de objetos. Te recomiendo modifiques el script para que pruebes todos los métodos. También puedes ampliar la definición de la clase Persona y utilizar la estructura de control if para determinar si una persona es joven o vieja.

En el próximo artículo te mostraré cómo convertir el código anterior en pocas líneas utilizando los accessors y verás como utilizar la herencia simple, entre otras cosas.