info.html 5.65 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117
<?xml version="1.0" encoding="UTF-8"?><?oxygen RNGSchema="http://scenari.utc.fr/hdoc/schemas/xhtml/hdoc1-xhtml.rng" type="xml"?>
<html xmlns="http://www.utc.fr/ics/hdoc/xhtml">
   <head>
      <title>Constructeur (programmation) — Wikipédia</title>
      <meta charset="utf-8"></meta>
      <meta name="generator" content="HdocConverter/wikipedia"></meta>
      <meta name="author" content="Wikipedia"></meta>
   </head>
   <body>
      <section data-hdoc-type="introduction">
         <header>
            <h1>Introduction</h1>
         </header>
         <div>
            <p>Un 
               <em>constructeur</em> est, en 
               <a href="http://wikipedia.org/wiki/Programmation_orient%C3%A9e_objet">programmation orientée objet</a>, une 
               <a href="http://wikipedia.org/wiki/Fonction_informatique">fonction</a> particulière appelée lors de l'
               <a href="http://wikipedia.org/wiki/Instanciation">instanciation</a>. Elle permet d'
               <a href="http://wikipedia.org/wiki/Allocation_de_m%C3%A9moire">allouer</a> la mémoire nécessaire à l'objet et d'initialiser ses 
               <a href="http://wikipedia.org/wiki/Attribut_(informatique)">attributs</a>.
            </p>
            <p>Si le langage l'autorise, la 
               <a href="http://wikipedia.org/wiki/Surd%C3%A9finition">surcharge</a> 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 :
            </p>
            <p>Ces deux constructeurs ont souvent une définition attribuée par défaut par le 
               <a href="http://wikipedia.org/wiki/Compilateur">compilateur</a>. 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 
               <a href="http://wikipedia.org/wiki/Pointeur_(programmation)">pointeurs</a> sont alloués par le constructeurs et libérés par le 
               <a href="http://wikipedia.org/wiki/Destructeur">destructeur</a>.
            </p>
         </div>
      </section>
      <section>
         <header>
            <h1>
               En Java
               
               
            </h1>
         </header>
         <div>
            <p>En 
               <a href="http://wikipedia.org/wiki/Java_(langage)">Java</a>, 
               <i>new</i> est un opérateur unaire de construction qui crée un nouvel objet ou un nouveau tableau.
            </p>
            <p>Pour créer un nouvel objet, le mot-clé 
               <i>new</i> doit être suivi d'une méthode qui soit un constructeur. Par exemple, on pourra avoir :
            </p>
            <p>si toutefois la classe 
               <i>MaClasse</i> a un constructeur qui possède deux paramètres : un entier et une chaîne de caractères.
            </p>
            <p>Pour créer un nouveau tableau, on peut par exemple écrire :</p>
         </div>
      </section>
      <section>
         <header>
            <h1>
               En C++
               
               
            </h1>
         </header>
         <div>
            <p>En 
               <a href="http://wikipedia.org/wiki/C%2B%2B">C++</a>, 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é 
               <i>new</i>. Le constructeur peut utiliser la syntaxe constructeur(argument) : variable(argument) pour initialiser les variables.
            </p>
         </div>
      </section>
      <section>
         <header>
            <h1>
               En C#
               
               
            </h1>
         </header>
         <div>
            <p>Exemple de constructeur en 
               <a href="http://wikipedia.org/wiki/C_sharp">C#</a> :
            </p>
            <p>Il existe par ailleurs en C# des 
               <a href="http://wikipedia.orghttp://msdn.microsoft.com/fr-fr/library/k9x6w0hc.aspx">constructeurs statiques</a>, 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.
            </p>
            <p>Exemple d'utilisation d'un constructeur statique :</p>
         </div>
      </section>
      <section>
         <header>
            <h1>
               Critique
               
               
            </h1>
         </header>
         <div>
            <p>Dans les langages tels 
               <a href="http://wikipedia.org/wiki/Java_(langage)">Java</a>, l'appel à un constructeur est équivalent à l'appel d'une méthode statique, ce qui
               rend plus difficile l'écriture de 
               <a href="http://wikipedia.org/wiki/Test_unitaire">tests unitaires</a> pour une méthode. L'
               <a href="http://wikipedia.org/wiki/Injection_de_d%C3%A9pendance">injection de dépendance</a> permet au programmeur de ne plus devoir écrire aucun appel de constructeur car le
               
               <a href="http://wikipedia.org/wiki/Framework">framework</a> d'injection de dépendance s'en charge à sa place.
            </p>
         </div>
      </section>
   </body>
</html>