En Ruby, la programación orientada a objetos (POO) es un paradigma fundamental. Este enfoque permite organizar el código en unidades llamadas "clases" y "objetos", facilitando la reutilización y la modularidad. En esta sección, aprenderemos los conceptos básicos de clases y objetos en Ruby.

¿Qué es una Clase?

Una clase es una plantilla para crear objetos. Define un conjunto de atributos y métodos que los objetos creados a partir de la clase tendrán.

Definición de una Clase

Para definir una clase en Ruby, utilizamos la palabra clave class seguida del nombre de la clase. Por convención, los nombres de las clases en Ruby comienzan con una letra mayúscula y utilizan el estilo CamelCase.

class Persona
  # Aquí van los atributos y métodos de la clase
end

Atributos de Clase

Los atributos de una clase son variables que pertenecen a la clase y se utilizan para almacenar información sobre los objetos.

Variables de Instancia

Las variables de instancia son atributos que pertenecen a una instancia específica de una clase. Se definen utilizando el prefijo @.

class Persona
  def initialize(nombre, edad)
    @nombre = nombre
    @edad = edad
  end
end

En el ejemplo anterior, @nombre y @edad son variables de instancia.

Métodos de Clase

Los métodos de una clase son funciones que definen el comportamiento de los objetos creados a partir de la clase.

Definición de Métodos

Para definir un método en una clase, utilizamos la palabra clave def seguida del nombre del método.

class Persona
  def initialize(nombre, edad)
    @nombre = nombre
    @edad = edad
  end

  def saludar
    "Hola, mi nombre es #{@nombre} y tengo #{@edad} años."
  end
end

En el ejemplo anterior, saludar es un método de la clase Persona.

Creación de Objetos

Para crear un objeto a partir de una clase, utilizamos el método new.

persona1 = Persona.new("Juan", 30)
puts persona1.saludar

Salida:

Hola, mi nombre es Juan y tengo 30 años.

Ejemplo Completo

A continuación, se muestra un ejemplo completo que incluye la definición de una clase, la creación de objetos y la invocación de métodos.

class Persona
  def initialize(nombre, edad)
    @nombre = nombre
    @edad = edad
  end

  def saludar
    "Hola, mi nombre es #{@nombre} y tengo #{@edad} años."
  end

  def cumplir_anios
    @edad += 1
  end
end

# Crear un objeto de la clase Persona
persona1 = Persona.new("Juan", 30)
puts persona1.saludar

# Llamar al método cumplir_anios
persona1.cumplir_anios
puts persona1.saludar

Salida:

Hola, mi nombre es Juan y tengo 30 años.
Hola, mi nombre es Juan y tengo 31 años.

Ejercicio Práctico

Ejercicio 1

Define una clase Coche con los siguientes atributos y métodos:

  • Atributos: marca, modelo, año
  • Métodos: detalles (devuelve una cadena con los detalles del coche), edad (calcula la edad del coche)

Solución

class Coche
  def initialize(marca, modelo, año)
    @marca = marca
    @modelo = modelo
    @año = año
  end

  def detalles
    "Marca: #{@marca}, Modelo: #{@modelo}, Año: #{@año}"
  end

  def edad
    Time.now.year - @año
  end
end

# Crear un objeto de la clase Coche
coche1 = Coche.new("Toyota", "Corolla", 2015)
puts coche1.detalles
puts "Edad del coche: #{coche1.edad} años"

Salida:

Marca: Toyota, Modelo: Corolla, Año: 2015
Edad del coche: 8 años

Conclusión

En esta sección, hemos aprendido los conceptos básicos de clases y objetos en Ruby. Hemos visto cómo definir una clase, crear objetos y definir métodos para esos objetos. Estos conceptos son fundamentales para la programación orientada a objetos y serán la base para temas más avanzados en Ruby.

En la próxima sección, exploraremos las variables y métodos de instancia, profundizando en cómo gestionar el estado y el comportamiento de los objetos en Ruby.

© Copyright 2024. Todos los derechos reservados