Costruttore (informatica)
I costruttori, in informatica e specificamente nella programmazione orientata agli oggetti, indicano dei metodi associati alle classi che hanno lo scopo di inizializzare le variabili di istanza. La chiamata è effettuata automaticamente all'atto della creazione di un nuovo oggetto di una classe e nella maggior parte dei linguaggi non è possibile chiamarlo manualmente in un secondo tempo.
Utilizzo
modificaIn molti linguaggi (per esempio in Java e C++) hanno lo stesso nome della classe a cui appartengono. Come tutti gli altri metodi, i costruttori possono avere dei parametri ed essere definiti in molteplici versioni attraverso l'overloading. Non è ovviamente possibile far ritornare alcun valore dai costruttori, poiché il tipo di ritorno è di default l'oggetto stesso.
Tipi di costruttore
modificaOltre al semplice costruttore esistono due tipi speciali di costruttori: i default constructor e i copy constructor. I primi sono dei costruttori a cui non viene passato alcun parametro, mentre i copy sono quelli che ricevono come parametro un'altra istanza della stessa classe e quindi copiano tutte le proprietà di quell'istanza.
Costruttore implicito
modificaIl costruttore implicito è un tipo di costruttore predefinito che, come unica istruzione, crea e istanzia le variabili e per definizione non viene descritto nel codice sorgente.
Costruttore privato
modificaIl costruttore privato è un tipo di costruttore non visibile alle altre classi. Per creare l'oggetto viene creato un metodo statico con tipo di ritorno l'oggetto; in questo modo, se alcune condizioni vengono rispettate, viene istanziato l'oggetto, mentre, se le condizioni non vengono soddisfatte, l'oggetto non viene creato. Questo per impedire che vengano creati oggetti non utilizzati o con caratteristiche non idonee.
Linguaggi di programmazione
modificaQuasi tutti i linguaggi di programmazione ad oggetti permettono la definizione dei costruttori.
C++
modificaIn C++ è sufficiente dichiarare un metodo con lo stesso nome della classe. Il tipo di ritorno non deve essere inserito.
class Point
{
public:
Point(); // Costruttore di default
Point(int x,int y); // Costruttore generico
Point (Point &other); // Costruttore di copia
// ... altri metodi ...
private:
int x;
int y;
}
C#
modificaAnche in C# è sufficiente dichiarare un metodo con lo stesso nome della classe. Il tipo di ritorno non deve essere inserito.
public class Punto
{
private float x;
private float y;
public Punto() // Costruttore di default
{ // ... codice qui ...
}
public Punto(Punto altroPunto) // Costruttore di copia
{ // ... codice qui ...
}
public Punto(float x, float y) // Costruttore generico
{ // ... codice qui ...
}
}
Java
modificaLa sintassi in Java, per il costruttore esplicito, è identica a quella di C#.
public class Punto
{
private float x;
private float y;
public Punto() // Costruttore di default
{ // ... codice qui ...
}
public Punto(Punto altroPunto) // Costruttore di copia
{ // ... codice qui ...
}
public Punto(float x, float y) // Costruttore generico
{ // ... codice qui ...
}
}
mentre la funzione del costruttore è equivalente al costruttore esplicito sottostante
public class Punto
{
private float x;
public Punto()
{ //qui rimane senza codice
}
}
e può essere omessa.
PHP
modificaIl comportamento di PHP varia in base alla versione utilizzata.
PHP 4
modificaÈ sufficiente chiamare il nome del costruttore come quello della classe.
class Point
{
var $x;
var $y;
function Point ( $x, $y )
{
// ... codice qui ...
}
}
PHP 5 e successivi
modificaNella versione 5 il nome della funzione deve essere __construct
class Point
{
private $x;
private $y;
public function __construct ( $x, $y )
{
// ... codice qui ...
}
}
Note
modifica- costruttore java, su illuminamente.org.
Bibliografia
modifica- Fabrizia Scorzoni, Informatica Programmazione in Java, Torino, Loescher, 2009, ISBN 978-88-8433-030-7.
Voci correlate
modificaAltri progetti
modifica- Wikizionario contiene il lemma di dizionario «costruttore»
Collegamenti esterni
modifica- (EN) Opere riguardanti constructors, su Open Library, Internet Archive.
- (EN) Denis Howe, constructor, in Free On-line Dictionary of Computing. Disponibile con licenza GFDL
- Costruttori, su DIS UNIROMA. URL consultato il 29 aprile 2014.
- Programmazione ad oggetti (PDF), su IET UNIPI. URL consultato il 29 aprile 2014.
- Costruttore C#, su MSDN MICROSOFT. URL consultato il 29 aprile 2014.
- Costruttore C++, su MSDN MICROSOFT. URL consultato il 29 aprile 2014.
- Regole per la dichiarazione dei costruttori in C++, su MSDN MICROSOFT. URL consultato il 29 aprile 2014.