Commit 9f37adb5 authored by haroldcb's avatar haroldcb

ajout gestion tableaux wiki

parent 6de813ae
*/input/
*/tmp/
*/output/
\ No newline at end of file
*/output/
*/result/
\ No newline at end of file
......@@ -65,11 +65,16 @@
<!-- Applying wikipedia -> hdoc -->
<xslt classpath="lib/saxon9he.jar" in="${tmpFolderPath}/${filename}_prepared.xml" out="${hdocResultPath}/${filename}.html" style="${xsltFolderPath}/wiki_to_hdoc.xsl">
<factory name="net.sf.saxon.TransformerFactoryImpl"/>
</xslt>
</xslt>
<!-- Copy listing files -->
<copy todir="${tmpHdocResultFolderPath}/listing" failonerror="false">
<fileset dir="${hdocResultPath}/listing" includes="**"/>
</copy>
<!-- Copy listing files -->
<copy todir="${tmpHdocResultFolderPath}/listing" >
<fileset dir="${hdocResultPath}/listing" includes="**"/>
<!-- Copy Tables files -->
<copy todir="${tmpHdocResultFolderPath}/tables" failonerror="false">
<fileset dir="${hdocResultPath}/tables" includes="**"/>
</copy>
<!-- Copy of the html file, hdoc needs "container.xml" file, not a html. The html file can be useful to the user -->
......
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
This diff is collapsed.
This source diff could not be displayed because it is too large. You can view the blob instead.
<?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>
<object type="application/pdf" data="listing/listing1.txt"></object>
<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>
<object type="application/pdf" data="listing/listing2.txt"></object>
</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>
<object type="application/pdf" data="listing/listing3.txt"></object>
</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>
<object type="application/pdf" data="listing/listing4.txt"></object>
<object type="application/pdf" data="listing/listing5.txt"></object>
<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>
<object type="application/pdf" data="listing/listing6.txt"></object>
<object type="application/pdf" data="listing/listing7.txt"></object>
</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>
\ No newline at end of file
This diff is collapsed.
MaClasse obj;
...
obj = new MaClasse(5, "bonjour");
String[] arguments = new String[10];
// ou bien :
int[][] uneMatrice = new int[4][5];
// ou encore :
int[][] quatreLignes = new int[4][];
class Object
{
public :
Object (); // Constructeur par défaut
Object (int n) : nombre(n){}; // Constructeur paramétrique
Object (const Object&); // Constructeur par recopie
~Object (); // Destructeur
int nombre;
};
int main ()
{
Object obj, *p_obj; // Appel du constructeur par défaut pour obj
p_obj=new Object(27); // Appel du constructeur paramétrique pour créer un objet pour p_obj
Object obj2(obj); // Appel du constructeur par recopie pour obj2
delete p_obj; // Appel du destructeur pour détruire l'objet contenu dans p_obj
} // Appel du destructeur pour obj et obj2
public class MaClasse
{
private int a;
private string b;
// Constructeur
public MaClasse() : this(42, "string")
{
}
// Surcharge d'un constructeur
public MaClasse(int a, string b)
{
this.a = a;
this.b = b;
}
}
// Instanciation d'un objet à l'aide du constructeur
MaClasse c = new MyClass(42, "string");
public class MaClasse
{
private static int _A;
// Constructeur statique
static MaClasse()
{
_A = 32;
}
// Constructeur standard
public MaClasse()
{
}
}
// Instanciation d'un objet à l'aide du constructeur
// juste avant l'instanciation
// Le constructeur statique est exécuté, _A prend la valeur 32
MaClasse c = new MaClasse();
MaClasse obj;
...
obj = new MaClasse(5, "bonjour");
String[] arguments = new String[10];
// ou bien :
int[][] uneMatrice = new int[4][5];
// ou encore :
int[][] quatreLignes = new int[4][];
class Object
{
public :
Object (); // Constructeur par défaut
Object (int n) : nombre(n){}; // Constructeur paramétrique
Object (const Object&); // Constructeur par recopie
~Object (); // Destructeur
int nombre;
};
int main ()
{
Object obj, *p_obj; // Appel du constructeur par défaut pour obj
p_obj=new Object(27); // Appel du constructeur paramétrique pour créer un objet pour p_obj
Object obj2(obj); // Appel du constructeur par recopie pour obj2
delete p_obj; // Appel du destructeur pour détruire l'objet contenu dans p_obj
} // Appel du destructeur pour obj et obj2
public class MaClasse
{
private int a;
private string b;
// Constructeur
public MaClasse() : this(42, "string")
{
}
// Surcharge d'un constructeur
public MaClasse(int a, string b)
{
this.a = a;
this.b = b;
}
}
// Instanciation d'un objet à l'aide du constructeur
MaClasse c = new MyClass(42, "string");
public class MaClasse
{
private static int _A;
// Constructeur statique
static MaClasse()
{
_A = 32;
}
// Constructeur standard
public MaClasse()
{
}
}
// Instanciation d'un objet à l'aide du constructeur
// juste avant l'instanciation
// Le constructeur statique est exécuté, _A prend la valeur 32
MaClasse c = new MaClasse();
<?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>
<object type="application/pdf" data="listing/listing1.txt"></object>
<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>
<object type="application/pdf" data="listing/listing2.txt"></object>
</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>
<object type="application/pdf" data="listing/listing3.txt"></object>
</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>
<object type="application/pdf" data="listing/listing4.txt"></object>
<object type="application/pdf" data="listing/listing5.txt"></object>
<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>
<object type="application/pdf" data="listing/listing6.txt"></object>
<object type="application/pdf" data="listing/listing7.txt"></object>
</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>
\ No newline at end of file
......@@ -57,8 +57,8 @@
</header>
<!-- Introduction text before first h2 (first section) -->
<xsl:if test="//p[count(preceding::h2)=0]">
<div><xsl:apply-templates select="//p[count(preceding::h2)=0]" mode="textOnly"/></div>
<xsl:if test="//p[count(preceding::h2)=0 and not(ancestor::td)]">
<div><xsl:apply-templates select="//p[count(preceding::h2)=0 and not(ancestor::td)]" mode="textOnly"/></div>
</xsl:if>
</section>
</xsl:template>
......@@ -263,6 +263,64 @@
</xsl:template>
<!-- Simple Tables -->
<xsl:template match="table" mode="textOnly">
<xsl:choose>
<xsl:when test="not(descendant::td/@colspan | descendant::td/@rowspan | descendant::table)">
<table>
<xsl:apply-templates select="node()" mode="textOnly"/>
</table>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="TableComplexe"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="TableComplexe">
<xsl:variable name="tableId">
<xsl:number level="any" count="table"/>
</xsl:variable>
<object type="application/vnd.oasis.opendocument.spreadsheet" data="tables/table{$tableId}.ods">
<xsl:result-document href="tables/table{$tableId}.ods" method="html" encoding="UTF-8">
<xsl:element name="table">
<xsl:copy-of select="@*|node()"></xsl:copy-of>
</xsl:element>
</xsl:result-document>
</object>
</xsl:template>
<xsl:template match="caption" mode="textOnly">
<caption><xsl:value-of select="node()"/></caption>
</xsl:template>
<xsl:template match="tr" mode="textOnly">
<tr>
<xsl:apply-templates select="node()" mode="textOnly"/>
</tr>
</xsl:template>
<xsl:template match="td | th" mode="textOnly">
<td><p><xsl:apply-templates select="." mode="table"/></p></td>
</xsl:template>
<xsl:template match="b" mode="table">
<!-- b is not allowed, however em is allowed: replacing all b by em -->
<xsl:element name="em" namespace="http://www.utc.fr/ics/hdoc/xhtml">
<xsl:apply-templates select="node()" mode="textOnly"/>
</xsl:element>
</xsl:template>
<!-- Balises pour les abbréviations -->
<xsl:template match="abbr" mode="table" priority="1">
<xsl:value-of select="."/>
</xsl:template>
<xsl:template match="sup" mode="table" priority="1">
<sup><xsl:value-of select="."/></sup>
</xsl:template>
<!-- ===== Ignored content ===== -->
<!-- Only keeping a with information: we give up page references -->
......@@ -281,8 +339,6 @@
<!-- Ignoring end of file h2: see also, etc... -->
<xsl:template match="h2[not(following-sibling::p intersect following-sibling::h2[1]/preceding-sibling::p)]"/>
<!-- Ignoring tables -->
<xsl:template match="table" mode="textOnly"/>
<!-- Ignoring divs by default: they are not relevant to us -->
<xsl:template match="div" mode="#all"/>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment