🏗️ Lehrpfad 2: Modernes OOP, Records & Interfaces

C# 05: Klassen, Properties & Primary Constructors

Baue moderne Objektmodelle mit C# 12: Primary Constructors für Klassen, Auto-Properties und schreibgeschützte { get; init; } Eigenschaften.

📂 Dateien dieser Lerneinheit:
📄 Aufgabe.cs (Startercode) 🧪 TestAufgabe.cs (Tests) 💡 Musterloesung.cs (Lösung) 📖 README.md

💡 1. C# 12 Primary Constructors & Properties

Klassen definieren in C# 12 ihre Konstruktorparameter direkt in der Klassensignatur. Das spart endlose Zuweisungszeilen:

// Primary Constructor in C# 12:
public class BankAccount(string iban, decimal initialBalance = 0m) {
    public string Iban { get; } = iban;
    public decimal Balance { get; private set; } = initialBalance;
    public DateTime CreatedAt { get; init; } = DateTime.UtcNow;

    public void Deposit(decimal amount) {
        if (amount <= 0) throw new ArgumentException("Betrag muss positiv sein");
        Balance += amount;
    }
}

// Instanziierung:
var konto = new BankAccount("DE123456789", 1000m) {
    CreatedAt = DateTime.UtcNow
};
🏗️ Didaktische Analogie: Der Fertigbaukasten

Früher musste man für jede Tür und jedes Fenster ein separates Formular ausfüllen. Mit Primary Constructors lieferst du die Maße direkt bei der Bestellung an und das Gebäude steht sofort!

⚡ 2. Quick-Cheat-Sheet

Property AccessorLesenSchreibenEinsatzzweck
{ get; set; }ÖffentlichJederzeit öffentlichVoll veränderbare Eigenschaft
{ get; private set; }ÖffentlichNur innerhalb der KlasseGekapselter Zustand
{ get; init; }ÖffentlichNur bei Objekt-ErstellungUnveränderlich nach Initialisierung
{ get; }ÖffentlichNur im KonstruktorStrikte Read-Only-Property

⚠️ 3. Häufige Stolperfallen (Gotchas & Anti-Patterns)

⚠️ Mutation nach init

Versucht man nach der Konstruktion konto.CreatedAt = neu; zu schreiben, meldet der Compiler sofort einen Fehler.

⚠️ Primary Constructor Parameter Mutation

Die Parameter eines Primary Constructors bei Klassen sind nicht automatisch schreibgeschützt, sondern verhalten sich wie mutable Felder!

🧠 4. Diagnostischer Selbst-Check

Überprüfe dein Verständnis von Sprach-Features, Speicherverwaltung und Enterprise-Architektur, bevor du den Code in der Web-IDE schreibst.

🎯 5. Aufgaben & Checkliste in Aufgabe.cs

💻 In Web-IDE öffnen & lösen →