Dart Kurs Weiter zu Getter & Setter

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

  1. Erstelle eine Klasse Product mit Named Constructor Product.free().
  2. Erstelle ein Enum Difficulty mit easy, medium, hard.
  3. Schreibe eine Funktion, die aus Difficulty einen deutschen Text macht.
  4. Schreibe eine kurze App-Planung, die je nach Difficulty andere Aufgaben zeigt.
Weiter zu Getter & Setter