Constructeur (programmation)
# Constructeur (programmation)

Un constructeur est, en programmation orientée objet, une fonction particulière appelée lors de l'instanciation. Elle permet d'allouer la mémoire nécessaire à l'objet et d'initialiser ses attributs.

Si le langage l'autorise, la surcharge est possible et les constructeurs se différencient par le nombre et le type des paramètres passés et renvoyés mais aussi par le formalisme employé. Dans de nombreux langages, on distingue certains constructeurs en particulier :

* le constructeur par défaut n'a aucun argument ;
* le constructeur par recopie a un unique argument du même type que l'objet à créer (généralement sous forme de référence constante) et il recopie les attributs depuis l'objet passé en argument sur l'objet à créer.

Ces deux constructeurs ont souvent une définition attribuée par défaut par le compilateur. Le constructeur par défaut n'a alors aucun effet ; le constructeur de recopie par contre recopiera les valeurs de tous les membres de l'objet donné vers l'objet courant. Ceci peut s'avérer particulièrement dangereux, spécialement dans le cas où des pointeurs sont alloués par le constructeur et libérés par le destructeur.

## En Java

En Java, new est un opérateur unaire de construction qui crée un nouvel objet ou un nouveau tableau.

Pour créer un nouvel objet, le mot-clé new doit être suivi d'une méthode qui soit un constructeur. Par exemple, on pourra avoir :

si toutefois la classe MaClasse a un constructeur qui possède deux paramètres : un entier et une chaîne de caractères.

Pour créer un nouveau tableau, on peut par exemple écrire :

## En C++

En C++, le constructeur est une fonction membre publique de la classe portant le même nom que celle-ci. Il est appelé lors de la déclaration de l'objet ou lors de l'utilisation du mot-clé new (lors d'une allocation sur le tas). Le constructeur peut utiliser la syntaxe constructeur(argument) : variable(argument) pour initialiser les variables.

## En C#

Exemple de constructeur en C# :

Il existe par ailleurs en C# des constructeurs statiques, qui permettent d'initialiser une donnée statique et d'effectuer une action particulière devant être effectuée une seule fois. Les constructeurs statiques sont appelés implicitement avant qu'une instance ne soit créée. Tout appel à une classe (appel statique ou constructeur), déclenche l'exécution du constructeur statique.

Exemple d'utilisation d'un constructeur statique :

## Critique

Dans les langages tels Java, l'appel à un constructeur est équivalent à l'appel d'une méthode statique, ce qui rend plus difficile l'écriture de tests unitaires pour une méthode. L'injection de dépendance permet au programmeur de ne plus devoir écrire aucun appel de constructeur car le framework d'injection de dépendance s'en charge à sa place.

