edutecnica

Esercizio 4        

Definisci l'oggetto Strumento dotato di un metodo suona() atto ad esternalizzare il suono di uno strumento musicale.
Successivamente ottenere gli oggetti derivati Tamburo, Chitarra e Tromba, ciascuno dotato di un suo specifico suono che possa essere usato dal metodo suona definito per l'oggetto Strumento.

In base alle semplici nozioni viste nella parte teorica è relativamente semplice realizzare un breve scritto che soddisfi la richiesta .


La semplicità della soluzione, mette in evidenza la praticità di JS nell'approccio ai vari problemi per la gestione di gerarchie di oggetti .

Usando il linguaggio Java avremmo dovuto definire una interfaccia per ottenere lo stesso risultato:

class Test { public static void main(String[] args) {
Strumento lista[]=new Strumento[5];
lista[0]=new Tromba();
lista[1]=new Tamburo();
lista[2]=new Chitarra();
lista[3]=new Tromba();
lista[4]=new Chitarra();
for (int i=0;i<lista.length;i++)lista[i].produciSuono();
}
}
interface Strumento {
public void produciSuono(); }

class Chitarra implements Strumento {
public void produciSuono() {System.out.println("dlen-dlen-dlen");}
}

class Tamburo implements Strumento {
public void produciSuono() {System.out.println("bum-bum-bum");}
}

class Tromba implements Strumento {
public void produciSuono() { System.out.println("ta ta ta"); }
}

Ricordiamo che un'interfaccia è
• È un'unità di programmazione definita da un certo numero di metodi d'istanza pubblici che sono implicitamente astratti
• È un contenitore di metodi astratti, non contiene variabili istanza
• La classe che implementa un'interfaccia deve implementare tutti i metodi d'istanza definiti nell'interfaccia, altrimenti diventa astratta
• In Java viene definita con la parola riservata interface