de_DEen_USes_ESfa_IRfr_FRhi_INid_IDjapl_PLpt_PT

Beherrschung der objektorientierten Gestaltung mit CRC-Karten: Ein Einstiegsfallstudie für Anfänger

„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 BrainstormingEntwerfen, 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:

✅ MitgliedBuchAusleihe

⚠️ 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:

  1. 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?“

  2. Ausleihe antwortet: „Sie haben 1 aktive Ausleihe → Sie können ausleihen.“

  3. Mitglied sucht das Buch: „Wo ist ‚Clean Code‘?“
    → Fragt Buch„Sind Sie verfügbar?“

  4. Buch überprüft: „Habe ich einen aktiven (noch nicht zurückgegebenen) Leihvorgang?“
    → Fragt Leihvorgang„Gibt es für mich einen aktiven Leihvorgang?“

  5. Leihvorgang antwortet: „Nein — Sie sind verfügbar!“

  6. Mitglied erstellt ein neues Leihvorgang Objekt:

    • Verknüpft mit diesem Buch und Mitglied

    • Legt Ausleihdatum = heute fest

    • Berechnet Fälligkeitsdatum = heute + 14 Tage

  7. 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“

  1. Mitglied (Curtis) sagt: „Ich möchte das Buch ‚Clean Code‘ zurückgeben.“

  2. Mitglied findet die passende Ausleihe (wahrscheinlich durch Abfrage vonAusleihe mit dem Buch und dem Mitglied).

  3. Ausleihe markiert sich als zurückgegeben.

  4. 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

  1. Mitglied → Bibliothek„Finde Buch mit dem Titel ‚Clean Code‘.“

  2. Bibliothek durchsucht ihre Sammlung und gibt das Buch oder null falls nicht gefunden).

  3. Mitglied weiß nun, dass das Buch existiert → fragt Bibliothek„Kann ich dieses Buch ausleihen?“

  4. Bibliothek überprüft:

    • Ist das Buch verfügbar? (über Buch.isVerfuegbar())

    • Ist das Mitglied unter der Ausleihgrenze? (über Ausleihe.anzahlAktiveAusleihen(Mitglied))

  5. Falls ja → Bibliothek erstellt eine neue Ausleihe und aktualisiert sowohl Buch als auch Ausleihe.

  6. 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

  1. Verwende physische Karten (3×5-Indexkarten oder Post-its) — es ist interaktiver.

  2. Eine Klasse pro Karte — halte es einfach.

  3. Schreibe groß und gut lesbar — andere sollten es leicht lesen können.

  4. Spiele laut vor — verteile die Karten wie echte Objekte.

  5. Beginne mit 3–6 zentralen Szenarien (z. B. ausleihen, zurückgeben, suchen).

  6. Ziele nicht auf Perfektion — Das Ziel ist Iteration, nicht ein endgültiges Design. Verbessern Sie es im Laufe der Zeit.

  7. Verwenden Sie einfache, domänenspezifische Namen — Vermeiden Sie fachsprachliche Begriffe. Verwenden Sie „Mitglied“ anstelle von „Gast“, falls Ihr Team zustimmt.

  8. Laden Sie alle zur Teilnahme ein — Selbst Nicht-Programmierer können helfen, fehlende Verantwortlichkeiten zu erkennen.

  9. Zeichnen Sie anschließend ein einfaches Klassendiagramm — Um Beziehungen zu visualisieren und Konsistenz zu überprüfen.

  10. 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: KundeBestellungSpeisekartenartikelBaristaKasse

  • Szenarien: Bestellung aufgeben → Getränk hinzufügen → Rabatt anwenden → Bezahlen → Beleg ausdrucken

🪙 Automat

  • Klassen: AutomatProduktMünzeAusgabegerätWechselgeldrechner

  • Szenarien: Münze einwerfen → Artikel auswählen → Produkt ausgeben → Wechselgeld zurückgeben

🎮 Quiz-Spiel

  • Klassen: QuizFrageSpielerPunktestandSpielrunde

  • Szenarien: Quiz starten → Frage beantworten → Korrektheit prüfen → Endpunktzahl anzeigen

🚗 Parkhaus

  • Klassen: ParkhausAutoParkplatzTicketTor

  • 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! 🎮🧩💻

Der Artikel ist auch in English, Español, فارسی, Français, English, Bahasa Indonesia, 日本語, Polski and Portuguese verfügbar.