Menu
Coddy logo textTech

Konstruktory nazwane

Część sekcji Programowanie obiektowe ścieżki Dart w Coddy. Lekcja 11 z 110.

Konstruktory nazwane pozwalają tworzyć wiele konstruktorów dla klasy, z których każdy ma opisową nazwę wyjaśniającą jego przeznaczenie. Jest to szczególnie przydatne, gdy potrzebujesz różnych sposobów inicjowania obiektu.

Składnia używa nazwy klasy, po której następuje kropka i nazwa konstruktora:

class Point {
  int x;
  int y;

  // Zwykły konstruktor
  Point(this.x, this.y);

  // Konstruktor nazwany dla punktu początkowego
  Point.origin() : x = 0, y = 0;

  // Konstruktor nazwany przyjmujący jedną wartość
  Point.diagonal(int value) : x = value, y = value;
}

Każdy nazwany konstruktor zapewnia przejrzysty i czytelny sposób tworzenia obiektów:

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)

Konstruktory nazwane sprawiają, że Twój kod jest bardziej czytelny. Zamiast zgadywać, co oznacza Point(0, 0), od razu widzisz, jaki jest cel Point.origin(). Ten wzorzec jest powszechny w bibliotekach Dart i pomaga tworzyć kod, który sam się dokumentuje.

challenge icon

Wyzwanie

Łatwy

Zbudujmy konwerter temperatur, który pokaże możliwości konstruktorów nazwanych. Utworzysz klasę Temperature, którą można inicjalizować na różne sposoby, zależnie od jednostki, od której zaczynasz.

Podzielisz swój kod na dwa pliki:

  • temperature.dart: Zdefiniuj klasę Temperature ze zmienną instancji double celsius. Twoja klasa powinna udostępniać trzy sposoby tworzenia temperatury:
    • Zwykły konstruktor Temperature(this.celsius), który bezpośrednio przyjmuje wartość w stopniach Celsjusza
    • Konstruktor nazwany Temperature.fromFahrenheit, który przyjmuje wartość w stopniach Fahrenheita i przelicza ją na stopnie Celsjusza za pomocą wzoru: (fahrenheit - 32) * 5 / 9
    • Konstruktor nazwany Temperature.freezing(), który tworzy temperaturę w punkcie zamarzania (0 stopni Celsjusza)
    Dodaj metodę display(), która wyświetla: [celsius]C
  • main.dart: Zaimportuj klasę temperatury i utwórz trzy obiekty temperatury:
    • Jeden przy użyciu zwykłego konstruktora z wartością 25.0
    • Jeden przy użyciu fromFahrenheit z wartością 98.6
    • Jeden przy użyciu freezing()
    Wywołaj display() dla każdej temperatury w podanej wyżej kolejności.

Oczekiwany format wyjścia:

25.0C
37.0C
0.0C

Spróbuj swoich sił

import 'temperature.dart';

void main() {
  // TODO: Utwórz obiekt Temperature za pomocą zwykłego konstruktora z wartością 25.0
  
  // TODO: Utwórz obiekt Temperature za pomocą fromFahrenheit z wartością 98.6
  
  // TODO: Utwórz obiekt Temperature za pomocą freezing()
  
  // TODO: Wywołaj display() dla każdej temperatury po kolei
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Programowanie obiektowe

Poćwicz samodzielnie: Kompilator Dart online