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[modifica | modifica wikitesto]

In 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[modifica | modifica wikitesto]

Oltre al semplice costruttore esistono due tipi speciali di costruttori: i default constructor o costruttore predefinito e i copy constructor o i costruttori di copia. 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[modifica | modifica wikitesto]

Il 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[modifica | modifica wikitesto]

Il 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[modifica | modifica wikitesto]

Quasi tutti i linguaggi di programmazione ad oggetti permettono la definizione dei costruttori.

C++[modifica | modifica wikitesto]

In 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#[modifica | modifica wikitesto]

Anche 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[modifica | modifica wikitesto]

La 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[modifica | modifica wikitesto]

Il comportamento di PHP varia in base alla versione utilizzata.

PHP 4[modifica | modifica wikitesto]

È 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[modifica | modifica wikitesto]

Nella versione 5 il nome della funzione deve essere __construct

class Point {    private $x;    private $y;    public function __construct ( $x, $y )    {         // ... codice qui ...    } } 

Note[modifica | modifica wikitesto]

Bibliografia[modifica | modifica wikitesto]

Voci correlate[modifica | modifica wikitesto]

Collegamenti esterni[modifica | modifica wikitesto]

  Portale Informatica: accedi alle voci di Wikipedia che trattano di Informatica