„Der beste Weg, objektorientierte Gestaltung zu erlernen, ist nicht durch Auswendiglernen von Mustern – sondern durch das Spielen der Rollen.“
In diesem Artikel gehen wir Schritt für Schritt durch eine Schritt-für-Schritt-Einführung in CRC-Karten (Klasse–Verantwortung–Zusammenarbeit) anhand eines realen, anfängerfreundlichen Beispiels: eines Bibliotheks-Buchverleih-System. Ob Sie gerade Ihre Reise in die Softwaregestaltung beginnen oder eine Team-Workshop leiten, CRC-Karten bieten eine einfache, leistungsstarke und kooperative Methode, objektorientierte Systeme zu modellieren.
🎯 Was sind CRC-Karten?
CRC-Karten sind eine leichtgewichtige, physische (oder digitale) Modellierungstechnik, die in der objektorientierten Gestaltung verwendet wird. Jede Karte steht für eine Klasse und enthält drei zentrale Elemente:
| Feld | Beschreibung |
|---|---|
| Klasse | Der Name der Klasse (z. B. Buch) |
| Verantwortlichkeiten | Was die Klasse weiß oder tut |
| Zusammenarbeit | Andere Klassen, mit denen diese Klasse zusammenarbeiten muss |
Sie sind besonders effektiv bei Brainstorming, Entwerfen, und validierenKlassengestaltungen früh in der Entwicklung — bevor eine einzige Codezeile geschrieben wird.
📚 Fallstudie: Bibliotheks-Buchverleih-System
Stellen wir uns eine kleine öffentliche Bibliothek vor, in der Mitglieder folgendes können:
-
Nach Büchern nach Titel suchen
-
Verfügbare Bücher ausleihen (bis zu einer Grenze)
-
Bücher zurückgeben, wenn sie benutzt wurden
Das System muss verfolgen:
-
Welche Bücher ausgeliehen sind
-
Von wem
-
Wann sie fällig sind
Wir werden die CRC-Karten-Methode verwenden, um die Klassen in diesem System zu entdecken und zu verfeinern — Schritt für Schritt.
✅ Schritt 1: Kandidaten-Klassen finden (Nomen brainstormen)
Beginnen Sie damit, die Situation zu lesen und Nomen — das sind potenzielle Klassen.
Aus der Beschreibung identifizieren wir:
-
Bibliothek
-
Mitglied (oder Besucher)
-
Buch
-
Ausleihe (oder Verleih)
-
Fälligkeitsdatum (möglicherweise zu klein)
-
Bibliothekskarte (könnte Teil des Mitglieds sein)
Wir filtern und behalten nur die bedeutungsvollsten heraus:
✅ Mitglied, Buch, Ausleihe
⚠️ Hinweis: Machen Sie sich keine Sorgen, wenn Sie alle Klassen gleich richtig bekommen — das ist ja gerade die Schönheit der CRC-Karten. Sie werden die fehlenden Klassen durch Rollenspiel entdecken!
✏️ Schritt 2: Erstellen Sie die ersten CRC-Karten
Nun weisen wirVerantwortlichkeitenundZusammenarbeitjeder Klasse zu.
📘 Klasse: Buch
| Verantwortlichkeiten | Zusammenarbeit |
|---|---|
| Seinen Titel kennen | — |
| Seinen Autor kennen | — |
| Seine ISBN kennen | — |
| Ob es derzeit verfügbar ist | Ausleihe |
| Ausgeliehen werden | Ausleihe |
| Zurückgegeben werden | Ausleihe |
💬 Das Buch „weiß“ nicht, wer es ausgeliehen hat — es weiß nur, ob eine aktive Ausleihe besteht.
👤 Klasse: Mitglied
| Verantwortlichkeiten | Kooperationspartner |
|---|---|
| Name kennen | — |
| Mitglieds-ID kennen | — |
| Wissen, wie viele Bücher derzeit ausgeliehen sind | Ausleihe |
| Ein Buch ausleihen (falls erlaubt) | Buch, Ausleihe |
| Ein Buch zurückgeben | Buch, Ausleihe |
| Prüfen, ob die Ausleihgrenze erreicht ist | Ausleihe |
💬 Das Mitglied verwaltet sein eigenes Ausleihverhalten und prüft die Grenzen über die Ausleihe-Klasse.
📅 Klasse: Ausleihe
| Verantwortlichkeiten | Kooperationspartner |
|---|---|
| Aufzeichnen, welches Buch ausgeliehen wurde | Buch |
| Aufzeichnen, welches Mitglied es ausgeliehen hat | Mitglied |
| Ausleihdatum aufzeichnen | — |
| Fälligkeitsdatum berechnen | — |
| Wissen, ob es überfällig ist | — |
| Als zurückgegeben markieren | Buch |
💬 Die Klassen ‘Loan’ hält die Beziehung zwischen einem Mitglied und einem Buch, einschließlich Zeitangaben.
🎭 Schritt 3: Rollenspiel einer Szene — „Ein Buch ausleihen“
Jetzt kommt der lustige Teil: Rollenspiel die Szene so, als wären die Karten echte Objekte.
📖 Szene: Curtis möchte ausleihen „Clean Code“, das verfügbar ist.
Lassen Sie uns Schritt für Schritt durchgehen:
-
Mitglied (Curtis) sagt: „Ich möchte ‚Clean Code‘ ausleihen.“
→ Erste Überprüfung: „Habe ich bereits weniger als 3 Bücher?“
→ Fragt Ausleihe: „Wie viele aktive Ausleihen habe ich?“ -
Ausleihe antwortet: „Sie haben 1 aktive Ausleihe → Sie können ausleihen.“
-
Mitglied sucht das Buch: „Wo ist ‚Clean Code‘?“
→ Fragt Buch: „Sind Sie verfügbar?“ -
Buch überprüft: „Habe ich einen aktiven (noch nicht zurückgegebenen) Leihvorgang?“
→ Fragt Leihvorgang: „Gibt es für mich einen aktiven Leihvorgang?“ -
Leihvorgang antwortet: „Nein — Sie sind verfügbar!“
-
Mitglied erstellt ein neues Leihvorgang Objekt:
-
Verknüpft mit diesem Buch und Mitglied
-
Legt Ausleihdatum = heute fest
-
Berechnet Fälligkeitsdatum = heute + 14 Tage
-
-
Buch wird aktualisiert: „Jetzt habe ich einen aktiven Leihvorgang → Ich bin nicht mehr verfügbar.“
✅ Ergebnis: Der Ausleihvorgang fühlt sich natürlich, dezentral und logisch an.
🔄 Schritt 4: Ein weiterer Szenario — „Ein Buch zurückgeben“
📖 Szenario: Curtis gibt zurück „Sauberer Code“
-
Mitglied (Curtis) sagt: „Ich möchte das Buch ‚Clean Code‘ zurückgeben.“
-
Mitglied findet die passende Ausleihe (wahrscheinlich durch Abfrage vonAusleihe mit dem Buch und dem Mitglied).
-
Ausleihe markiert sich als zurückgegeben.
-
Ausleihe teilt mit Buch: „Sie sind nun wieder verfügbar.“
✅ Sauber, klar und kohärent — keine Klasse führt Arbeit außerhalb ihrer Verantwortung aus.
🔍 Schritt 5: Verbessern und fehlende Klassen hinzufügen
Nach der Rollenspiel-Übung bemerken wir eine Lücke:
❓ Wer findet das Buch anhand des Titels?
Derzeit Mitglied fragt nach Buch direkt — aber Buch weiß nicht, wie man sucht!
Wir brauchen einen zentrale Koordinatorin.
➕ Neue Klasse: Bibliothek
| Verantwortlichkeiten | Kooperationspartner |
|---|---|
| Füge ein neues Buch der Sammlung hinzu | Buch |
| Finde Buch nach Titel | Buch |
| Registriere einen neuen Mitglied | Mitglied |
| Bearbeite Anfrage zum Ausleihen eines Buches | Mitglied, Buch, Ausleihe |
| Bearbeite Rückgabe eines Buches | Mitglied, Buch, Ausleihe |
| Kenne alle aktuellen Ausleihen | Ausleihe |
💬 Die Bibliothek fungiert als zentraler Knotenpunkt — sie kennt alle Bücher, alle Mitglieder und alle Ausleihen.
✨ Aktualisierter Ablauf: „Ein Buch ausleihen“ mit Bibliothek
-
Mitglied → Bibliothek: „Finde Buch mit dem Titel ‚Clean Code‘.“
-
Bibliothek durchsucht ihre Sammlung und gibt das Buch oder
nullfalls nicht gefunden). -
Mitglied weiß nun, dass das Buch existiert → fragt Bibliothek: „Kann ich dieses Buch ausleihen?“
-
Bibliothek überprüft:
-
Ist das Buch verfügbar? (über
Buch.isVerfuegbar()) -
Ist das Mitglied unter der Ausleihgrenze? (über
Ausleihe.anzahlAktiveAusleihen(Mitglied))
-
-
Falls ja → Bibliothek erstellt eine neue Ausleihe und aktualisiert sowohl Buch als auch Ausleihe.
-
Buch wird nicht mehr verfügbar; Ausleihe verfolgt die Beziehung.
✅ Jetzt macht der Ablauf Sinn — die Bibliothek verwaltet Entdeckung und Koordination.
🧩 Endgültige CRC-Karten-Zusammenfassung (Einfach für Anfänger)
| Klasse | Wichtige Verantwortlichkeiten | Wichtige Kooperationspartner |
|---|---|---|
| Bibliothek | Verwaltet Bücher, Mitglieder, Ausleihen; behandelt Ausleihen/Rückgaben | Buch, Mitglied, Ausleihe |
| Mitglied | Kennt persönliche Daten; initiiert Ausleihe/Rückgabe | Bibliothek, Ausleihe |
| Buch | Speichert Metadaten; verfolgt Verfügbarkeit | Bibliothek, Ausleihe |
| Ausleihe | Verfolgt die Ausleihgeschichte; berechnet Fälligkeitsdaten; verwaltet Rückgabestatus | Mitglied, Buch, Bibliothek |
✅ Entwurfprinzip: Jede Klasse hat einen klaren Zweck, und die Verantwortlichkeiten sind kohärent und gut verteilt.
🌟 Warum CRC-Karten so gut funktionieren (Einsteiger-Tipps)
| Vorteil | Erklärung |
|---|---|
| Verantwortungsorientiertes Design | Zwingt dich zum Nachdenken: „Was weiß oder tut diese Klasse?“ anstatt nur Daten zu speichern. |
| Natürliche Entdeckung fehlender Klassen | Rollenspiel zeigt Lücken auf (wie die fehlende Bibliothek) — keine Vermutungen nötig. |
| Sofortige Rückmeldung durch Rollenspiel | Wenn ein Ablauf unangenehm wirkt, weiß man, dass die Verantwortung am falschen Ort liegt. |
| Geringer Aufwand & kooperativ | Keine komplexen Werkzeuge — nur Indexkarten, Post-its oder eine Tafel. Ideal für Teams. |
| Verbindet Anforderungen mit Code | Wandelt Benutzerstories in echte Klasseninteraktionen um. |
🛠️ Schnelle Tipps für deine erste CRC-Sitzung
-
Verwende physische Karten (3×5-Indexkarten oder Post-its) — es ist interaktiver.
-
Eine Klasse pro Karte — halte es einfach.
-
Schreibe groß und gut lesbar — andere sollten es leicht lesen können.
-
Spiele laut vor — verteile die Karten wie echte Objekte.
-
Beginne mit 3–6 zentralen Szenarien (z. B. ausleihen, zurückgeben, suchen).
-
Ziele nicht auf Perfektion — Das Ziel ist Iteration, nicht ein endgültiges Design. Verbessern Sie es im Laufe der Zeit.
-
Verwenden Sie einfache, domänenspezifische Namen — Vermeiden Sie fachsprachliche Begriffe. Verwenden Sie „Mitglied“ anstelle von „Gast“, falls Ihr Team zustimmt.
-
Laden Sie alle zur Teilnahme ein — Selbst Nicht-Programmierer können helfen, fehlende Verantwortlichkeiten zu erkennen.
-
Zeichnen Sie anschließend ein einfaches Klassendiagramm — Um Beziehungen zu visualisieren und Konsistenz zu überprüfen.
-
Bleiben Sie dabei amüsiert — Behandeln Sie es wie ein Spiel. Je mehr sich Ihr Team engagiert, desto besser sind die Ergebnisse.
🔄 Probieren Sie es selbst aus: Nächste Bereiche zur Erkundung
Sobald Sie das Bibliothekssystem beherrschen, versuchen Sie, CRC-Karten auf andere für Anfänger geeignete Bereiche anzuwenden:
☕ Kaffeehaus-Bestellsystem
-
Klassen:
Kunde,Bestellung,Speisekartenartikel,Barista,Kasse -
Szenarien: Bestellung aufgeben → Getränk hinzufügen → Rabatt anwenden → Bezahlen → Beleg ausdrucken
🪙 Automat
-
Klassen:
Automat,Produkt,Münze,Ausgabegerät,Wechselgeldrechner -
Szenarien: Münze einwerfen → Artikel auswählen → Produkt ausgeben → Wechselgeld zurückgeben
🎮 Quiz-Spiel
-
Klassen:
Quiz,Frage,Spieler,Punktestand,Spielrunde -
Szenarien: Quiz starten → Frage beantworten → Korrektheit prüfen → Endpunktzahl anzeigen
🚗 Parkhaus
-
Klassen:
Parkhaus,Auto,Parkplatz,Ticket,Tor -
Szenarien: Garage betreten → Auto abstellen → Verlassen → Gebühr bezahlen → Ticket abholen
Jedes dieser Systeme basiert auf denselben Prinzipien:
-
Nomen identifizieren → Verantwortlichkeiten zuweisen → Rollenspiel → verfeinern → wiederholen.
📌 Abschließende Gedanken: CRC-Karten sind mehr als eine Technik — sie sind eine Einstellung
Die wahre Kraft der CRC-Karten liegt nicht in den Karten selbst — sondern in der Konversationdie sie auslösen.
Wenn du eine Karte schreibst und sagst, „Wer macht das?“ oder „Mit wem muss es sprechen?“, denkst du bereits wie ein objektorientierter Designer.
🔥 Pro-Tipp: Verwende CRC-Karten während der Sprintplanung, bei Technologie-Spikes oder sogar in Vorstellungsgesprächen, um dein Design-Denken zu zeigen.
Sie sind nicht nur für Entwickler — sie sind für jeden , der an der Entwicklung von Software beteiligt ist: Produktmanager, Designer, Tester und Studierende.
📎 Mehr?
👉 Lade eine druckbare CRC-Karten-Vorlage herunter (PDF oder digital), um sie in deinem nächsten Workshop zu verwenden.
👉 Probiere eine Live-CRC-Sitzung aus mit einem Kollegen — verteile Rollen: „Du bist der Mitglied“, „Du bist das Buch“, usw.
👉 Teile deine Ergebnisse — teile deine Karten in sozialen Medien mit #CRCcards oder #OODesignJourney.
🏁 Fazit
Die System zum Ausleihen von Büchern in einer Bibliothekist eines der klassischsten und effektivsten Beispiele für CRC-Karten – nicht, weil es komplex ist, sondern weil eseinfach, nachvollziehbar und aufschlussreich.
Indem man nur folgende Schritte befolgtfünf Schritte– Brainstorming, Karten erstellen, Rollenspiel, Verfeinern und Iterieren – können Sie:
-
Klassen natürlich entdecken
-
Verantwortlichkeiten klar zuweisen
-
Designfehler früh erkennen
-
Ein gemeinsames mentales Modell als Team aufbauen
Und am besten von allem? Sie müssen kein Senior-Entwickler sein, um es zu tun.
Sie brauchen nur Neugier, ein paar Karten und die Bereitschaft zu spielen.
✅ Jetzt ist Ihre Reihe: Nehmen Sie ein paar Post-it-Notizen, wählen Sie ein einfaches System (wie ein Café oder ein Automat) aus und probieren Sie die CRC-Methode aus.
📌 Denken Sie daran: Gutes Design geht nicht darum, perfekten Code zu schreiben – es geht darum, die richtigen Fragen zu stellen.
Und mit CRC-Karten stellen Sie bereits diese Fragen.
📌 Bonus: Druckbare CRC-Karten-Vorlage (Textversion)
┌────────────────────┐
│ [Klassenname] │
├────────────────────┤
│ Verantwortlichkeiten: │
│ - │
│ - │
│ - │
├────────────────────┤
│ Mitwirkende: │
│ - │
│ - │
└────────────────────┘
Drucken Sie dies auf 3×5-Karten oder verwenden Sie es in einem digitalen Tool wie Miro, Figma oder Google Slides.
📚 Nächster Schritt?
Möchten Sie eine vollständige Anleitung zumKaffeehaus-Bestellsystemin derselben CRC-Form?
👉 Sag einfach ein Wort – ich schicke Ihnen die nächste Fallstudie Schritt für Schritt mit Karten, Szenarien und Rollenspiel!
Viel Spaß beim Gestalten! 🎮🧩💻
- Wie man CRC-Karten in Visual Paradigm zeichnet: Dieser Schritt-für-Schritt-Leitfaden enthält Anweisungen zum Erstellen von CRC-Karten mit den speziellen Diagrammierungswerkzeugen der Software.
- Verständnis von CRC-Karten-Diagrammen in Visual Paradigm: Eine Übersicht, die erklärt, wie diese Diagramme zur Modellierung objektorientierter Systeme und ihrer Interaktionen verwendet werden.
- Wie man ein CRC-Karten-Diagramm in Visual Paradigm erstellt: Ein detaillierter Leitfaden im Community Circle, der die Erstellung und Anpassung von CRC-Diagrammen abdeckt.
- Einführung in CRC-Diagramme in Visual Paradigm: Ein umfassender Leitfaden, der sich auf die Nutzung von CRC-Diagrammen für objektorientierte Gestaltung und umfassende Systemmodellierung konzentriert.
- Erzeugen von CRC-Karten aus Klassendiagrammen: Diese Community-Diskussion untersucht Methoden, bestehende Klassendiagramme zu nutzen, um Karten durch Reverse Engineering automatisch zu generieren.
- Synchronisieren von CRC-Karten mit Klassendiagrammen: Eine technische Ressource, die bidirektionales Modellieren diskutiert, um die Konsistenz der Gestaltung zwischen Karten und Klassensystemen sicherzustellen.
- Einführung in CRC-Karten-Diagramme (PDF-Leitfaden): Eine herunterladbare technische Ressource, die die Grundkonzepte und Anwendungen von CRC-Karten in der Systemanalyse erklärt.
- Herstellen von Verbindungen zwischen CRC-Karten und Klassendiagrammen: Dieser Artikel hebt Techniken hervor, um die Rückverfolgbarkeit und Verknüpfung zwischen verschiedenen Modellierungsebenen aufrechtzuerhalten.
- CRC-Karten-Vorlage im Visual Paradigm-Galerie: Eine Ressource mit einer herunterladbaren Vorlage, die zur Unterstützung der frühen Phase der objektorientierten Gestaltung gedacht ist.
- Verschieben von CRC-Karten zwischen Diagrammen: Ein Leitfaden, der beschreibt, wie Karten zwischen verschiedenen Diagrammen übertragen werden können, während die Datenkonsistenz gewahrt bleibt.
Der Artikel ist auch in English, Español, فارسی, Français, English, Bahasa Indonesia, 日本語, Polski and Portuguese verfügbar.









