Módulos em Ruby

Módulos são um conceito fundamental em Ruby que fornece uma maneira de organizar código, agrupar funcionalidades e compartilhá-lo entre diferentes partes do seu aplicativo.

Definindo Módulos: Link to heading

  • Os módulos são definidos usando a palavra-chave module seguida do nome do módulo.
  • Aulas e outros módulos podem ser aninhados dentro de módulos para melhor organização.

Exemplo: Link to heading

module Modelo
    class Empresa
    end

    class Empregado
    end

    module Relatorios
        class ExcelReporter
            def build
                puts "Gerando relatório excel"
            end
        end
    end

    class EmailReporter
    end
end

relatorio_excel = Relatorios::ExcelReporter.new
relatorio_excel.build # Gerando relatório Excel

Espaço para nome: Link to heading

  • Os módulos ajudam a criar namespaces para evitar conflitos de nomes.
  • Você pode acessar elementos aninhados usando o operador de resolução de escopo ( :: ).

Exemplo: Link to heading

relatorio_excel = Relatorios::ExcelReporter.new
relatorio_excel.build # Gerando relatório Excel

Incluindo Módulos: Link to heading

  • Os módulos podem ser incluídos nas aulas usando a palavra-chave include.
  • Isso permite que a classe herde os métodos definidos no módulo.

Exemplo: Link to heading

class Usuario
    # Inclui o módulo `Nameable` do módulo `Modelo`
    include Modelo::Nameable

    def initialize(nome)
        @nome = nome
    end

    def saudacao
        puts "Olá, #{@nome}"
    end
end

Estendendo Módulos: Link to heading

  • Os módulos podem ser estendidos para outros objetos usando a palavra-chave extend.
  • Isso disponibiliza os métodos do módulo como métodos de classe do objeto estendido.

Exemplo: Link to heading

module Speakable
    # Este método faz um objeto falar uma mensagem
    def speak(mensagem)
        puts mensagem
    end
end

class Gato
    # Estenda a classe `Gato` com o módulo `Speakable`
    extend Speakable

    def meow
        speak "Meow!"
    end
end

Mixins: Link to heading

  • Módulos podem ser usados ​​como mixins para fornecer funcionalidades específicas para múltiplas classes.
  • Isso promove a reutilização de código e evita a duplicação de código.

Em resumo, os módulos oferecem um mecanismo poderoso para organizar código, promovendo a reutilização, reduzindo a duplicação de código e evitando conflitos de nomenclatura. Eles são componentes essenciais para a criação de aplicações Ruby limpas, de fácil manutenção e escaláveis.

Continue aprendendo sobre módulos para melhorar suas habilidades de programação Ruby!

Dicas adicionais: Link to heading

  • Use módulos para agrupar funcionalidades relacionadas.
  • Aproveite os módulos para criar componentes reutilizáveis.
  • Empregue módulos para evitar conflitos de nomenclatura em sua base de código.

Exemplo: Link to heading

module MathHelpers
    # Este método adiciona dois números
    def adicionar(x, y)
        x + y
    end

    # Este método subtrai dois números
    def subtrair(x, y)
        x - y
    end
end

class Calculadora
    # Inclui o módulo `MathHelpers`
    include MathHelpers

    def calcular(operacao, x, y)
        send(operacao, x, y)  # Chamada de método dinâmico baseada na operação
    end
end

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

Os módulos permitem que você escreva programas Ruby modulares, bem estruturados e de fácil manutenção!

<< Programação Orientada a Objetos (POO) em Ruby Bundler e gemas >>