free web page hit counter

Class Responsibility Collaboration Card


Class Responsibility Collaboration Card

Hey du! Stell dir vor, du sitzt mit mir bei 'nem Kaffee (oder Tee, ganz wie du magst!) und wir quatschen über... Software-Design. Klingt erstmal gähn, oder? Aber warte ab! Es gibt da nämlich 'ne Technik, die ist echt clever und macht das Ganze sogar spaßig. Ich rede von CRC Cards!

CRC Cards? Was zur Hölle soll das sein, fragst du dich jetzt wahrscheinlich. Keine Sorge, klingt komplizierter als es ist. CRC steht für Class, Responsibility, Collaboration. Und 'Card' ist wörtlich gemeint. Ja, wir reden von kleinen Karteikarten. So oldschool, aber so effektiv!

Also, das Prinzip ist super einfach. Stell dir vor, du entwirfst ein neues System. Anstatt dich sofort in Code zu verlieren (was oft im Chaos endet, nicht wahr?), nimmst du dir ein paar Karteikarten und...schreibst! Auf jede Karte kommt ein mögliches Objekt, eine Klasse eben. Zum Beispiel: "Kunde", "Produkt", "Warenkorb"... Du kennst das Spiel.

Okay, jetzt kommt der Clou. Für jede dieser Klassen definierst du ihre Responsibilities, also ihre Aufgaben oder Verantwortlichkeiten. Was macht diese Klasse? Was kann sie? Beispielsweise: "Kunde" kann "Bestellungen aufgeben", "Adresse ändern", "Passwort zurücksetzen" (das Übliche, halt).

Und jetzt der dritte Buchstabe: Collaboration. Mit wem muss diese Klasse zusammenarbeiten, um ihre Aufgaben zu erledigen? Wer braucht die "Kunde"-Klasse, und wer braucht den "Warenkorb"? Hier schreibst du die anderen Klassen auf, mit denen diese Klasse interagiert. Also, "Kunde" arbeitet vielleicht mit "Bestellung" zusammen, um...na, Bestellungen aufzugeben, ist doch klar!

Enrollment Marks) received Averrage to date Final | Chegg.com
Enrollment Marks) received Averrage to date Final | Chegg.com

Warum das Ganze?

Gute Frage! Warum sollten wir uns die Mühe machen, diese Karten zu schreiben, anstatt einfach loszulegen? Nun, es gibt ein paar richtig gute Gründe.

Erstens: Es zwingt dich zum Nachdenken. Bevor du auch nur eine Zeile Code schreibst, musst du dir Gedanken machen: Was soll meine Klasse eigentlich können? Mit wem muss sie reden? Das verhindert wilde Fehlentwicklungen und spart dir später viel Kopfschmerzen (und Refactoring!).

Zweitens: Es fördert die Kommunikation im Team. Stellt euch vor, ihr sitzt zusammen und bewegt diese Karten auf dem Tisch herum, diskutiert, wer wofür zuständig ist. Das ist ein unglaublich interaktiver Prozess und hilft, ein gemeinsames Verständnis des Systems zu entwickeln. Viel besser, als wenn jeder in seinem stillen Kämmerlein vor sich hin wurstelt, oder?

Class-Responsibility-Collaboration Card - GeeksforGeeks
Class-Responsibility-Collaboration Card - GeeksforGeeks

Drittens: Es ist einfach und schnell. Du brauchst keine teure Software, keine komplizierten UML-Diagramme. Nur ein paar Karteikarten und einen Stift. Und vielleicht noch einen Kaffee. (Oder Tee, hatten wir ja schon.)

Stell dir vor, du versuchst, ein E-Commerce-System zu entwerfen. Mit CRC Cards könntest du mit dem Team zusammensitzen und die Karten für 'Produkt', 'Kunde', 'Warenkorb', 'Bestellung' erstellen. Ihr würdet darüber diskutieren, welche Verantwortlichkeiten jede Klasse hat und wie sie miteinander interagieren. Zum Beispiel:

Class-Responsibility-Collaboration Card - GeeksforGeeks
Class-Responsibility-Collaboration Card - GeeksforGeeks

Produkt:

  • Verantwortlichkeit: Informationen anzeigen (Name, Preis, Beschreibung), Lagerbestand verwalten
  • Collaboration: Kategorie, Warenkorb

Kunde:

  • Verantwortlichkeit: Bestellung aufgeben, Adresse verwalten, Zahlungsdaten verwalten
  • Collaboration: Bestellung, Warenkorb, Zahlung

Klingt doch gar nicht so übel, oder? Und plötzlich siehst du das System viel klarer vor dir.

Class-Responsibility-Collaboration Card - GeeksforGeeks
Class-Responsibility-Collaboration Card - GeeksforGeeks

Ein paar Tipps & Tricks

Damit das Ganze auch wirklich funktioniert, hier noch ein paar kleine Tipps:

  • Sei präzise. Vermeide vage Formulierungen. Statt "Kunde verwalten" lieber "Kundeninformationen aktualisieren" oder "Kundenkonto löschen".
  • Beschränke die Verantwortlichkeiten. Jede Klasse sollte nur wenige, klar definierte Aufgaben haben. Sonst wird's unübersichtlich.
  • Spiele den Code. Geht die Use Cases durch und simuliert, wie die Klassen interagieren. Wer fragt wen? Wer gibt wem welche Daten?
  • Sei kreativ! Es gibt keine Regeln in Stein gemeisselt. Probiert aus, was für euer Team am besten funktioniert.

Also, was sagst du? Klingt das nicht nach einer Methode, die du mal ausprobieren solltest? Vergiss nicht, das Ziel ist es, das Design vor dem Coden zu durchdenken. Und mit CRC Cards macht das sogar Spaß! (Fast zumindest. ;)

Viel Spaß beim Ausprobieren! Und denk dran: Der Kaffee geht auf mich!

Enrollment Marks) received Averrage to date Final | Chegg.com Flowchart of class responsibility collaboration model | Download Class Responsibility Collaborator Cards - auto-generated Personal Collaboration Card Template | Miroverse Class-Responsibility-Collaborator Card for Model component | Download Applying the concept of Class Responsibility Cards to microservice

You might also like →