Costruttore (informatica): differenze tra le versioni
Nessun oggetto della modifica |
|||
Riga 97: | Riga 97: | ||
* [[Programmazione]] |
* [[Programmazione]] |
||
* [[Programmazione orientata agli oggetti]] |
* [[Programmazione orientata agli oggetti]] |
||
* [[costruttore esplicito]] |
|||
* [[costruttore implicito]] |
|||
{{Portale|Informatica}} |
{{Portale|Informatica}} |
Versione delle 20:31, 15 feb 2014
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
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 ritornare alcun valore dai costruttori, perché il tipo ritornato è di default l'oggetto stesso.
Tipi
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.
Linguaggi di programmazione
Quasi tutti i linguaggi di programmazione ad oggetti permettono la definizione dei costruttori.
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;
}
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 ...
}
}
La sintassi in java è 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 ...
}
}
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
Nella versione 5 il nome della funzione deve essere __constructor
class Point
{
private $x;
private $y;
public function __constructor ( $x, $y )
{
// ... codice qui ...
}
}