Menu
Coddy logo textTech

Benannte Konstruktoren

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

Benannte Konstruktoren ermöglichen es Ihnen, mehrere Konstruktoren für eine Klasse zu erstellen, jeder mit einem beschreibenden Namen, der seinen Zweck verdeutlicht. Dies ist besonders nützlich, wenn Sie verschiedene Möglichkeiten benötigen, um ein Objekt zu initialisieren.

Die Syntax verwendet den Klassennamen, gefolgt von einem Punkt und dem Konstruktornamen:

class Point {
  int x;
  int y;

  // Regulärer Konstruktor
  Point(this.x, this.y);

  // Benannter Konstruktor für den Ursprungspunkt
  Point.origin() : x = 0, y = 0;

  // Benannter Konstruktor aus einem einzelnen Wert
  Point.diagonal(int value) : x = value, y = value;
}

Jeder benannte Konstruktor bietet eine klare, lesbare Möglichkeit, Objekte zu erstellen:

Point p1 = Point(3, 5);
Point p2 = Point.origin();
Point p3 = Point.diagonal(10);

print('p1: (${p1.x}, ${p1.y})'); // p1: (3, 5)
print('p2: (${p2.x}, ${p2.y})'); // p2: (0, 0)
print('p3: (${p3.x}, ${p3.y})'); // p3: (10, 10)

Benannte Konstruktoren machen Ihren Code ausdrucksstärker. Anstatt zu raten, was Point(0, 0) bedeutet, kommuniziert Point.origin() sofort die Absicht. Dieses Muster ist in Dart-Bibliotheken weit verbreitet und hilft dabei, selbstdokumentierenden Code zu erstellen.

challenge icon

Aufgabe

Einfach

Lassen Sie uns einen Temperaturkonverter bauen, der die Leistungsfähigkeit von benannten Konstruktoren (Named Constructors) demonstriert. Sie werden eine Temperature-Klasse erstellen, die auf verschiedene Arten initialisiert werden kann, je nachdem, mit welcher Einheit Sie beginnen.

Sie werden Ihren Code in zwei Dateien organisieren:

  • temperature.dart: Definieren Sie eine Temperature-Klasse mit einer double celsius Instanzvariable. Ihre Klasse sollte drei Möglichkeiten bieten, eine Temperatur zu erstellen:
    • Einen regulären Konstruktor Temperature(this.celsius), der einen Celsius-Wert direkt entgegennimmt
    • Einen benannten Konstruktor Temperature.fromFahrenheit, der einen Fahrenheit-Wert akzeptiert und ihn mit der Formel (fahrenheit - 32) * 5 / 9 in Celsius umrechnet
    • Einen benannten Konstruktor Temperature.freezing(), der eine Temperatur am Gefrierpunkt (0 Grad Celsius) erstellt
    Fügen Sie eine display()-Methode hinzu, die Folgendes ausgibt: [celsius]C
  • main.dart: Importieren Sie Ihre Temperatur-Klasse und erstellen Sie drei Temperatur-Objekte:
    • Eines unter Verwendung des regulären Konstruktors mit 25.0
    • Eines unter Verwendung von fromFahrenheit mit 98.6
    • Eines unter Verwendung von freezing()
    Rufen Sie display() für jede Temperatur in der oben aufgeführten Reihenfolge auf.

Erwartetes Ausgabeformat:

25.0C
37.0C
0.0C

Spickzettel

Benannte Konstruktoren ermöglichen es Ihnen, mehrere Konstruktoren für eine Klasse mit beschreibenden Namen zu erstellen, die ihren Zweck verdeutlichen.

Die Syntax verwendet den Klassennamen gefolgt von einem Punkt und dem Konstruktornamen:

class Point {
  int x;
  int y;

  // Regulärer Konstruktor
  Point(this.x, this.y);

  // Benannter Konstruktor für den Ursprungspunkt
  Point.origin() : x = 0, y = 0;

  // Benannter Konstruktor aus einem einzelnen Wert
  Point.diagonal(int value) : x = value, y = value;
}

Verwendung von benannten Konstruktoren:

Point p1 = Point(3, 5);
Point p2 = Point.origin();
Point p3 = Point.diagonal(10);

print('p1: (${p1.x}, ${p1.y})'); // p1: (3, 5)
print('p2: (${p2.x}, ${p2.y})'); // p2: (0, 0)
print('p3: (${p3.x}, ${p3.y})'); // p3: (10, 10)

Benannte Konstruktoren machen den Code ausdrucksstärker und selbstdokumentierend, indem sie die Absicht klar kommunizieren.

Probier es selbst

import 'temperature.dart';

void main() {
  // TODO: Erstelle eine Temperature mit dem regulären Konstruktor mit 25.0
  
  // TODO: Erstelle eine Temperature mit fromFahrenheit mit 98.6
  
  // TODO: Erstelle eine Temperature mit freezing()
  
  // TODO: Rufe display() für jede Temperatur in der richtigen Reihenfolge auf
}
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