Menu
Coddy logo textTech

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.

challenge icon

Sfida

Facile

Costruiamo 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 classe Temperature con una variabile di istanza double 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.fromFahrenheit che 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)
    Aggiungi un metodo display() che stampa: [celsius]C
  • main.dart: importa la classe delle temperature e crea tre oggetti temperatura:
    • Uno usando il costruttore normale con 25.0
    • Uno usando fromFahrenheit con 98.6
    • Uno usando freezing()
    Chiama display() su ciascuna temperatura nell'ordine elencato sopra.

Formato dell'output previsto:

25.0C
37.0C
0.0C

Provalo 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
}
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