I design pattern sono approcci condivisi e ben definiti per la risoluzione di problemi nella programmazione, forniscono strumenti comuni agli sviluppatori per risolvere i problemi più comuni che si incontrano durante lo sviluppo di applicazioni.

Per la certificazione Java non è richiesta la conoscenza dei maggiori pattern, quali ad esempio Adapter, Strategy, Decorator, Visitor etc etc, l’esame di certificazione richiede solo la conoscenza ed il saper implementare 3 di questi, che sono : Sigleton, Builder e Factory che sono un sottoinsieme dei pattern detti creazionali.

Tutti sappiamo come creare oggetti in Java, tramite l’istruzione new :

Aereo md80 = new Md80();

Ma cosi, dobbiamo sapere esattamente che tipo di Aereo vogliamo creare, immaginiamo un torre di controllo, questa può creare diversi tipi di aereo a seconda dell’ordine di decollo, in questo caso dovremmo delegare la costruzione di oggetti in una logica ben precisa, oppure, in ogni aereoporto, vi è sempre e solo 1 torre di controllo operativa a gestire la coda di decollo, come possiamo garantire nella nostra applicazione, che sempre e solo 1 torre sia operativa ?

Continua a leggere

Il polimorfismo è la capacità di un interfaccia di assumere diverse forme, in java ci permette di poter passare diversi tipi di oggetti ad un metodo o classe, dimostriamolo con un semplice esempio :

public interface Aereo { public void vola(); }

public class Md80 implements Aereo {
  public void vola() { System.out.println("md80 sta volando"); }
}
public class Boeing747 implements Aereo {
  public void vola() { System.out.println("Boeing 747 sta volando"); }
}

public class TorreDiControllo {
  public void autorizzaDecollo(Aereo aereo) {
    aereo.vola();
  }
  public static void main(String... args) {
    TorreDiControllo c = new TorreDiControllo();
    c.autorizzaDecollo(new Md80());
    c.autorizzaDecollo(new Boeing747());
  }
}

Continua a leggere

Ora che abbiamo visto e ripassato un pò le interfacce in java, è ora di iniziare a parlare di programmazione funzionale, introdotta con Java 8 per mezzo delle lambda expression.

Alla base della programmazione funzionale di java ci sono le interfacce funzionali.

Cos’è un interfaccia funzionale ? è semplice, si tratta di un interfaccia che definisce un solo metodo astratto.

definizione di un interfaccia funzionale

Vediamo come è possibile definire in java un interfaccia che sia di fatto un interfaccia funzionale :

Continua a leggere

Nella precedente certificazione abbiamo studiato come dichiarare un interfaccia, come estenderla e come implementarla.

Possiamo ricapitolare dicendo che un interfaccia è un tipo astratto di dati simile ad una classe che definisce solo metodi astratti e public che ogni classe che implementa deve definire.

Un interfaccia può anche definire costanti (public static) e da Java 8 anche metodi statici e metodi con implementazione di default.

Vediamo un breve e semplice esempio di un interfaccia e della sua implementazione :

Continua a leggere