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.