Costruttore

Da Wikipedia, l'enciclopedia libera.

I costruttori, in informatica e specificamente nella programmazione orientata agli oggetti, indicano dei metodi di programmazione 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 e 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[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 creato viene istanziato l'oggetto mentre se le condizioni non vengono soddisfatte l'oggetto non viene creato. In questo modo non vengono 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[modifica | modifica wikitesto]

Nella versione 5 il nome della funzione deve essere __constructor

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

Note[modifica | modifica wikitesto]

Bibliografia[modifica | modifica wikitesto]

  • Fabrizia Scorzoni, Informatica Programmazione in Java, Torino, Loescher, 2009, ISBN 978-88-8433-030-7.

Voci correlate[modifica | modifica wikitesto]

Collegamenti esterni[modifica | modifica wikitesto]


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