En aquest tema, explorarem els mòduls i els mixins en Ruby. Els mòduls són una manera de grups de mètodes, constants i altres mòduls. Els mixins permeten compartir funcionalitats entre classes sense utilitzar herència múltiple.

Què és un Mòdul?

Un mòdul és una col·lecció de mètodes i constants. Els mòduls no poden ser instanciats com les classes, però poden ser inclosos en altres classes per compartir funcionalitats.

Creació d'un Mòdul

module Salutacions
  def dir_hola
    puts "Hola!"
  end

  def dir_adeu
    puts "Adeu!"
  end
end

Incloure un Mòdul en una Classe

Per incloure un mòdul en una classe, utilitzem la paraula clau include.

class Persona
  include Salutacions
end

persona = Persona.new
persona.dir_hola  # Sortida: Hola!
persona.dir_adeu  # Sortida: Adeu!

Mòduls com a Espais de Noms

Els mòduls també es poden utilitzar per organitzar el codi en espais de noms, evitant conflictes de noms.

module Matematiques
  PI = 3.14159

  def self.circumferencia(radi)
    2 * PI * radi
  end
end

puts Matematiques::PI  # Sortida: 3.14159
puts Matematiques.circumferencia(10)  # Sortida: 62.8318

Mixins

Els mixins són una manera de compartir funcionalitats entre classes sense utilitzar herència múltiple. Això es fa incloent mòduls en classes.

Exemple de Mixin

module Caminable
  def caminar
    puts "Estic caminant!"
  end
end

class Animal
  include Caminable
end

class Robot
  include Caminable
end

animal = Animal.new
robot = Robot.new

animal.caminar  # Sortida: Estic caminant!
robot.caminar   # Sortida: Estic caminant!

Mètodes de Classe en Mòduls

Els mòduls també poden definir mètodes de classe utilitzant self.

module Utilitats
  def self.dia_actual
    Time.now.strftime("%A")
  end
end

puts Utilitats.dia_actual  # Sortida: (el dia actual de la setmana)

Exercicis Pràctics

Exercici 1: Crear un Mòdul

Crea un mòdul anomenat Calculadora amb mètodes per sumar, restar, multiplicar i dividir dos nombres. Inclou aquest mòdul en una classe anomenada Matematica i utilitza els mètodes.

module Calculadora
  def sumar(a, b)
    a + b
  end

  def restar(a, b)
    a - b
  end

  def multiplicar(a, b)
    a * b
  end

  def dividir(a, b)
    a / b
  end
end

class Matematica
  include Calculadora
end

mat = Matematica.new
puts mat.sumar(5, 3)       # Sortida: 8
puts mat.restar(5, 3)      # Sortida: 2
puts mat.multiplicar(5, 3) # Sortida: 15
puts mat.dividir(6, 3)     # Sortida: 2

Exercici 2: Mòduls com a Espais de Noms

Crea un mòdul anomenat Geometria amb una constant PI i un mètode area_cercle que calculi l'àrea d'un cercle donat el seu radi.

module Geometria
  PI = 3.14159

  def self.area_cercle(radi)
    PI * radi ** 2
  end
end

puts Geometria::PI            # Sortida: 3.14159
puts Geometria.area_cercle(5) # Sortida: 78.53975

Resum

En aquest tema, hem après sobre els mòduls i els mixins en Ruby. Els mòduls ens permeten organitzar el codi en espais de noms i compartir funcionalitats entre classes. Els mixins són una manera poderosa de compartir mètodes entre classes sense utilitzar herència múltiple. Hem vist com crear mòduls, incloure'ls en classes i utilitzar-los com a espais de noms. També hem practicat aquests conceptes amb exercicis pràctics.

© Copyright 2024. Tots els drets reservats