Costruttori con nome
Fa parte della sezione Programmazione orientata agli oggetti del percorso Dart di Coddy. Lezione 11 di 110.
I costruttori con nome ti permettono di creare più costruttori per una classe, ciascuno con un nome descrittivo che ne chiarisce lo scopo. Questo è particolarmente utile quando hai bisogno di diversi modi per inizializzare un oggetto.
La sintassi usa il nome della classe seguito da un punto e dal nome del costruttore:
class Point {
int x;
int y;
// Costruttore standard
Point(this.x, this.y);
// Costruttore con nome per il punto di origine
Point.origin() : x = 0, y = 0;
// Costruttore con nome a partire da un singolo valore
Point.diagonal(int value) : x = value, y = value;
}Ogni costruttore con nome offre un modo chiaro e leggibile per creare oggetti:
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)I costruttori con nome rendono il tuo codice più espressivo. Invece di dover indovinare cosa significa Point(0, 0), Point.origin() comunica immediatamente l'intento. Questo schema è comune nelle librerie Dart e aiuta a creare codice autoesplicativo.
Sfida
FacileCostruiamo un convertitore di temperatura che mostra la potenza dei costruttori con nome. Creerai una classe Temperature che può essere inizializzata in modi diversi a seconda dell'unità di partenza.
Organizzerai il codice in due file:
temperature.dart: definisci una classeTemperaturecon una variabile di istanzadouble celsius. La classe deve fornire tre modi per creare una temperatura:- Un costruttore normale
Temperature(this.celsius)che accetta direttamente un valore in Celsius - Un costruttore con nome
Temperature.fromFahrenheitche accetta un valore in Fahrenheit e lo converte in Celsius usando la formula:(fahrenheit - 32) * 5 / 9 - Un costruttore con nome
Temperature.freezing()che crea una temperatura al punto di congelamento (0 gradi Celsius)
display()che stampa:[celsius]C- Un costruttore normale
main.dart: importa la classe delle temperature e crea tre oggetti temperatura:- Uno usando il costruttore normale con
25.0 - Uno usando
fromFahrenheitcon98.6 - Uno usando
freezing()
display()su ciascuna temperatura nell'ordine elencato sopra.- Uno usando il costruttore normale con
Formato dell'output previsto:
25.0C
37.0C
0.0CProvalo tu
import 'temperature.dart';
void main() {
// TODO: Crea un oggetto Temperature usando il costruttore standard con 25.0
// TODO: Crea un oggetto Temperature usando fromFahrenheit con 98.6
// TODO: Crea un oggetto Temperature usando freezing()
// TODO: Chiama display() su ogni oggetto Temperature nell'ordine previsto
}
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Programmazione orientata agli oggetti
1Fondamenti della programmazione orientata agli oggetti
File esterniLibrerie e importazioniIntroduzione alla programmazione orientata agli oggettiClassi e oggettiLa parola chiave thisMetodiVariabili di istanzaFondamenti dei costruttoriRiepilogo - Calcolatrice semplice4Sicurezza dei valori null
Introduzione alla sicurezza dei valori nullNullable e non nullableGli operatori ? e !La keyword late e la sicurezza dei valori nullOperatori null-awareSicurezza dei valori null nelle classiRiepilogo - Sistema di profili utente7Classi astratte e interfacce
Classi astratteMetodi astrattiInterfacce in DartInterfacce impliciteImplementare vs estendereInterfacce multipleRiepilogo - Calcolatore di forme10Collezioni e generici
Panoramica di List, Set e MapCollezioni sicure rispetto ai tipiClassi genericheMetodi genericiVincoli sui genericiIterable e IteratorRiepilogo - Archiviazione generica13Concetti avanzati di OOP
Composizione vs ereditarietàMetodi di estensioneClassi chiamabiliClassi sealed (Dart 3)Record (Dart 3)Pattern e matching (3.0)Enum con metodi16Progetto: Gestione della biblioteca
Panoramica del progettoClassi Libro e Utente2I costruttori in Dart
Costruttore predefinitoCostruttori con nomeListe di inizializzazioneCostruttori costantiCostruttori factoryCostruttori di reindirizzamentoRiepilogo - Crea forme5Incapsulamento
Membri pubblici e privatiConvenzione del prefisso _Visibilità a livello di libreriaApprofondimento su getter e setterNascondimento delle informazioniRiepilogo - Registri degli studenti8Mixin
Introduzione ai MixinCreare MixinUsare più MixinParola chiave on nei MixinMixin vs ereditarietàMixin vs interfacciaRiepilogo - Sistema animale11Metodi speciali
Sovrascrittura di toString()Sovrascrittura di hashCode e ==Interfaccia ComparableMetodo call()Sovrascrittura di noSuchMethodRiepilogo - Collezione personalizzata14Modelli di progettazione Parte 1
Introduzione ai modelli di progettazioneSingletonFactoryObserverStrategy3Proprietà delle classi
Membri di istanza e staticiCampi final e constVariabili lateMetodi e campi staticiGetter e setterRiepilogo - Gestore di conti bancari6Ereditarietà
Ereditarietà di baseLa parola chiave superOverride dei metodiL’annotazione @overrideLa parola chiave final per le classiCostruttori ed ereditarietàRiepilogo - Gerarchia dei dipendenti9Polimorfismo
Fondamenti di polimorfismoPolimorfismo tramite interfacceControllo del tipo a runtimeGli operatori is e asParola chiave covariantRiepilogo - Elaboratore di pagamenti12OOP asincrona
Future e async/awaitNozioni di base sugli streamController degli streamCostruttori asincroniAsync nei metodi di classeRiepilogo - Recupero dei dati15Pattern di progettazione Parte 2
Pattern CommandPattern AdapterPattern DecoratorPattern Template MethodPattern StatePattern CompositePattern RepositoryEsercitati da solo: Compilatore Dart online