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

Lass uns einen Temperaturkonverter erstellen, der die Leistungsfähigkeit benannter Konstruktoren veranschaulicht. Du erstellst eine Temperature-Klasse, die je nach Ausgangseinheit auf unterschiedliche Weise initialisiert werden kann.

Du organisierst deinen Code in zwei Dateien:

  • temperature.dart: Definiere eine Temperature-Klasse mit einer double celsius-Instanzvariable. Deine Klasse sollte drei Möglichkeiten bieten, eine Temperatur zu erstellen:
    • Einen regulären Konstruktor Temperature(this.celsius), der direkt einen Celsius-Wert übernimmt
    • Einen benannten Konstruktor Temperature.fromFahrenheit, der einen Fahrenheit-Wert übernimmt und ihn mithilfe der Formel (fahrenheit - 32) * 5 / 9 in Celsius umrechnet
    • Einen benannten Konstruktor Temperature.freezing(), der eine Temperatur am Gefrierpunkt (0 Grad Celsius) erstellt
    Füge eine display()-Methode hinzu, die Folgendes ausgibt: [celsius]C
  • main.dart: Importiere deine Temperaturklasse und erstelle drei Temperaturobjekte:
    • Eines mit dem regulären Konstruktor und 25.0
    • Eines mit fromFahrenheit und 98.6
    • Eines mit freezing()
    Rufe display() für jede Temperatur in der oben aufgeführten Reihenfolge auf.

Erwartetes Ausgabeformat:

25.0C
37.0C
0.0C

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

Übe selbstständig: Online-Dart-Compiler