Módulos en Ruby

Los módulos son un concepto fundamental en Ruby que brindan una forma de organizar código, agrupar funcionalidades y compartirlas en diferentes partes de su aplicación.

Definiendo Módulos: Link to heading

  • Los módulos se definen usando la palabra clave module seguida del nombre del módulo.
  • Las clases y otros módulos se pueden anidar dentro de módulos para una mejor organización.

Ejemplo: Link to heading

module Modelo
    class Company
    end

    class Empleado
    end

    module Reportes
        class ExcelReporter
            def build
                puts "Generando reporte de excel"
            end
        end
    end

    class EmailReporter
    end
end

reporte_excel = Reportes::ExcelReporter.new
reporte_excel.build # Generando reporte de excel

Namespace (Espacio de nombres): Link to heading

  • Los módulos ayudan a crear espacios de nombres para evitar conflictos de nombres.
  • Puede acceder a elementos anidados utilizando el operador de resolución de alcance ( :: ).

Ejemplo: Link to heading

reporte_excel = Reportes::ExcelReporter.new
reporte_excel.build # Generando reporte de excel

Incluyendo Módulos: Link to heading

  • Los módulos se pueden incluir en clases usando la palabra clave include.
  • Esto permite que la clase herede los métodos definidos en el módulo.

Ejemplo: Link to heading

class Usuario
    # Incluye el modulo `Nameable` desde el modulo `Modelo`
    include Modelo::Nameable

    def initialize(nombre)
        @nombre = nombre
    end

    def saludo
        puts "Hola, #{@nombre}"
    end
end

Extendiendo Módulos: Link to heading

  • Los módulos se pueden extender a otros objetos usando la palabra clave extend.
  • Esto hace que los métodos del módulo estén disponibles como métodos de clase del objeto extendido.

Ejemplo: Link to heading

module Speakable
    # Este metodo hace que el objeto "hable" un mensaje
    def speak(message)
        puts message
    end
end

class Gato
    # Extiende la clase `Gato` con el modulo `Speakable`
    extend Speakable

    def meow
        speak "Meow!"
    end
end

Mixins: Link to heading

  • Los módulos se pueden usar como mixins para proporcionar funcionalidades específicas a múltiples clases.
  • Esto promueve la reutilización del código y evita la duplicación del código.

En resumen, los módulos ofrecen un mecanismo poderoso para la organización del código, promoviendo la reusabilidad, reduciendo la duplicación del código y evitando conflictos de nombres. Son componentes esenciales para crear aplicaciones Ruby limpias, mantenibles y escalables.

¡Sigue aprendiendo sobre módulos para mejorar tus habilidades de programación en Ruby!

Consejos adicionales: Link to heading

  • Use módulos para agrupar funcionalidades relacionadas.
  • Aproveche los módulos para crear componentes reutilizables.
  • Emplee módulos para evitar conflictos de nombres dentro de su código base.

Ejemplo: Link to heading

module MathHelpers
    # Este metodo suma dos números
    def sumar(x, y)
        x + y
    end

    # Este metodo sustrae dos numeros
    def restar(x, y)
        x - y
    end
end

class Calculadora
    # Incluye el modulo `MathHelpers`
    include MathHelpers

    def calcular(operacion, x, y)
        send(operacion, x, y)  # Llamada dinámica de métodos según la operación
    end
end

calculadora = Calculadora.new
resultado = calculadora.calcular(:add, 5, 3)
puts resultado # 8

Los módulos te permiten escribir programas Ruby modulares, bien estructurados y mantenibles!

<< Programación Orientada a Objetos (POO) en Ruby Bundler y Gemas >>