Dart – Classi

Il concetto di classe è quello tradizionale con il concetto di metodi ed oggetti.

Il metodo è associato al concetto di funzione, l’oggetto è collegato con il concetto di variabile.

Ecco un esempio:

class Persona {
  // Attributi (variabili di istanza)
  String nome;
  int eta;

  // Costruttore
  Persona(this.nome, this.eta);

  // Metodo della classe
  void saluta() {
    print("Ciao, mi chiamo $nome e ho $eta anni.");
  }
}

void main() {
  // Creazione di un oggetto di tipo Persona
  Persona p = Persona("Francesco", 35);

  // Chiamata al metodo dell'oggetto
  p.saluta();  // Output: Ciao, mi chiamo Francesco e ho 35 anni.
}

Ecco un esempio con metodo ed attributo:

class Auto {
  // Attributo
  String marca;

  // Costruttore
  Auto(this.marca);

  // Metodo
  void accendiMotore() {
    print("L'auto $marca è accesa!");
  }
}

void main() {
  // Creazione di un oggetto della classe Auto
  var miaAuto = Auto("Fiat");

  // Uso dell’attributo
  print("La mia auto è una ${miaAuto.marca}");

  // Chiamata del metodo
  miaAuto.accendiMotore();
}

Prima di passare al concetto di ereditarietà voglio evidenziare che se il concetto di costruttore esiste, non esiste il concetto di distruttore.

Vi è il concetto di garbage collection ossia della liberazione della memoria attraverso un processo aleatorio.

Ecco una tabella per confrontare linguaggi, tempo di sviluppo, Performance e gestione della memoria.

ProgrammaSviluppoPerformanceMemoria
Dartmolto rapidosufficiente meno intuitivo per calcolo intensivoGC
KotlinbuonobuonaGC
JavabuonobuonaGC
C#buonabuonaGC
Rustcomplessomolto buonaOwnership

La mia riflessione porta ad affermare che, per favorire la velocità di sviluppo, non si pone più l’attenzione verso l’uso della memoria che viene alla fine usata dai singoli dispositivi mobili.

Esempio di ereditarietà fondamentale poi per apprendere le estensioni delle classi in Flutter:

// Classe base
class Persona {
  String nome;
  int eta;

  Persona(this.nome, this.eta);

  void saluta() {
    print("Ciao, mi chiamo $nome e ho $eta anni.");
  }
}

// Classe derivata che estende Persona
class Studente extends Persona {
  String corsoDiStudi;

  // Costruttore della classe derivata che chiama il costruttore base
  Studente(String nome, int eta, this.corsoDiStudi) : super(nome, eta);

  // Metodo aggiuntivo
  void studia() {
    print("$nome sta studiando $corsoDiStudi.");
  }

Questa voce è stata pubblicata in Senza categoria. Contrassegna il permalink.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *