« 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ées, la 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 :
✅ Membre, Livre, Emprunt
⚠️ 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 :
-
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 ? » -
Empruntrépond :« Vous avez 1 emprunt actif → vous pouvez emprunter. »
-
Membrecherche le livre :« Où se trouve « Clean Code » ? »
→ DemandeLivre: « Êtes-vous disponible ? » -
Livre vérifie : « Ai-je un prêt actif (non rendu) ? »
→ Demande Prêt: « Y a-t-il un prêt actif pour moi ? » -
Prêt répond : « Non — vous êtes disponible ! »
-
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
-
-
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 »
-
Membre (Curtis) dit : « Je veux rendre le livre « Code propre ». »
-
Membre trouve le correspondant Emprunt (probablement en interrogeant Emprunt avec le livre et le membre).
-
Emprunt se marque comme rendu.
-
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
-
Membre → Bibliothèque: « Trouver le livre intitulé « Code propre ». »
-
Bibliothèque recherche dans sa collection et retourne le Livre (ou
nullsi non trouvé). -
Membre sait maintenant que le livre existe → demande Bibliothèque: « Puis-je emprunter ce livre ? »
-
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))
-
-
Si oui → Bibliothèque crée un nouvel Emprunt et met à jour à la fois Livre et Emprunt.
-
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
-
Utilisez des cartes physiques (cartes 3×5 ou post-it) — c’est plus engageant.
-
Une classe par carte — gardez cela simple.
-
Écrivez gros et lisible — les autres doivent pouvoir le lire facilement.
-
Jouez le rôle à voix haute — passez les cartes comme des objets réels.
-
Commencez par 3 à 6 scénarios principaux (par exemple, emprunter, rendre, rechercher).
-
Ne visez pas la perfection — l’objectif est itération, pas un design définitif. Affinez au fur et à mesure.
-
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.
-
Invitez tout le monde à participer — même les non-programmeurs peuvent aider à repérer des responsabilités manquantes.
-
Esquissez un diagramme de classes simple par la suite — pour visualiser les relations et confirmer la cohérence.
-
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 :
Client,Commande,Élément du menu,Barista,Caisse -
Scénarios : Passer commande → Ajouter boisson → Appliquer réduction → Payer → Imprimer reçu
🪙 Machine à vending
-
Classes :
Machine à vending,Produit,Pièce,Distributeur,Calculateur de monnaie -
Scénarios : Insérer une pièce → Sélectionner un article → Distribuer le produit → Rendre la monnaie
🎮 Jeu de quiz
-
Classes :
Quiz,Question,Joueur,Suiveur de score,Session de jeu -
Scénarios : Démarrer le quiz → Répondre à la question → Vérifier la correction → Afficher le score final
🚗 Garage de parking
-
Classes :
Garage,Voiture,Place de parking,Billet,Portail -
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 ! 🎮🧩💻
- Comment dessiner des cartes CRC dans Visual Paradigm: Ce guide étape par étape fournit des instructions pour créer des cartes CRC à l’aide des outils de création de diagrammes dédiés du logiciel.
- Comprendre les diagrammes de cartes CRC dans Visual Paradigm: Un aperçu qui explique comment ces diagrammes sont utilisés pour modéliser les systèmes orientés objet et leurs interactions.
- Comment créer un diagramme de carte CRC dans Visual Paradigm: Un tutoriel détaillé disponible sur le cercle de la communauté couvrant la création et la personnalisation des diagrammes CRC.
- Introduction aux diagrammes CRC dans Visual Paradigm: Un guide complet axé sur l’utilisation des diagrammes CRC pour la conception orientée objet et la modélisation plus large des systèmes.
- Génération de cartes CRC à partir de diagrammes de classes: Cette discussion communautaire explore les méthodes permettant d’utiliser les diagrammes de classes existants pour générer automatiquement des cartes par ingénierie inverse.
- Synchronisation des cartes CRC avec les diagrammes de classes: Une ressource technique traitant de la modélisation bidirectionnelle pour assurer la cohérence de conception entre les cartes et les modèles de classes.
- Introduction aux diagrammes de cartes CRC (guide PDF): Une ressource technique téléchargeable qui explique les concepts fondamentaux et les applications des cartes CRC dans l’analyse des systèmes.
- Établir des liens entre les cartes CRC et les diagrammes de classes: Cet article met en évidence les techniques permettant de maintenir la traçabilité et les liens entre différents niveaux de modélisation.
- Modèle de carte CRC dans la galerie de Visual Paradigm: Une ressource présentant un modèle téléchargeable conçu pour soutenir la conception orientée objet en phase précoce.
- Déplacement des cartes CRC entre les diagrammes: Un guide détaillant la manière de transférer les cartes entre différents diagrammes tout en maintenant la cohérence des données.
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.









