La ricorsione è una tecnica di programmazione che permette di creare dei metodi che, durante la loro esecuzione, chiamano, direttamente o indirettamente, se stessi, fino a quando una condizione viene rispettata, terminando questo ciclo di auto – chiamate.
Quando un metodo invoca sè stesso, la JVM esegue le seguenti azioni:
sospende l’esecuzione del metodo invocante
esegue il metodo invocato fino alla sua conclusione
riprende l’esecuzione del metodo invocante dal punto in cui era stata sospeso.
Per poter applicare questa tecnica, si deve decomporre un problema in problemi dello stesso tipo, ma di dimensione più piccola, fino a raggiungere una dimensione minima che da un risultato finito.
I Web Service (in italiano Servizi Web) hanno un ruolo importante nell’architettura dei software moderni del web. La diffusione esplosiva del web ha portato alla creazione di una grande quantità di infrastrutture di rete e server, e un Web Services sono software sviluppati appunto per facilitare l’interazione tra macchine tramite la rete, quindi tra macchine non tra umani.
Un client (desktop, web, mobili o embedded) invia la richiesta su Internet e un server riceve la richiesta, la elabora e restituisce una risposta.
Una caratteristica molto importante è che il client può essere scritto in qualsiasi linguaggio di programmazione (java, ASP, etc). Stessa cosa vale per il web service.
Questo perché i dati vengono scambiati in un formato comune a tutte le tecnologie: il client non sa come funziona il server e viceversa, ma entrambi lavorano insieme attraverso un vocabolario comune.
Gli Enum in Java definiscono un tipo di dati che può assumere determinato numero di valori costanti, come ad esempio i semi di una carta da gioco che possono assumere solo 4 possibili valori.
Per ogni tipo primitivo, in java, esiste una classe corrispondente (detta Wrapper), il cui nome può ottenere capitalizzando il nome, tranne nel caso di Integer e Character che oltre alla prima lettera cambiano anche il nome, come mostrato nella tabella seguente:
Un package è un “contenitore” che raccogliere al suo interno
una serie di classi, o anche altri packages, in qualche modo logicamente legati
tra loro.
Raggruppando le classi affini in package, miglioriamo l’organizzazione del codice e impediamo i conflitti tra classi con nomi uguali: ad esempio due classi di nome Prova possono coesistere in due package diversi, senza che ci sia nessun errore di compilazione o altro.
Il costruttore di una classe è un metodo speciale utilizzato per creare una istanza della classe (ripetiamo, istanza di una classe P = una variabile del tipo classe P).
Per definirlo, è sufficiente creare un metodo con lo stesso nome della classe.
Ipotizzando di avere una classe chiamata MyClass, creiamo un costruttore che prende in input un intero:
Esempio
public class Prova {
Prova(int l){
}
}
Il costruttore viene invocato, in automatico, durante la creazione di una istanza, tramite la keyword new: