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 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 loverloading. Non è ovviamente possibile far ritornare alcun valore dai costruttori, poiché il tipo di ritorno è di default l'oggetto stesso.
Tipi di costruttore Oltre 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 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 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 Quasi tutti i linguaggi di programmazione ad oggetti permettono la definizione dei costruttori. C++ 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# 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 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 Il comportamento di PHP varia in base alla versione utilizzata. PHP 4 È 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 Nella versione 5 il nome della funzione deve essere __construct class Point { private $x; private $y; public function __construct ( $x, $y )
// ... codice qui ...
Note
Bibliografia
Voci correlate Distruttore (informatica) Metodo (programmazione) Programmazione orientata agli oggetti Overloading
Altri progetti
Collegamenti esterni
Categoria:Programmazione orientata agli oggetti