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.
Wyzwanie
ŁatwyZbudujmy 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ęTemperatureze zmienną instancjidouble 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)
display(), która wyświetla:[celsius]C- Zwykły konstruktor
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
fromFahrenheitz wartością98.6 - Jeden przy użyciu
freezing()
display()dla każdej temperatury w podanej wyżej kolejności.- Jeden przy użyciu zwykłego konstruktora z wartością
Oczekiwany format wyjścia:
25.0C
37.0C
0.0CSpró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
}
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Programowanie obiektowe
1Podstawy OOP
Pliki zewnętrzneBiblioteki i importyWprowadzenie do OOPKlasy a obiektySłowo kluczowe thisMetodyZmienne instancjiPodstawy konstruktorówPowtórka – prosty kalkulator4Bezpieczeństwo wartości null
Wprowadzenie do bezpieczeństwa wartości nullTypy dopuszczające null i niedopuszczające nullOperatory ? i !Słowo kluczowe late a bezpieczeństwo wartości nullOperatory uwzględniające nullBezpieczeństwo wartości null w klasachPodsumowanie — system profili użytkowników7Klasy abstrakcyjne i interfejsy
Klasy abstrakcyjneMetody abstrakcyjneInterfejsy w DartInterfejsy niejawneImplementowanie a rozszerzanieWiele interfejsówPowtórka — kalkulator kształtów10Kolekcje i typy generyczne
Przegląd List, Set i MapKolekcje bezpieczne typowoKlasy generyczneMetody generyczneOgraniczenia typów generycznychIterable i IteratorPowtórka — generyczne przechowywanie danych13Zaawansowane koncepcje OOP
Kompozycja a dziedziczenieMetody rozszerzająceKlasy wywoływalneKlasy zapieczętowane (Dart 3)Rekordy (Dart 3)Wzorce i dopasowywanie (3.0)Typy wyliczeniowe z metodami16Projekt: Zarządzanie biblioteką
Omówienie projektuKlasy książek i użytkowników2Konstruktory w Dart
Konstruktor domyślnyKonstruktory nazwaneListy inicjalizująceKonstruktory stałeKonstruktory fabryczneKonstruktory przekierowującePodsumowanie — budowanie kształtów5Hermetyzacja
Elementy publiczne a prywatneKonwencja prefiksu _Prywatność na poziomie bibliotekiGettery i settery — szczegółowoUkrywanie informacjiPodsumowanie — dane uczniów8Domieszki
Wprowadzenie do domieszekTworzenie domieszekKorzystanie z wielu domieszekSłowo kluczowe on w domieszkachDomieszka a dziedziczenieDomieszka a interfejsPodsumowanie – system zwierząt11Metody specjalne
Nadpisanie toString()Nadpisanie hashCode i ==Interfejs ComparableMetoda call()Nadpisanie noSuchMethodPodsumowanie — własna kolekcja14Wzorce projektowe, część 1
Wprowadzenie do wzorców projektowychWzorzec SingletonWzorzec FactoryWzorzec ObserverWzorzec Strategy3Właściwości klas
Elementy instancji a elementy statycznePola final i constZmienne inicjalizowane z opóźnieniemMetody i pola statyczneGettery i setteryPowtórzenie – menedżer kont bankowych6Dziedziczenie
Podstawy dziedziczeniaSłowo kluczowe superPrzesłanianie metodAdnotacja @overrideSłowo kluczowe final dla klasKonstruktory i dziedziczeniePowtórzenie – hierarchia pracowników9Polimorfizm
Podstawy polimorfizmuPolimorfizm za pomocą interfejsówSprawdzanie typu w czasie działaniaOperatory is i asSłowo kluczowe covariantPodsumowanie — procesor płatnościPoćwicz samodzielnie: Kompilator Dart online