de_DEen_USes_ESfa_IRfr_FRhi_INid_IDjapl_PLpt_PT

Maîtriser la conception orientée objet avec les cartes CRC : une étude de cas conviviale pour les débutants

« La meilleure façon d’apprendre la conception orientée objet n’est pas de mémoriser des modèles — c’est de jouer les rôles. »

Dans cet article, nous allons passer en revue unintroduction pas à pas aux cartes CRC (Classes–Responsabilités–Collaborateurs) en utilisant un exemple du monde réel, convivial pour les débutants : unSystème de prêt de livres de bibliothèque. Que vous commenciez tout juste votre parcours dans la conception logicielle ou que vous dirigiez un atelier d’équipe, les cartes CRC offrent une méthode simple, puissante et collaborative pour modéliser les systèmes orientés objet.


🎯 Qu’est-ce que les cartes CRC ?

Les cartes CRC sont une technique de modélisation légère, physique (ou numérique), utilisée dans la conception orientée objet. Chaque carte représente uneclasse et contient trois éléments clés :

Champ Description
Classe Le nom de la classe (par exemple,Livre)
Responsabilités Ce que la classeconnaîtoufait
Collaborateurs Autres classes avec lesquelles cette classe doit collaborer

Ils sont particulièrement efficaces pourl’élaboration d’idéesla conception, etvalidation les structures de classes au début du développement — avant d’écrire une seule ligne de code.


📚 Étude de cas : système de prêt de livres de bibliothèque

Imaginons une petite bibliothèque publique où les membres peuvent :

  • Rechercher des livres par titre

  • Emprunter des livres disponibles (jusqu’à une limite)

  • Rendre les livres une fois terminé

Le système doit suivre :

  • Les livres qui sont empruntés

  • Par qui

  • Quand ils doivent être rendus

Nous utiliserons la méthode des cartes CRC pour découvrir et affiner les classes de ce système — étape par étape.


✅ Étape 1 : Trouver les classes candidates (cassage de tête sur les noms)

Commencez par lire le scénario et extraire les noms — ce sont des classes potentielles.

À partir de la description, nous identifions :

  • Bibliothèque

  • Membre (ou usager)

  • Livre

  • Emprunt (ou prêt)

  • Date de retour (peut-être trop petit)

  • Carte de bibliothèque (peut-être intégrée au membre)

Nous filtrons et ne conservons que les plus significatifs :

✅ MembreLivreEmprunt

⚠️ Remarque : Ne vous inquiétez pas de tout avoir exactement au début — c’est là toute la beauté des cartes CRC. Vous découvrirez celles qui manquent grâce au jeu de rôle !


✏️ Étape 2 : Créer les cartes CRC initiales

Maintenant, nous attribuonsresponsabilitésetcollaborateursà chaque classe.

📘 Classe : Livre

Responsabilités Collaborateurs
Connaître son titre
Connaître son auteur
Connaître son ISBN
Savoir s’il est actuellement disponible Emprunt
Être emprunté Emprunt
Être rendu Emprunt

💬 Le livre ne « sait » pas qui l’a emprunté — il ne sait que s’il a un emprunt actif.


👤 Classe : Membre

Responsabilités Collaborateurs
Connaître le nom
Connaître l’ID du membre
Connaître le nombre de livres actuellement empruntés Emprunt
Emprunter un livre (si autorisé) Livre, Emprunt
Rendre un livre Livre, Emprunt
Vérifier si la limite d’emprunt est atteinte Emprunt

💬 Le membre gère son propre comportement d’emprunt et vérifie les limites via la classe Emprunt.


📅 Classe : Emprunt

Responsabilités Collaborateurs
Enregistrer quel livre a été emprunté Livre
Enregistrer quel membre l’a emprunté Membre
Enregistrer la date d’emprunt
Calculer la date de retour
Savoir s’il est en retard
Marquer comme retourné Livre

💬 La classe Loan gère la relation entre un membre et un livre, y compris les détails temporels.


🎭 Étape 3 : Jouer un scénario — « Emprunter un livre »

C’est maintenant la partie amusante :jeu de rôlele scénario comme si les cartes étaient des objets réels.

📖 Scénario : Curtis souhaite emprunter« Clean Code », qui est disponible.

Examinons cela étape par étape :

  1. Membre (Curtis)dit :« Je souhaite emprunter « Clean Code » . »
    → Première vérification :« Ai-je déjà moins de 3 livres ? »
    → DemandeEmprunt« Combien d’emprunts actifs ai-je ? »

  2. Empruntrépond :« Vous avez 1 emprunt actif → vous pouvez emprunter. »

  3. Membrecherche le livre :« Où se trouve « Clean Code » ? »
    → DemandeLivre« Êtes-vous disponible ? »

  4. Livre vérifie : « Ai-je un prêt actif (non rendu) ? »
    → Demande Prêt« Y a-t-il un prêt actif pour moi ? »

  5. Prêt répond : « Non — vous êtes disponible ! »

  6. Membre crée un nouveau Prêt objet :

    • Lien vers ce Livre et Membre

    • Définit la date de prêt = aujourd’hui

    • Calcule la date de retour = aujourd’hui + 14 jours

  7. Livre est mis à jour : « Maintenant, j’ai un prêt actif → je ne suis plus disponible. »

✅ Résultat: Le processus de prêt semble naturel, distribué et logique.


🔄 Étape 4 : Un autre scénario — « Rendre un livre »

📖 Scénario : Curtis rend « Code propre »

  1. Membre (Curtis) dit : « Je veux rendre le livre « Code propre ». »

  2. Membre trouve le correspondant Emprunt (probablement en interrogeant Emprunt avec le livre et le membre).

  3. Emprunt se marque comme rendu.

  4. Emprunt dit Livre« Vous êtes à nouveau disponible. »

✅ Propre, clair et cohérent — aucune classe ne fait de travail en dehors de sa responsabilité.


🔍 Étape 5 : Affiner et ajouter les classes manquantes

Après le jeu de rôle, nous remarquons un écart:

❓ Qui trouve le livre par titre ?

Actuellement, Membre demande Livre directement — mais Livre ne sait pas comment rechercher !
Nous avons besoin d’un coordinateur central.

➕ Nouvelle classe : Bibliothèque

Responsabilités Collaborateurs
Ajouter un nouveau livre à la collection Livre
Trouver un livre par titre Livre
Inscrire un nouveau membre Membre
Traiter la demande de prêt de livre Membre, Livre, Emprunt
Traiter le retour de livre Membre, Livre, Emprunt
Connaître tous les emprunts en cours Emprunt

💬 La bibliothèque agit comme le centre névralgique — elle connaît tous les livres, tous les membres et tous les emprunts.


✨ Flux mis à jour : « Emprunter un livre » avec la bibliothèque

  1. Membre → Bibliothèque« Trouver le livre intitulé « Code propre ». »

  2. Bibliothèque recherche dans sa collection et retourne le Livre (ou null si non trouvé).

  3. Membre sait maintenant que le livre existe → demande Bibliothèque« Puis-je emprunter ce livre ? »

  4. Bibliothèque vérifie :

    • Le livre est-il disponible ? (via Livre.estDisponible())

    • Le membre est-il sous la limite d’emprunt ? (via Emprunt.compteEmpruntsActifs(membre))

  5. Si oui → Bibliothèque crée un nouvel Emprunt et met à jour à la fois Livre et Emprunt.

  6. Livre devient indisponible ; Emprunt suit le lien.

✅ Maintenant, le flux a du sens — le Bibliothèque gère la découverte et la coordination.


🧩 Résumé final des cartes CRC (simplifié pour les débutants)

Classe Responsabilités principales Collaborateurs clés
Bibliothèque Gère les livres, les membres, les emprunts ; gère les emprunts/retours Livre, Membre, Emprunt
Membre Connaît les informations personnelles ; initie l’emprunt/le retour Bibliothèque, Emprunt
Livre Stocke les métadonnées ; suit la disponibilité Bibliothèque, Emprunt
Emprunt Suit l’historique des emprunts ; calcule les dates de retour ; gère l’état de retour Membre, Livre, Bibliothèque

✅ Principe de conception : Chaque classe a un objectif clair, et les responsabilités sont cohérentes et bien réparties.


🌟 Pourquoi les cartes CRC fonctionnent si bien (principaux enseignements pour les débutants)

Avantage Explication
Conception centrée sur les responsabilités Vous oblige à réfléchir :« Qu’est-ce que cette classe sait ou fait ? »plutôt que de simplement stocker des données.
Découverte naturelle des classes manquantes Le jeu de rôle révèle les lacunes (comme la classe manquanteBibliothèque) — pas besoin de deviner.
Retour immédiat grâce au jeu de rôle Si un flux semble mal adapté, vous savez que la responsabilité est au mauvais endroit.
Faible formalisme et collaboratif Pas d’outils complexes — juste des cartes à index, des post-it ou un tableau blanc. Idéal pour les équipes.
Passe des exigences au code Transforme les histoires utilisateurs en interactions réelles entre classes.

🛠️ Conseils rapides pour votre première session CRC

  1. Utilisez des cartes physiques (cartes 3×5 ou post-it) — c’est plus engageant.

  2. Une classe par carte — gardez cela simple.

  3. Écrivez gros et lisible — les autres doivent pouvoir le lire facilement.

  4. Jouez le rôle à voix haute — passez les cartes comme des objets réels.

  5. Commencez par 3 à 6 scénarios principaux (par exemple, emprunter, rendre, rechercher).

  6. Ne visez pas la perfection — l’objectif est itération, pas un design définitif. Affinez au fur et à mesure.

  7. Utilisez des noms simples et spécifiques au domaine — évitez le jargon technique. Utilisez « Membre » au lieu de « Client » si votre équipe est d’accord.

  8. Invitez tout le monde à participer — même les non-programmeurs peuvent aider à repérer des responsabilités manquantes.

  9. Esquissez un diagramme de classes simple par la suite — pour visualiser les relations et confirmer la cohérence.

  10. Gardez cela amusant — considérez-le comme un jeu. Plus votre équipe est impliquée, meilleurs seront les résultats.


🔄 Essayez vous-même : prochains domaines à explorer

Une fois que vous maîtrisez le système de bibliothèque, essayez d’appliquer les cartes CRC à d’autres domaines conviviaux pour les débutants :

☕ Système de commande de café

  • Classes : ClientCommandeÉlément du menuBaristaCaisse

  • Scénarios : Passer commande → Ajouter boisson → Appliquer réduction → Payer → Imprimer reçu

🪙 Machine à vending

  • Classes : Machine à vendingProduitPièceDistributeurCalculateur de monnaie

  • Scénarios : Insérer une pièce → Sélectionner un article → Distribuer le produit → Rendre la monnaie

🎮 Jeu de quiz

  • Classes :QuizQuestionJoueurSuiveur de scoreSession de jeu

  • Scénarios : Démarrer le quiz → Répondre à la question → Vérifier la correction → Afficher le score final

🚗 Garage de parking

  • Classes :GarageVoiturePlace de parkingBilletPortail

  • Scénarios : Entrer dans le garage → Garer la voiture → Sortir → Payer le tarif → Obtenir le ticket

Chacun de ces systèmes s’appuie sur les mêmes principes :

  • Identifier les noms → attribuer les responsabilités → jouer les rôles → affiner → répéter.


📌 Pensées finales : Les cartes CRC sont bien plus qu’une technique — c’est une mentalité

La véritable puissance des cartes CRC ne réside pas dans les cartes elles-mêmes — c’est dans leconversationqu’elles provoquent.

Quand vous écrivez une carte et dites :« Qui fait cela ? »ou« À qui doit-il parler ? », vous pensez déjà comme un concepteur orienté objet.

🔥 Astuce pro : Utilisez les cartes CRC pendant la planification de sprint, les phases techniques ou même dans les entretiens pour démontrer votre pensée de conception.

Elles ne sont pas seulement destinées aux développeurs — elles sont pourtout le mondeimpliqué dans la construction de logiciels : gestionnaires de produits, concepteurs, testeurs et étudiants.


📎 En voulez-vous davantage ?

👉 Téléchargez un modèle imprimable de carte CRC (PDF ou numérique) pour l’utiliser lors de votre prochain atelier.
👉 Essayez une session CRC en directavec un collègue — attribuez des rôles : « Tu es le Membre », « Tu es le Livre », etc.
👉 Partagez vos résultats — publiez vos cartes sur les réseaux sociaux avec #CRCcards ou #OODesignJourney.


🏁 Conclusion

LeSystème de prêt de livres de bibliothèqueest l’un des exemples les plus classiques et efficaces de cartes CRC — non pas parce qu’il est complexe, mais parce qu’il estsimple, compréhensible et révélateur.

En suivant simplementcinq étapes— cerveau-attaque, création de cartes, jeu de rôle, affinement et itération — vous pouvez :

  • Découvrir les classes naturellement

  • Attribuer clairement les responsabilités

  • Repérer les défauts de conception tôt

  • Construire un modèle mental partagé en équipe

Et surtout ? Vous n’avez pas besoin d’être un développeur senior pour le faire.
Vous avez juste besoin de curiosité, de quelques cartes et de la volonté de jouer.


✅ À vous de jouer maintenant: Prenez quelques post-it, choisissez un système simple (comme un café ou une machine à boissons), et essayez la méthode CRC.

📌 Souvenez-vous: Un bon design ne consiste pas à écrire un code parfait — c’est à poser les bonnes questions.

Et avec les cartes CRC, vous les posez déjà.


📌 Bonus : Modèle imprimable de carte CRC (version texte)

┌────────────────────┐
│    [NOM DE CLASSE]    │
├────────────────────┤
│ Responsabilités :  │
│ -                  │
│ -                  │
│ -                  │
├────────────────────┤
│ Collaborateurs :     │
│ -                  │
│ -                  │
└────────────────────┘

Imprimez-le sur des cartes 3×5 ou utilisez-le dans un outil numérique comme Miro, Figma ou Google Slides.


📚 Prochain étape ?
Voulez-vous un guide complet du systèmeSystème de commande de caféen utilisant le même style CRC ?
👉 Dites simplement le mot — je vous enverrai l’étude de cas suivante, étape par étape, avec des cartes, des scénarios et du jeu de rôle !

Bonne conception ! 🎮🧩💻

Cette publication est également disponible en Deutsch, English, Español, فارسی, English, Bahasa Indonesia, 日本語, Polski : liste des langues séparées par une virgule, Portuguese : dernière langue.