Menu
CoddyTech

Grundlagen von Konstruktoren

Teil des Abschnitts Objektorientierte Programmierung der Dart-Journey von Coddy. Lektion 8 von 110.

Ein Konstruktor ist eine spezielle Methode, die automatisch ausgeführt wird, wenn du ein neues Objekt erstellst. Sie initialisiert die Instanzvariablen des Objekts genau im Moment seiner Erstellung.

Hier ist ein Beispiel für eine Klasse mit einem Konstruktor:

class Dog {
  late String name; // late: wird im Konstruktorrumpf gesetzt
  late String breed;

  Dog(String name, String breed) {
    this.name = name;
    this.breed = breed;
  }
}

Der Konstruktor hat denselben Namen wie die Klasse. Beim Erstellen des Objekts werden Parameter übergeben.

Erstelle Objekte, indem du Argumente an den Konstruktor übergibst:

Dog rex = Dog('Rex', 'German Shepherd');
Dog buddy = Dog('Buddy', 'Golden Retriever');

Greife auf die vom Konstruktor festgelegten Variablen zu:

print(rex.name);
print(rex.breed);
print(buddy.name);
print(buddy.breed);

Ausgabe:

Rex
German Shepherd
Buddy
Golden Retriever

Dart bietet außerdem eine Kurzschreibweise für Konstruktoren, bei der this.variableName direkt in der Parameterliste verwendet wird:

class Dog {
  String name;
  String breed;

  // Kurzschreibweise: Weist Parameter automatisch Instanzvariablen zu
  Dog(this.name, this.breed);
}

Beide Versionen erzeugen dasselbe Ergebnis. Die Kurzschreibweise ist eine beliebte Dart-Funktion, durch die du this.name = name nicht manuell schreiben musst.

Du kannst auch Standardwerte für Parameter hinzufügen:

class Cat {
  String name;
  int age;

  Cat(this.name, [this.age = 1]); // age ist standardmäßig 1
}

Cat fluffy = Cat('Fluffy', 3);
Cat whiskers = Cat('Whiskers'); // age ist standardmäßig 1

print('${fluffy.name} is ${fluffy.age}');    // Fluffy ist 3
print('${whiskers.name} is ${whiskers.age}'); // Whiskers ist 1

Wichtiger Punkt: Konstruktoren sorgen dafür, dass jedes Objekt zum Zeitpunkt seiner Erstellung ordnungsgemäß mit Daten initialisiert wird, sodass du Variablen nicht anschließend manuell setzen musst.

challenge icon

Aufgabe

Einfach

Dir werden Dart-Dateien (book.dart und driver.dart) bereitgestellt, um ein Buchsystem zu implementieren.

Deine Aufgaben:

  • Vervollständige die Klasse Book in book.dart, indem du einen Konstruktor hinzufügst, der title, author und pages initialisiert: Verwende die Dart-Kurzschreibweise Book(this.title, this.author, this.pages);
  • Erstelle in driver.dart ein Book-Objekt für 'Harry Potter' von 'J.K. Rowling' mit 400 Seiten

Folge den TODO-Kommentaren in jeder Datei.

Probier es selbst

import 'book.dart';

void main() {
  // TODO: Erstelle ein Book-Objekt mit:
  // title: 'Harry Potter', author: 'J.K. Rowling', pages: 400
  Book myBook = ?;

  print("'${myBook.title}' by ${myBook.author}, ${myBook.pages} pages");
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Objektorientierte Programmierung

Übe selbstständig: Online-Dart-Compiler