No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Curso de Ruby

Curso de Ruby

Simón Soriano

Simón Soriano

Programación Orientada a Objetos en Ruby: Módulos

15/39
Recursos

Una buena práctica de programación es la modularización del código, lo que algunos llaman alta cohesión, lo que quiere decir que las clases o funcionalidades que hacen cosas similares estén dentro del mismo contenedor; en Ruby se utilizan los módulos para ello.

Aportes 8

Preguntas 3

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Regístrate o inicia sesión para participar.

Módulo
Es una porcion de codigo que nos permite la funcionalidad de ser inyectado en una clase, se comporta como si tomara el código definido en su TestModuley lo insertara en su clase TestClass mediante el método include

moduleTestModule
  defsome_method
    "Some method of #{self.class}"
  end
end

classTestClass
  include TestModule
  # ...
end

test = TestClass.new.some_method
puts test

Algunas de sus características son:

  • no instancian objetos
  • no crean clases derivadas
  • se pueden utilizar para cualquier clase
  • Los módulos de Ruby son similares a las clases porque contienen una colección de métodos, constantes y otras definiciones de módulos y clases.
  • Los módulos se definen como las clases, pero la palabra clave de módulo se usa en lugar de la palabra clave de clase.
  • Los módulos sirven como herramientas, es el equivalente a un mixin que se puede reutilizar a lo largo de las clases.
  • Los módulos son agnósticos, los podemos utilizar en cualquier tipo de clase.

Conceptos extraídos :

Los módulos cumplen una doble función: evitan colisiones de nombres y nos ayudan a reutilizar código.
Un módulo es un contenedor de clases, métodos y constantes.
Ejemplo:

module MiModulo
  MAX_CONNECTIONS = 5def metodo_uno
  end
​​
  class Persona
  end
end

Para acceder a los metodos, clases o constantes en un modulo se utiliza el nombre del modulo seguido de :: y el recurso al que queremos acceder, por ejemplo

MiModulo::MAX_CONNECTIONS
# => 5

Les recomiendo leer mas aqui

Los módulos permiten tener un código mas ordenado y limpio


#Declaramos un módulo

# Modulos de modelos

module Model
  class Company
  end
  class Employee
  end
end

# Modulos de reportes
module Reports
  class ExcelReporter
    def build
      puts "Generating excel report"
    end
  end

  class EmailReporter
  end
end

#los dos puntos indican que queremos acceder
#a algo que esta dentro del módulo reports
#luego hacemos referencia a la clase
excel_report = Reports::ExcelReporter.new
excel_report.build


los módulos son equivalentes a namespaces?

Modularizar nuestro código


Una buena práctica de programación es modularizar nuestro código, también se le dice “Alta cohesión”, esto quiere decir, que las clases o las funcionalidades que hacen similares estén en mismo contenedor.

Para hacer esto en Ruby utilizamos los módulos.

module Model
    class Company
    end
    class Employee
    end
end

module Reports
    class ExcelReporter
        def build
            puts "Generating excel report"
        end
    end

    class EmailReporter
    end
end

excel_report = Reports::ExcelReporter.new
excel_report.build

Los módulos son una forma de grupo código, y es considerado una buena práctica.

Modulos, buena opcionpara reutilizar codigos! diria que falto un poco mas para compartir del tema como
Mezclando el módulo
Anidando módulos

pero bueno esperemos que mas adelante lo den 😄

Cuando se usan módulos, es aconsejable tener un solo módulo por archivo .rb?

yo tengo un problema y es que como pueden ver excel_report no me aparece para escribirlo como un código… escribí todo idéntico y aún así no me funciona…alguien sabrá por qué?