Sobes.tech
Junior

Quali aspetti della programmazione orientata agli oggetti sono presenti nel linguaggio Dart?

sobes.tech AI

Risposta dell'AI

In Dart, ci sono i seguenti aspetti della OOP:

  • Classi e oggetti: La possibilità di definire classi con campi e metodi, creare istanze di classi (oggetti).
  • Incapsulamento: Nascondere i dettagli di implementazione tramite modificatori di accesso (_ per membri privati) e metodi getter/setter.
  • Ereditarietà: Estendere le funzionalità di classi esistenti usando la parola chiave extends.
  • Polimorfismo: La capacità di trattare oggetti di classi diverse in modo uniforme tramite un'interfaccia comune o una classe base.
  • Astrazione: Creare classi astratte e interfacce per definire contratti.

Esempio di una classe in Dart:

class Animal {
  String _name; // Campo privato

  Animal(this._name); // Costruttore

  String get name => _name; // Getter

  void makeSound() {
    print('Suono generico di animale'); // Metodo
  }
}

Esempio di ereditarietà:

class Dog extends Animal {
  Dog(String name) : super(name); // Chiamata al costruttore della classe base

  @override // Sovrascrittura del metodo della classe base
  void makeSound() {
    print('Bau!');
  }
}

Esempio di polimorfismo:

void makeAnimalSound(Animal animal) {
  animal.makeSound(); // Chiamata al metodo makeSound(), che può essere diverso per diversi tipi di Animal
}

// Uso:
// makeAnimalSound(Dog('Buddy')); // Mostrerà "Bau!"

Dart supporta anche i mixin usando la parola chiave with, che permette di riutilizzare il codice delle classi senza ereditarietà diretta.