Tous les guides
Intermédiaire-AvancéÀ votre rythmeGuide gratuitSection 6/33

Héritage et modules Ruby

Apprenez à construire et vérifier une application web avec des outils de développement et des assistants IA. Pratiquez les étapes de conception, code et validation.

💡

Contenu gratuit, accessible sans compte. Les outils et modèles évoluent : consultez le dossier actuel pour vérifier leurs versions. Modèles et sources

Section 13.2.1 : Héritage et modules Ruby

🎯 Objectif pédagogique

Comprendre l'héritage de classes et les modules Mixin en Ruby pour structurer du code réutilisable et bien organisé. Ces concepts sont fondamentaux pour comprendre Ruby on Rails.


L'héritage : spécialiser des classes

L'héritage permet de créer une classe enfant qui hérite de toutes les propriétés et méthodes d'une classe parent, tout en ajoutant ses spécificités. En Ruby, chaque classe ne peut hériter que d'une seule classe parent (héritage simple).

class Animal
  attr_reader :nom, :age

  def initialize(nom, age)
    @nom = nom
    @age = age
  end

  def parler
    '...'
  end

  def presenter
    "Je suis #{@nom}, j'ai #{@age} ans"
  end
end

class Chien < Animal
  def parler
    'Woof!'
  end

  def fetch(objet)
    "#{@nom} rapporte #{objet}"
  end
end

class Chat < Animal
  def parler
    'Miaou!'
  end

  def ronronner
    "#{@nom} ronronne..."
  end
end

rex = Chien.new('Rex', 3)
puts rex.presenter    # Hérité du parent
puts rex.parler       # Surchargé
puts rex.fetch('balle')  # Spécifique au Chien

Le mot-clé super

super appelle la méthode du même nom dans la classe parent :

class Vehicule
  attr_reader :marque, :modele

  def initialize(marque, modele)
    @marque = marque
    @modele = modele
    @kilometrage = 0
  end

  def info
    "#{@marque} #{@modele} - #{@kilometrage} km"
  end
end

class VehiculeElectrique < Vehicule
  def initialize(marque, modele, autonomie)
    super(marque, modele)
    @autonomie = autonomie
    @batterie = 100
  end

  def info
    "#{super} | Batterie: #{@batterie}% | Autonomie: #{@autonomie} km"
  end
end

tesla = VehiculeElectrique.new('Tesla', 'Model 3', 560)
puts tesla.info

Les modules : Mixins pour la réutilisation

Ruby n'a pas d'héritage multiple, mais les modules (Mixins) permettent de partager du comportement entre classes non liées.

module Affichable
  def afficher
    puts to_s
  end
end

module Validable
  def valide?
    erreurs.empty?
  end

  def erreurs
    []
  end
end

class Produit
  include Affichable
  include Validable

  attr_accessor :nom, :prix

  def initialize(nom, prix)
    @nom = nom
    @prix = prix
  end

  def to_s
    "#{@nom} - #{@prix} EUR"
  end

  def erreurs
    errs = []
    errs << 'Nom requis' if @nom.nil? || @nom.empty?
    errs << 'Prix positif requis' if @prix.nil? || @prix <= 0
    errs
  end
end

p = Produit.new('MacBook Pro', 2399)
p.afficher    # De Affichable
p.valide?     # De Validable

Comparable et Enumerable

class Etudiant
  include Comparable

  attr_accessor :nom, :moyenne

  def initialize(nom, moyenne)
    @nom = nom
    @moyenne = moyenne
  end

  def <=>(other)
    @moyenne <=> other.moyenne
  end
end

etudiants = [
  Etudiant.new('Alice', 16.5),
  Etudiant.new('Bob', 14.2),
  Etudiant.new('Charlie', 18.0)
]

etudiants.sort.map(&:nom)  # ['Bob', 'Alice', 'Charlie']
etudiants.max.nom           # 'Charlie'
Loading diagram…

Héritage vs Modules

CritèreHéritage (class)Module (include)
RelationEST-UN (is-a)PEUT-FAIRE (has-ability)
NombreUn seul parentPlusieurs modules
InstanciationCrée des objetsPas d objets
ExempleChien < Animalinclude Comparable
Usage RailsApplicationRecord < ActiveRecord::Baseinclude Validations

← Scroll horizontally →

Vérification rapide

Quelle est la différence entre include et extend en Ruby ?

Apprendre l’IA, du premier prompt aux agents

15 guides gratuitsQuiz, schémas et ateliersSans compte

Votre progression

Cette progression est déclarative et conservée dans votre navigateur. L’attestation finale ne constitue pas un diplôme ni une évaluation indépendante.

Voir ma progression et mon attestation

Apprendre l’IA, du premier prompt aux agents

15 guides gratuitsQuiz, schémas et ateliersSans compte

Un cas pratique IA dans votre boîte mail

Méthodes, ressources et nouveaux exercices. Gratuit, avec désinscription à tout moment.