En Ruby, los módulos son una forma de agrupar métodos, clases y constantes. Los módulos no pueden ser instanciados, pero pueden ser incluidos en clases para compartir funcionalidad. Los mixins son una técnica que utiliza módulos para compartir código entre clases.
¿Qué es un Módulo?
Un módulo es una colección de métodos y constantes. A diferencia de las clases, los módulos no pueden ser instanciados ni heredados. Se utilizan principalmente para agrupar métodos relacionados y compartir funcionalidad entre clases.
Definición de un Módulo
module MiModulo
CONSTANTE = 100
def self.metodo_de_clase
puts "Este es un método de clase en un módulo"
end
def metodo_de_instancia
puts "Este es un método de instancia en un módulo"
end
endEn este ejemplo, MiModulo contiene una constante CONSTANTE, un método de clase metodo_de_clase y un método de instancia metodo_de_instancia.
Uso de Módulos
Para acceder a los métodos de clase y constantes de un módulo, utilizamos la sintaxis de punto (.).
Mixins
Los mixins son una forma de incluir métodos de un módulo en una clase. Esto se hace utilizando las palabras clave include o extend.
include vs extend
include: Incluye los métodos de instancia del módulo en la clase.extend: Incluye los métodos de clase del módulo en la clase.
Ejemplo de include
module Habilidades
def correr
puts "Estoy corriendo"
end
def saltar
puts "Estoy saltando"
end
end
class Persona
include Habilidades
end
persona = Persona.new
persona.correr # Salida: Estoy corriendo
persona.saltar # Salida: Estoy saltandoEjemplo de extend
module HabilidadesDeClase
def habilidades_de_clase
puts "Método de clase en el módulo"
end
end
class Persona
extend HabilidadesDeClase
end
Persona.habilidades_de_clase # Salida: Método de clase en el móduloEjercicio Práctico
Ejercicio 1: Crear un Módulo y Usarlo en una Clase
- Define un módulo llamado
Saludableque tenga dos métodos:comerydormir. - Crea una clase llamada
Animalque incluya el móduloSaludable. - Instancia un objeto de la clase
Animaly llama a los métodoscomerydormir.
Solución
module Saludable
def comer
puts "Estoy comiendo"
end
def dormir
puts "Estoy durmiendo"
end
end
class Animal
include Saludable
end
animal = Animal.new
animal.comer # Salida: Estoy comiendo
animal.dormir # Salida: Estoy durmiendoEjercicio 2: Usar extend para Métodos de Clase
- Define un módulo llamado
Utilidadesque tenga un método de claseinformacion. - Crea una clase llamada
Vehiculoque extienda el móduloUtilidades. - Llama al método
informaciondesde la claseVehiculo.
Solución
module Utilidades
def informacion
puts "Este es un método de clase en el módulo"
end
end
class Vehiculo
extend Utilidades
end
Vehiculo.informacion # Salida: Este es un método de clase en el móduloResumen
En esta sección, hemos aprendido sobre los módulos y mixins en Ruby. Los módulos son una forma de agrupar métodos y constantes, y no pueden ser instanciados. Los mixins permiten compartir funcionalidad entre clases utilizando include para métodos de instancia y extend para métodos de clase. Estos conceptos son fundamentales para escribir código Ruby modular y reutilizable.
En el próximo tema, exploraremos conceptos avanzados de Ruby, como bloques, procs y lambdas.
Curso de Programación en Ruby
Módulo 1: Introducción a Ruby
Módulo 2: Conceptos Básicos de Ruby
Módulo 3: Trabajando con Colecciones
Módulo 4: Programación Orientada a Objetos en Ruby
- Clases y Objetos
- Variables y Métodos de Instancia
- Variables y Métodos de Clase
- Herencia
- Módulos y Mixins
Módulo 5: Conceptos Avanzados de Ruby
- Bloques, Procs y Lambdas
- Metaprogramación
- Manejo de Excepciones
- Entrada/Salida de Archivos
- Expresiones Regulares
Módulo 6: Introducción a Ruby on Rails
- ¿Qué es Ruby on Rails?
- Configuración del Entorno Rails
- Creando una Aplicación Simple en Rails
- Arquitectura MVC
- Enrutamiento
Módulo 7: Pruebas en Ruby
- Introducción a las Pruebas
- Pruebas Unitarias con Minitest
- Desarrollo Guiado por Comportamiento con RSpec
- Mocking y Stubbing
Módulo 8: Mejores Prácticas en Ruby
- Estilo de Código y Convenciones
- Refactorización
- Optimización del Rendimiento
- Mejores Prácticas de Seguridad
