From jcouteau@users.nuiton.org Wed May 26 17:20:09 2010 From: jcouteau@users.nuiton.org To: jaxx-commits@list.nuiton.org Subject: [Jaxx-commits] r1935 - in trunk/src/site: . rst Date: Wed, 26 May 2010 17:20:09 +0200 Message-ID: <20100526152009.E5E21159ED@nuiton.codelutin.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============1053265024232618580==" --===============1053265024232618580== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Author: jcouteau Date: 2010-05-26 17:20:09 +0200 (Wed, 26 May 2010) New Revision: 1935 Url: http://nuiton.org/repositories/revision/jaxx/1935 Log: Add doc about contract programming Added: trunk/src/site/rst/contractProgramming.rst Modified: trunk/src/site/site_fr.xml Added: trunk/src/site/rst/contractProgramming.rst =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/src/site/rst/contractProgramming.rst (rev 0) +++ trunk/src/site/rst/contractProgramming.rst 2010-05-26 15:20:09 UTC (rev 1= 935) @@ -0,0 +1,72 @@ +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D +Programmation par contrat +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + +Comme tout bon d=C3=A9veloppeur Java, vous utilisez r=C3=A9guli=C3=A8rement = la programmation +par contrat et la puissance de Java dans votre code en ajoutant des g=C3=A9n= =C3=A9riques, +des interfaces,... d=C3=A8s que possible et vous souhaitez retrouver les m= =C3=AAmes +m=C3=A9canismes dans JAXX. + +Ajout de contrats sur le code g=C3=A9n=C3=A9r=C3=A9 +------------------------------------ + +Le compilateur JAXX g=C3=A9n=C3=A8re des classes =C3=A0 partir de fichiers J= AXX mais n'est pas +capable d'ajouter des contrats sur les objets g=C3=A9n=C3=A9r=C3=A9s, donc i= nterdit en quelque +sorte la programmation par contrat. + +Pour palier =C3=A0 cette limitation, vous pouvez utiliser l'attribut sp=C3= =A9cial +*implements*. + +Cet attribut ne doit =C3=AAtre plac=C3=A9 que sur le tag racine d'un fichier= JAXX et son +contenu est le nom qualifi=C3=A9 d'un ou plusieurs contrats s=C3=A9par=C3=A9= s par des virgules. +:: + + + + + + + +La classe g=C3=A9n=C3=A9r=C3=A9e aura bien le contrat *java.lang.Comparable*. + +Attention a bien impl=C3=A9menter toutes les m=C3=A9thodes du contrat dans l= es scripts ou +votre fichier ne compilera pas. + +G=C3=A9n=C3=A9rer des classes abstraites +------------------------------ + +En utilisant l'attribut abstract et en le positionnant =C3=A0 true, la class= e g=C3=A9n=C3=A9r=C3=A9e +est abstraite. :: + + + +Manipuler les types g=C3=A9n=C3=A9riques +------------------------------ + +Il est possible d'utiliser les types g=C3=A9n=C3=A9riques dans JAXX en utili= sant les +attributs *genericType* et *superGenericType*. + +L'attribut genericType pr=C3=A9cise le type g=C3=A9n=C3=A9rique d'une classe= . Exemple (fichier +Parent.jaxx) : :: + + + +La classe g=C3=A9n=C3=A9r=C3=A9e sera de la forme : :: + + public abstract Parent implements java.lang.Comparable { + ... + } + +Pour surcharger une telle classe, on utilise l'attibut *superGenericType* en= lui +donnant le type =C3=A0 utiliser. Par exemple (fichier Son.jaxx) : :: + + + +La classe g=C3=A9n=C3=A9r=C3=A9e sera de la forme : :: + + public Son extends Parent { + ... + } \ No newline at end of file Modified: trunk/src/site/site_fr.xml =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/src/site/site_fr.xml 2010-05-26 14:58:33 UTC (rev 1934) +++ trunk/src/site/site_fr.xml 2010-05-26 15:20:09 UTC (rev 1935) @@ -63,9 +63,9 @@ + + + --===============1053265024232618580==--