Creare una semplice interfaccia in Java






Tramite l'utilizzo di un'interfaccia in Java è possibile ottenere una migliore semplicità e chiarezza di programmazione, oltre che una strutturazione più logica del programma stesso.


L'utilizzo di un'interfaccia presuppone la padronanza di alcuni strumenti di programmazione. In particolare è importante tenere presente come in Java tutto sia rappresentabile come un oggetto. Facciamo quindi una breve premessa...


Oggetti e classi


Si intende per oggetto un insieme specifico di dati e di funzioni, dette metodi, utili per l'accesso e l'elaborazione dei dati stessi. Ad esempio, per rappresentare un certo libro come un oggetto potrei utilizzare come dati il titolo, la casa editrice, l'autore, il codice ISBN.


Un insieme di oggetti simili (con gli stessi dati e metodi, ad esempio l'insieme dei libri) viene rappresentato all'interno di un programma come una classe e i singoli oggetti vengono chiamati anche istanze di classe.


Immaginiamo ora un contesto diverso, ad esempio di produzione grafica di immagini. Sarà opportuno definire alcune classi associate a particolari figure geometriche, come quadrato e triangolo, per poter poi disegnare tali figure sullo schermo.


public class Triangolo
{
    //Dati

    //Le lunghezze dei lati
    int lato1;
    int lato2;
    int lato3;
    //Le ampiezze degli angoli
    int angolo12;
    int angolo 13;
    int angolo 23;
   
    //Metodi
    ...
    void calcola_perimetro();
    void calcola_area();
    void disegna();   
}

public class Quadrato
{
    //Dati

    //La lunghezza del lato
    int lato;
   
    //Metodi
    ...
    void calcola_perimetro();
    void calcola_area();
    void disegna();   
}


Osserviamo come, nonostante le classi rappresentino forme diverse, abbiano alcuni metodi in comune (calcola_perimetro(), calcola_area(), disegna()). Infatti, logicamente, tali metodi non sono legati ad una specifica forma geometrica, ma al concetto più generale di forma geometrica.



Come conseguenza di tale fatto si ha, all'interno delle diverse classi che rappresentano forme geometriche (come ad esempio Triangolo e Quadrato) una ripetizione non necessaria di righe di codice (i metodi sono dichiarati in questo caso due volte).


Ciò è dovuto al fatto che diverse classi offrono all'utente alcune possibilità comuni, in questo caso il calcolo del perimetro, il calcolo dell'area, il disegno della figura. Offrono cioè all'utente un'interfaccia comune.


Interfacce

Lo strumento rappresentato dall'interfaccia in Java offre infatti la possibilità di definire un insieme di metodi con funzione (e nome) comune per più classi, ovvero un'interfaccia comune con gli utilizzatori di tali classi.

Ci rendiamo conto però di come un'interfaccia, a differenza di una classe, non si possa associare strettamente ad un oggetto. L'interfaccia infatti è associata ad una categoria generica e astratta, mentre l'oggetto è per sua natura specifico. Non si può certo pensare ad una specifica forma geometrica che sia al contempo generica.

Lo strumento dell'interfaccia risponde a questa esigenza: non si possono infatti creare oggetti associati ad interfacce. Ecco la sintassi di esempio dell'interfaccia Forma_Geometrica:
public interface Forma_Geometrica public interface Forma_Geometrica
{
    void calcola_perimetro();
    void calcola_area();
    void disegna();  
}


Vengono elencati i metodi associati all'interfaccia, ovvero, in questo caso, i metodi comuni a tutte le forme geometriche. Ora faremo in modo che Triangolo e Quadrato facciano riferimento a Forma_Geometrica, in modo da eliminare la ripetizione di codice.

Aggiungiamo quindi alla dichiarazione di ogni classe associata ad una specifica forma geometrica un riferimento all'interfaccia, per mezzo della parola chiave implements:
public class Triangolo implements Forma_Geometrica
{
    //Dati

    //Le lunghezze dei lati
    int lato1;
    int lato2;
    int lato3;
    //Le ampiezze degli angoli
    int angolo12;
    int angolo 13;
    int angolo 23;
   
    //Metodi
    ...
    //I metodi calcola_perimetro(), calcola_area(),  e disegna() non devono più
    //essere dichiarati
}

public class Quadrato implements Forma_Geometrica
{
    //Dati

    //La lunghezza del lato
    int lato;
   
    //Metodi
    ...
    //I metodi calcola_perimetro(), calcola_area(),  e disegna() non devono più
    //essere dichiarati
}

Le azioni da realizzare all'interno di ciascun metodo (l'effettivo calcolo del perimetro o dell'area ad esempio) andranno ancora definite in modo specifico per ciascuna classe, in fase di definizione dei metodi, considerando anche che, ad esempio, il calcolo dell'area segue procedure diverse secondo la figura.


La dichiarazione però, ovvero l'interfaccia verso l'esterno e verso gli utilizzatori della classe è comune, garantendo una migliore leggibilità del programma, oltre che un semplice risparmio di righe di codice scritte.

Durante la compilazione del programma inoltre, viene fornito un messaggio di errore se le classi che dichiarano di implementare l'interfaccia non ne ridefiniscono i metodi, assicurando una valvola di sicurezza contro eventuali dimenticanze ed errori di distrazione.

fonte: Damiano Verda

http://www.mrwebmaster.it/java/articoli/creare-semplice-interfaccia-java_1036.html

Commenti

Post popolari in questo blog

Simulazioni di reti (con Cisco Packet Tracer)

Esercizi sulla rappresentazione della virgola mobile IEEE 754 (Floating Point)