Menu
Coddy logo textTech

Costruttori costanti

Fa parte della sezione Programmazione orientata agli oggetti del percorso Dart di Coddy. Lezione 13 di 110.

Un costruttore costante crea oggetti costanti in fase di compilazione. Quando crei oggetti con gli stessi valori usando un costruttore const, Dart riutilizza la stessa istanza in memoria, migliorando le prestazioni.

Per creare un costruttore costante, aggiungi la parola chiave const prima del nome del costruttore e assicurati che tutte le variabili di istanza siano final:

class Color {
  final int red;
  final int green;
  final int blue;

  const Color(this.red, this.green, this.blue);
}

const white = Color(255, 255, 255);
const alsoWhite = Color(255, 255, 255);

print(identical(white, alsoWhite)); // true

Sia white sia alsoWhite puntano esattamente allo stesso oggetto in memoria, perché sono stati creati con valori identici usando un costruttore costante.

Puoi anche usare costruttori const senza la parola chiave const, creando così istanze normali (non costanti):

var red = Color(255, 0, 0);       // Istanza normale
const blue = Color(0, 0, 255);    // Istanza costante

I costruttori costanti sono comunemente usati per oggetti di configurazione immutabili, valori predefiniti come colori o dimensioni e in tutti i casi in cui vuoi garantire l’immutabilità degli oggetti ottimizzando l’uso della memoria.

challenge icon

Sfida

Facile

Costruiamo un sistema di configurazione per un semplice gioco che usa costruttori costanti per definire impostazioni immutabili e riutilizzabili.

Creerai due file per organizzare il codice:

  • difficulty.dart: definisci una classe Difficulty che rappresenta le impostazioni di difficoltà del gioco. La classe dovrebbe avere:
    • Tre campi final: name (String), enemyCount (int) e playerLives (int)
    • Un costruttore costante che inizializza tutti e tre i campi
    • Un metodo display() che stampa le informazioni sulla difficoltà
  • main.dart: importa la classe della difficoltà e crea tre preset costanti di difficoltà:
    • easy con nome 'Easy', 5 nemici e 5 vite
    • medium con nome 'Medium', 10 nemici e 3 vite
    • hard con nome 'Hard', 20 nemici e 1 vita
    Creali tutti e tre come costanti valutate in fase di compilazione usando la parola chiave const. Poi chiama display() su ciascuno, nell'ordine indicato sopra. Infine, verifica se due oggetti const Difficulty('Easy', 5, 5) sono identici usando identical() e stampa il risultato.

Il metodo display() dovrebbe stampare nel seguente formato esatto:

[name]: [enemyCount] enemies, [playerLives] lives

Output previsto:

Easy: 5 enemies, 5 lives
Medium: 10 enemies, 3 lives
Hard: 20 enemies, 1 lives
true
REQUIRED OUTPUT FORMAT:

Provalo tu

import 'difficulty.dart';

void main() {
  // TODO: Crea tre configurazioni predefinite di difficoltà costanti usando la parola chiave const:
  // - easy: nome 'Easy', 5 enemies, 5 lives
  // - medium: nome 'Medium', 10 enemies, 3 lives
  // - hard: nome 'Hard', 20 nemici, 1 vita
  
  // TODO: Chiama display() per ogni difficoltà nell'ordine: easy, medium, hard
  
  // TODO: Verifica se due oggetti const Difficulty('Easy', 5, 5) sono identici
  // usando identical() e stampa il risultato
}
quiz iconMettiti alla prova

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

Esercitati da solo: Compilatore Dart online