Lektion 15 - Named Constructors & Enums
Objekte gezielt erzeugen und feste Auswahlwerte nutzen
Named Constructors geben Klassen mehrere sinnvolle Erzeugungswege. Enums beschreiben feste Auswahlwerte, zum Beispiel Status, Richtung oder Schwierigkeitsgrad.
1. Named Constructors
Ein normaler Konstruktor hat denselben Namen wie die Klasse. Ein Named Constructor bekommt einen zusaetzlichen Namen nach einem Punkt.
class User {
final String name;
final bool admin;
const User(this.name, this.admin);
const User.guest()
: name = 'Gast',
admin = false;
const User.admin(this.name)
: admin = true;
}
2. Warum Named Constructors?
Lesbarkeit
User.guest() sagt sofort, was erzeugt wird.
Standardwerte
Du kannst sinnvolle Defaults setzen.
Mehrere Wege
Eine Klasse kann verschiedene Startvarianten haben.
3. Enums
Ein Enum ist eine feste Liste erlaubter Werte. Dadurch vermeidest du Tippfehler in Strings und machst Entscheidungen sicherer.
enum TaskStatus {
open,
inProgress,
done,
}
final status = TaskStatus.done;
if (status == TaskStatus.done) {
print('Fertig');
}
4. Enum mit switch
switch passt gut zu Enums, weil alle Faelle klar bekannt sind.
String labelFor(TaskStatus status) {
switch (status) {
case TaskStatus.open:
return 'Offen';
case TaskStatus.inProgress:
return 'In Arbeit';
case TaskStatus.done:
return 'Fertig';
}
}
5. Aufgaben
- Erstelle eine Klasse
Productmit Named ConstructorProduct.free(). - Erstelle ein Enum
Difficultymiteasy,medium,hard. - Schreibe eine Funktion, die aus Difficulty einen deutschen Text macht.
- Schreibe eine kurze App-Planung, die je nach Difficulty andere Aufgaben zeigt.