Settimana 6 – Sprofondiamo nell’OOP: Ereditarietà e Polimorfismo

,

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

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