Variabili di istanza
Fa parte della sezione Programmazione orientata agli oggetti del percorso Dart di Coddy. Lezione 7 di 110.
Le variabili di istanza sono variabili dichiarate all'interno di una classe. Ogni oggetto creato a partire dalla classe ottiene una propria copia di queste variabili, indipendente da tutti gli altri oggetti.
Dichiara le variabili di istanza con un tipo e un valore predefinito facoltativo:
class Student {
String school = 'Dart Academy'; // ha un valore predefinito
String name = ''; // valore predefinito vuoto
int age = 0; // valore predefinito pari a zero
}Le variabili con valori predefiniti iniziano con lo stesso valore per ogni nuovo oggetto. Variabili come name e age iniziano vuote o a zero finché non le imposti.
Usa un metodo con this per impostare i singoli dati dell’oggetto:
class Student {
String school = 'Dart Academy';
String name = '';
int age = 0;
void setInfo(String name, int age) {
this.name = name; // this.name = variabile di istanza
this.age = age; // this.age = variabile di istanza
}
}Crea degli studenti e assegna i loro dati:
Student student1 = Student();
Student student2 = Student();
student1.setInfo('Alice', 20);
student2.setInfo('Bob', 22);Accedi alle variabili di istanza usando l’operatore punto:
print('${student1.name} is ${student1.age} at ${student1.school}');
print('${student2.name} is ${student2.age} at ${student2.school}');Output:
Alice is 20 at Dart Academy
Bob is 22 at Dart AcademyNota che school è uguale per entrambi gli oggetti perché ha un valore predefinito, mentre name e age sono unici per ciascun oggetto perché sono stati impostati individualmente tramite setInfo.
Sfida
FacileCompleta la classe Student in student.dart:
- Dichiara una variabile di istanza
String schoolcon il valore predefinito'Dart Academy' - Dichiara una variabile di istanza
String namecon il valore predefinito'' - Dichiara una variabile di istanza
int agecon il valore predefinito0 - Aggiungi un metodo
setInfoche accettaString nameeint agecome parametri e li imposta sull'oggetto usandothis
Il file driver.dart verificherà la tua classe creando due studenti e stampando le loro informazioni (bloccato).
Provalo tu
import 'student.dart';
void main() {
Student student1 = Student();
Student student2 = Student();
student1.setInfo('Alice', 20);
student2.setInfo('Bob', 22);
print('${student1.name} is ${student1.age} at ${student1.school}');
print('${student2.name} is ${student2.age} at ${student2.school}');
}
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