Fondamenti dei costruttori
Fa parte della sezione Programmazione orientata agli oggetti del percorso Dart di Coddy. Lezione 8 di 110.
Un costruttore è un metodo speciale che viene eseguito automaticamente quando crei un nuovo oggetto. Inizializza le variabili di istanza dell'oggetto nel momento stesso della sua creazione.
Ecco un esempio di una classe con un costruttore:
class Dog {
String name;
String breed;
Dog(String name, String breed) {
this.name = name;
this.breed = breed;
}
}Il costruttore ha lo stesso nome della classe. I parametri vengono passati quando si crea l'oggetto.
Crea oggetti passando argomenti al costruttore:
Dog rex = Dog('Rex', 'German Shepherd');
Dog buddy = Dog('Buddy', 'Golden Retriever');Accedi alle variabili impostate dal costruttore:
print(rex.name);
print(rex.breed);
print(buddy.name);
print(buddy.breed);Output:
Rex
German Shepherd
Buddy
Golden RetrieverDart offre anche una sintassi abbreviata per i costruttori, che usa direttamente this.variableName nell'elenco dei parametri:
class Dog {
String name;
String breed;
// Forma abbreviata: assegna automaticamente i parametri alle variabili di istanza
Dog(this.name, this.breed);
}Entrambe le versioni producono lo stesso risultato. La sintassi abbreviata è una funzionalità molto diffusa di Dart che evita di dover scrivere manualmente this.name = name.
Puoi anche aggiungere valori predefiniti ai parametri:
class Cat {
String name;
int age;
Cat(this.name, [this.age = 1]); // age ha come valore predefinito 1
}
Cat fluffy = Cat('Fluffy', 3);
Cat whiskers = Cat('Whiskers'); // age ha come valore predefinito 1
print('${fluffy.name} is ${fluffy.age}'); // Fluffy ha 3 anni
print('${whiskers.name} is ${whiskers.age}'); // Whiskers ha 1 annoPunto chiave: i costruttori assicurano che ogni oggetto venga inizializzato correttamente con i dati nel momento in cui viene creato, evitando di dover impostare manualmente le variabili in seguito.
Sfida
FacileTi vengono forniti dei file PHP (book.dart e driver.dart) per implementare un sistema di libri.
I tuoi compiti:
- Completa la classe
Bookinbook.dartaggiungendo un costruttore che inizializzititle,authorepages: usa la sintassi abbreviata di DartBook(this.title, this.author, this.pages); - In
driver.dart, crea un oggettoBookper'Harry Potter'di'J.K. Rowling'con400pagine
Segui i commenti TODO in ciascun file.
Provalo tu
import 'book.dart';
void main() {
// TODO: Crea un oggetto Book con:
// title: 'Harry Potter', author: 'J.K. Rowling', pages: 400
Book myBook = ?;
print("'${myBook.title}' by ${myBook.author}, ${myBook.pages} pages");
}
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