Ciao a tutti! Benvenuti alla settimana 6 del nostro viaggio nel mondo della programmazione Java. Dopo aver introdotto la Programmazione Orientata agli Oggetti (OOP) la settimana scorsa, questa settimana ci addentreremo in due concetti chiave dell’OOP: l’ereditarietà e il polimorfismo.
Ereditarietà
L’ereditarietà è uno dei pilastri della OOP. Permette a una classe di ereditare campi e metodi da un’altra classe. In Java, usiamo la parola chiave extends per denotare l’ereditarietà.
Esempio:
public class Veicolo {
int velocita;
void accelera() {
velocita++;
}
}
public class Automobile extends Veicolo {
int numeroDiPorte;
}
In questo esempio, la classe Automobile eredita il campo velocita e il metodo accelera() dalla classe Veicolo. Inoltre, aggiunge un nuovo campo, numeroDiPorte.
Polimorfismo
Il polimorfismo è un altro concetto chiave in OOP. Permette a un oggetto di assumere molte forme. In pratica, se una classe B eredita da una classe A, allora un oggetto di tipo B può essere trattato come un oggetto di tipo A.
Esempio:
Veicolo miaAuto = new Automobile();
miaAuto.accelera();
In questo esempio, creiamo un oggetto Automobile ma lo riferiamo con un riferimento di tipo Veicolo. Questo è possibile grazie al polimorfismo.
Esercizi È tempo di mettere in pratica i concetti di ereditarietà e polimorfismo:
Esercizio 1
Crea una classe Motocicletta che estende la classe Veicolo. Aggiungi un nuovo campo specifico per Motocicletta.
Esercizio 2
Crea un array di Veicolo e popolalo con diverse istanze di Automobile e Motocicletta. Scorri l’array e chiama il metodo accelera() su ogni veicolo.
Esercizio 3
Crea una classe VeicoloAereo che estende Veicolo e introduce una nuova proprietà, altitudine. Implementa un metodo decolla() che aumenta l’altitudine e un metodo atterra() che imposta l’altitudine a zero.
Esercizio 4
Estendi la classe VeicoloAereo con una nuova classe Elicottero. Aggiungi una nuova proprietà, numeroDiEliche. Implementa un metodo hover() che stampa un messaggio quando l’elicottero è in hover (cioè, sospeso in aria).
Esercizio 5
Crea un array di Veicolo che contiene istanze di Automobile, Motocicletta e Elicottero. Scorri l’array e chiama il metodo accelera() su ogni veicolo. Prova a chiamare il metodo decolla() e atterra() sugli oggetti VeicoloAereo.
Esercizio 6
Crea una classe VeicoloMarino che estende Veicolo. Aggiungi un metodo naviga() che stampa un messaggio quando il veicolo naviga.
Esercizio 7
Crea una classe Sottomarino che estende VeicoloMarino. Aggiungi un metodo immergiti() che stampa un messaggio quando il sottomarino si immerge sott’acqua. Crea un’istanza di Sottomarino e chiama i suoi metodi.
Spero che questi esercizi ti aiutino a consolidare la tua comprensione dell’ereditarietà e del polimorfismo in Java. Ricorda, la pratica è fondamentale quando si impara un nuovo linguaggio di programmazione. Buona programmazione!
Lascia un commento