| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971 |
- <!DOCTYPE html>
- <html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
- <head>
- <meta charset="utf-8" />
- <meta name="generator" content="pandoc" />
- <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
- <title>Associations entre classes</title>
- <style type="text/css">
- code{white-space: pre-wrap;}
- span.smallcaps{font-variant: small-caps;}
- span.underline{text-decoration: underline;}
- div.column{display: inline-block; vertical-align: top; width: 50%;}
- </style>
- <style type="text/css">
- a.sourceLine { display: inline-block; line-height: 1.25; }
- a.sourceLine { pointer-events: none; color: inherit; text-decoration: inherit; }
- a.sourceLine:empty { height: 1.2em; position: absolute; }
- .sourceCode { overflow: visible; }
- code.sourceCode { white-space: pre; position: relative; }
- div.sourceCode { margin: 1em 0; }
- pre.sourceCode { margin: 0; }
- @media screen {
- div.sourceCode { overflow: auto; }
- }
- @media print {
- code.sourceCode { white-space: pre-wrap; }
- a.sourceLine { text-indent: -1em; padding-left: 1em; }
- }
- pre.numberSource a.sourceLine
- { position: relative; }
- pre.numberSource a.sourceLine:empty
- { position: absolute; }
- pre.numberSource a.sourceLine::before
- { content: attr(data-line-number);
- position: absolute; left: -5em; text-align: right; vertical-align: baseline;
- border: none; pointer-events: all;
- -webkit-touch-callout: none; -webkit-user-select: none;
- -khtml-user-select: none; -moz-user-select: none;
- -ms-user-select: none; user-select: none;
- padding: 0 4px; width: 4em;
- color: #aaaaaa;
- }
- pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; }
- div.sourceCode
- { }
- @media screen {
- a.sourceLine::before { text-decoration: underline; }
- }
- code span.al { color: #ff0000; font-weight: bold; } /* Alert */
- code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
- code span.at { color: #7d9029; } /* Attribute */
- code span.bn { color: #40a070; } /* BaseN */
- code span.bu { } /* BuiltIn */
- code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
- code span.ch { color: #4070a0; } /* Char */
- code span.cn { color: #880000; } /* Constant */
- code span.co { color: #60a0b0; font-style: italic; } /* Comment */
- code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
- code span.do { color: #ba2121; font-style: italic; } /* Documentation */
- code span.dt { color: #902000; } /* DataType */
- code span.dv { color: #40a070; } /* DecVal */
- code span.er { color: #ff0000; font-weight: bold; } /* Error */
- code span.ex { } /* Extension */
- code span.fl { color: #40a070; } /* Float */
- code span.fu { color: #06287e; } /* Function */
- code span.im { } /* Import */
- code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
- code span.kw { color: #007020; font-weight: bold; } /* Keyword */
- code span.op { color: #666666; } /* Operator */
- code span.ot { color: #007020; } /* Other */
- code span.pp { color: #bc7a00; } /* Preprocessor */
- code span.sc { color: #4070a0; } /* SpecialChar */
- code span.ss { color: #bb6688; } /* SpecialString */
- code span.st { color: #4070a0; } /* String */
- code span.va { color: #19177c; } /* Variable */
- code span.vs { color: #4070a0; } /* VerbatimString */
- code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
- </style>
- <link rel="stylesheet" href="pandoc.css">
- <!--[if lt IE 9]>
- <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
- <![endif]-->
- </head>
- <body>
- <div class="doctitle">Associations entre classes</div>
- <nav id="TOC">
- <ul>
- <li><a href="#associations">Associations</a><ul>
- <li><a href="#association-simple">Association simple</a><ul>
- <li><a href="#code-java-équivalent">Code Java équivalent</a></li>
- </ul></li>
- <li><a href="#association-avec-rôle">Association avec rôle</a><ul>
- <li><a href="#code-java-équivalent-1">Code Java équivalent</a></li>
- <li><a href="#initialisation-possibilité-1">Initialisation (possibilité 1)</a></li>
- <li><a href="#initialisation-possibilité-2">Initialisation (possibilité 2)</a></li>
- <li><a href="#initialisation-possibilité-3">Initialisation (possibilité 3)</a></li>
- </ul></li>
- <li><a href="#association-bidirectionnelle">Association bidirectionnelle</a><ul>
- <li><a href="#code-java-équivalent-2">Code Java équivalent</a></li>
- <li><a href="#initialisation-impossible">Initialisation impossible !</a></li>
- <li><a href="#initialisation-possibilité-1-1">Initialisation (possibilité 1)</a></li>
- <li><a href="#initialisation-possibilité-2-1">Initialisation (possibilité 2)</a></li>
- <li><a href="#initialisation-possibilité-3-1">Initialisation (possibilité 3)</a></li>
- </ul></li>
- </ul></li>
- <li><a href="#dépendance-utilisation">Dépendance, utilisation</a><ul>
- <li><a href="#relation-de-dépendance">Relation de dépendance</a></li>
- <li><a href="#relation-de-création">Relation de création</a></li>
- </ul></li>
- <li><a href="#agrégation">Agrégation</a><ul>
- <li><a href="#définition">Définition</a></li>
- <li><a href="#exemple">Exemple</a></li>
- <li><a href="#relations">Relations</a></li>
- <li><a href="#destruction">Destruction</a></li>
- <li><a href="#exemple-en-java">Exemple en Java</a><ul>
- <li><a href="#diagramme-de-classes">Diagramme de classes</a></li>
- <li><a href="#classe-livre">Classe Livre</a></li>
- <li><a href="#classe-tablechevet">Classe TableChevet</a></li>
- <li><a href="#classe-personne">Classe Personne</a></li>
- <li><a href="#classe-lirematinetsoir">Classe LireMatinEtSoir</a></li>
- </ul></li>
- </ul></li>
- <li><a href="#composition">Composition</a><ul>
- <li><a href="#définition-1">Définition</a></li>
- <li><a href="#exemple-1">Exemple</a></li>
- <li><a href="#relations-1">Relations</a></li>
- <li><a href="#destruction-1">Destruction</a></li>
- <li><a href="#exemple-en-java-1">Exemple en Java</a><ul>
- <li><a href="#diagramme-de-classes-1">Diagramme de classes</a></li>
- <li><a href="#classe-livre-1">Classe Livre</a></li>
- <li><a href="#classe-page">Classe Page</a></li>
- <li><a href="#classe-personne-1">Classe Personne</a></li>
- <li><a href="#classe-brulerlivres">Classe BrulerLivres</a></li>
- </ul></li>
- </ul></li>
- <li><a href="#délégation">Délégation</a><ul>
- <li><a href="#définition-2">Définition</a></li>
- <li><a href="#caractéristiques">Caractéristiques</a></li>
- <li><a href="#diagramme-de-séquence">Diagramme de séquence</a></li>
- <li><a href="#diagramme-de-classe">Diagramme de classe</a></li>
- <li><a href="#interface-operateur">Interface Operateur</a></li>
- <li><a href="#classe-calcul">Classe Calcul</a></li>
- <li><a href="#classe-operateuraddition">Classe OperateurAddition</a></li>
- <li><a href="#classe-lancercalculs">Classe LancerCalculs</a><ul>
- <li><a href="#exercice">Exercice</a></li>
- <li><a href="#classe-operateursoustraction">Classe OperateurSoustraction</a></li>
- </ul></li>
- </ul></li>
- <li><a href="#délégation-hybride">Délégation hybride</a><ul>
- <li><a href="#caractéristiques-1">Caractéristiques</a></li>
- <li><a href="#diagramme-de-séquence-1">Diagramme de séquence</a></li>
- <li><a href="#diagramme-de-classe-1">Diagramme de classe</a></li>
- <li><a href="#interface-operateur-1">Interface Operateur</a></li>
- <li><a href="#classe-calcul-1">Classe Calcul</a></li>
- <li><a href="#classe-operateuraddition-1">Classe OperateurAddition</a></li>
- <li><a href="#classe-operateursoustraction-1">Classe OperateurSoustraction</a></li>
- <li><a href="#classe-lancercalculs-1">Classe LancerCalculs</a></li>
- </ul></li>
- <li><a href="#exercices">Exercices</a><ul>
- <li><a href="#lettre">Lettre</a></li>
- <li><a href="#chiffres">Chiffres</a></li>
- <li><a href="#mot-et-nombre">Mot et nombre</a></li>
- </ul></li>
- <li><a href="#associations-à-cardinalités-multiples">Associations à cardinalités multiples</a><ul>
- <li><a href="#ensemble-non-ordonné">Ensemble non ordonné</a><ul>
- <li><a href="#code-java-équivalent-3">Code Java équivalent</a></li>
- </ul></li>
- <li><a href="#ensemble-ordonné-cardinalité-fixée">Ensemble ordonné (cardinalité fixée)</a><ul>
- <li><a href="#code-java-équivalent-4">Code Java équivalent</a></li>
- </ul></li>
- <li><a href="#ensemble-ordonné">Ensemble ordonné</a><ul>
- <li><a href="#code-java-équivalent-5">Code Java équivalent</a></li>
- </ul></li>
- <li><a href="#sequence">Sequence</a><ul>
- <li><a href="#code-java-équivalent-6">Code Java équivalent</a></li>
- </ul></li>
- <li><a href="#initialisation-des-associations-1-n">Initialisation des associations 1-n</a><ul>
- <li><a href="#création">Création</a></li>
- <li><a href="#ajout">Ajout</a></li>
- <li><a href="#accès">Accès</a></li>
- </ul></li>
- </ul></li>
- <li><a href="#exercices-1">Exercices</a><ul>
- <li><a href="#alphabet">Alphabet</a></li>
- <li><a href="#mot">Mot</a></li>
- </ul></li>
- <li><a href="#associations-qualifiées">Associations qualifiées</a><ul>
- <li><a href="#cardinalité-simple">Cardinalité simple</a><ul>
- <li><a href="#code-java-équivalent-7">Code Java équivalent</a></li>
- </ul></li>
- <li><a href="#cardinalité-multiple">Cardinalité multiple</a><ul>
- <li><a href="#code-java-équivalent-8">Code Java équivalent</a></li>
- </ul></li>
- </ul></li>
- <li><a href="#exercices-2">Exercices</a><ul>
- <li><a href="#glossaire">Glossaire</a></li>
- <li><a href="#dictionnaire">Dictionnaire</a></li>
- </ul></li>
- </ul>
- </nav>
- <h1 id="associations">Associations</h1>
- <h2 id="association-simple">Association simple</h2>
- <p>Un objet B (Opérateur) est associé à un objet A (Calcul).</p>
- <figure>
- <img src="images/UML-association.png" alt="Association" /><figcaption>Association</figcaption>
- </figure>
- <h3 id="code-java-équivalent">Code Java équivalent</h3>
- <div class="sourceCode" id="cb1"><pre class="sourceCode java"><code class="sourceCode java"><a class="sourceLine" id="cb1-1" data-line-number="1"><span class="kw">class</span> Operateur{}</a>
- <a class="sourceLine" id="cb1-2" data-line-number="2"></a>
- <a class="sourceLine" id="cb1-3" data-line-number="3"><span class="kw">class</span> Calcul{</a>
- <a class="sourceLine" id="cb1-4" data-line-number="4"> <span class="kw">private</span> Operateur b;</a>
- <a class="sourceLine" id="cb1-5" data-line-number="5">}</a></code></pre></div>
- <h2 id="association-avec-rôle">Association avec rôle</h2>
- <p>Un objet B (Opérateur) est associé à un objet A (Calcul) et son rôle est identifié sur le diagramme.</p>
- <figure>
- <img src="images/UML-association-role.png" alt="Association" /><figcaption>Association</figcaption>
- </figure>
- <figure>
- <img src="images/UML-association-attribut.png" alt="Association (représentation alternative)" /><figcaption>Association (représentation alternative)</figcaption>
- </figure>
- <h3 id="code-java-équivalent-1">Code Java équivalent</h3>
- <div class="sourceCode" id="cb2"><pre class="sourceCode java"><code class="sourceCode java"><a class="sourceLine" id="cb2-1" data-line-number="1"><span class="kw">class</span> Operateur{}</a>
- <a class="sourceLine" id="cb2-2" data-line-number="2"></a>
- <a class="sourceLine" id="cb2-3" data-line-number="3"><span class="kw">class</span> Calcul{</a>
- <a class="sourceLine" id="cb2-4" data-line-number="4"> <span class="kw">private</span> Operateur op;</a>
- <a class="sourceLine" id="cb2-5" data-line-number="5">}</a></code></pre></div>
- <h3 id="initialisation-possibilité-1">Initialisation (possibilité 1)</h3>
- <p>Par un <em>setter</em> :</p>
- <div class="sourceCode" id="cb3"><pre class="sourceCode java"><code class="sourceCode java"><a class="sourceLine" id="cb3-1" data-line-number="1"><span class="kw">class</span> Calcul{</a>
- <a class="sourceLine" id="cb3-2" data-line-number="2"> <span class="kw">private</span> Operateur op;</a>
- <a class="sourceLine" id="cb3-3" data-line-number="3"> <span class="kw">public</span> <span class="fu">setOperateur</span>(Operateur op){</a>
- <a class="sourceLine" id="cb3-4" data-line-number="4"> <span class="kw">this</span>.<span class="fu">op</span> = op;</a>
- <a class="sourceLine" id="cb3-5" data-line-number="5"> }</a>
- <a class="sourceLine" id="cb3-6" data-line-number="6"> <span class="kw">public</span> <span class="fu">getOperateur</span>(){<span class="kw">return</span> op;}</a>
- <a class="sourceLine" id="cb3-7" data-line-number="7">}</a></code></pre></div>
- <h3 id="initialisation-possibilité-2">Initialisation (possibilité 2)</h3>
- <p>Par le <em>constructeur</em> :</p>
- <div class="sourceCode" id="cb4"><pre class="sourceCode java"><code class="sourceCode java"><a class="sourceLine" id="cb4-1" data-line-number="1"><span class="kw">class</span> Calcul{</a>
- <a class="sourceLine" id="cb4-2" data-line-number="2"> <span class="kw">private</span> Operateur op;</a>
- <a class="sourceLine" id="cb4-3" data-line-number="3"> <span class="kw">public</span> <span class="fu">Calcul</span>(Operateur op){</a>
- <a class="sourceLine" id="cb4-4" data-line-number="4"> <span class="kw">this</span>.<span class="fu">op</span> = op;</a>
- <a class="sourceLine" id="cb4-5" data-line-number="5"> }</a>
- <a class="sourceLine" id="cb4-6" data-line-number="6"> <span class="kw">public</span> <span class="fu">getOperateur</span>(){<span class="kw">return</span> op;}</a>
- <a class="sourceLine" id="cb4-7" data-line-number="7">}</a></code></pre></div>
- <h3 id="initialisation-possibilité-3">Initialisation (possibilité 3)</h3>
- <p>Au moment de l’instanciation :</p>
- <div class="sourceCode" id="cb5"><pre class="sourceCode java"><code class="sourceCode java"><a class="sourceLine" id="cb5-1" data-line-number="1"><span class="kw">class</span> Calcul{</a>
- <a class="sourceLine" id="cb5-2" data-line-number="2"> <span class="kw">private</span> Operateur op;</a>
- <a class="sourceLine" id="cb5-3" data-line-number="3"> <span class="kw">public</span> <span class="fu">Calcul</span>(){</a>
- <a class="sourceLine" id="cb5-4" data-line-number="4"> op = <span class="kw">new</span> <span class="fu">Operateur</span>();</a>
- <a class="sourceLine" id="cb5-5" data-line-number="5"> }</a>
- <a class="sourceLine" id="cb5-6" data-line-number="6"> <span class="kw">public</span> <span class="fu">getOperateur</span>(){<span class="kw">return</span> op;}</a>
- <a class="sourceLine" id="cb5-7" data-line-number="7">}</a></code></pre></div>
- <h2 id="association-bidirectionnelle">Association bidirectionnelle</h2>
- <p>Deux objets sont liés l’un à l’autre:</p>
- <div class="incremental">
- <p>chaque instance possède une référence vers l’autre instance.</p>
- <figure>
- <img src="images/UML-association-bidirectionnelle.png" alt="Association bidirectionnelle" /><figcaption>Association bidirectionnelle</figcaption>
- </figure>
- <h3 id="code-java-équivalent-2">Code Java équivalent</h3>
- <div class="sourceCode" id="cb6"><pre class="sourceCode java"><code class="sourceCode java"><a class="sourceLine" id="cb6-1" data-line-number="1"><span class="kw">class</span> Moteur {</a>
- <a class="sourceLine" id="cb6-2" data-line-number="2"> <span class="kw">private</span> Vehicule vehicule;</a>
- <a class="sourceLine" id="cb6-3" data-line-number="3">}</a>
- <a class="sourceLine" id="cb6-4" data-line-number="4"></a>
- <a class="sourceLine" id="cb6-5" data-line-number="5"><span class="kw">class</span> Vehicule {</a>
- <a class="sourceLine" id="cb6-6" data-line-number="6"> <span class="kw">private</span> Moteur moteur;</a>
- <a class="sourceLine" id="cb6-7" data-line-number="7">}</a></code></pre></div>
- <h3 id="initialisation-impossible">Initialisation impossible !</h3>
- <div class="important">
- <p>Ce code <strong>ne fonctionne pas</strong> :</p>
- </div>
- <div class="sourceCode" id="cb7"><pre class="sourceCode java"><code class="sourceCode java"><a class="sourceLine" id="cb7-1" data-line-number="1"><span class="dt">void</span> <span class="fu">init</span>(){</a>
- <a class="sourceLine" id="cb7-2" data-line-number="2"> Moteur moteur ;</a>
- <a class="sourceLine" id="cb7-3" data-line-number="3"> Vehicule vehicule;</a>
- <a class="sourceLine" id="cb7-4" data-line-number="4"></a>
- <a class="sourceLine" id="cb7-5" data-line-number="5"> <span class="co">//Vehicule n'est pas instancié:</span></a>
- <a class="sourceLine" id="cb7-6" data-line-number="6"> moteur = <span class="kw">new</span> <span class="fu">Moteur</span>(vehicule);</a>
- <a class="sourceLine" id="cb7-7" data-line-number="7"> vehicule = <span class="kw">new</span> <span class="fu">Vehicule</span>(moteur);</a>
- <a class="sourceLine" id="cb7-8" data-line-number="8">}</a></code></pre></div>
- <h3 id="initialisation-possibilité-1-1">Initialisation (possibilité 1)</h3>
- <div class="sourceCode" id="cb8"><pre class="sourceCode java"><code class="sourceCode java"><a class="sourceLine" id="cb8-1" data-line-number="1"><span class="dt">void</span> <span class="fu">init</span>(){</a>
- <a class="sourceLine" id="cb8-2" data-line-number="2"> Moteur moteur ;</a>
- <a class="sourceLine" id="cb8-3" data-line-number="3"> Vehicule vehicule;</a>
- <a class="sourceLine" id="cb8-4" data-line-number="4"></a>
- <a class="sourceLine" id="cb8-5" data-line-number="5"> moteur = <span class="kw">new</span> <span class="fu">Moteur</span>();</a>
- <a class="sourceLine" id="cb8-6" data-line-number="6"> vehicule = <span class="kw">new</span> <span class="fu">Vehicule</span>(moteur);</a>
- <a class="sourceLine" id="cb8-7" data-line-number="7"> moteur.<span class="fu">setVehicule</span>(vehicule);</a>
- <a class="sourceLine" id="cb8-8" data-line-number="8">}</a></code></pre></div>
- <h3 id="initialisation-possibilité-2-1">Initialisation (possibilité 2)</h3>
- <div class="sourceCode" id="cb9"><pre class="sourceCode java"><code class="sourceCode java"><a class="sourceLine" id="cb9-1" data-line-number="1"><span class="dt">void</span> <span class="fu">init</span>(){</a>
- <a class="sourceLine" id="cb9-2" data-line-number="2"> Moteur moteur ;</a>
- <a class="sourceLine" id="cb9-3" data-line-number="3"> Vehicule vehicule;</a>
- <a class="sourceLine" id="cb9-4" data-line-number="4"></a>
- <a class="sourceLine" id="cb9-5" data-line-number="5"> moteur = <span class="kw">new</span> <span class="fu">Moteur</span>();</a>
- <a class="sourceLine" id="cb9-6" data-line-number="6"> vehicule = <span class="kw">new</span> <span class="fu">Vehicule</span>();</a>
- <a class="sourceLine" id="cb9-7" data-line-number="7"> moteur.<span class="fu">setVehicule</span>(vehicule);</a>
- <a class="sourceLine" id="cb9-8" data-line-number="8"> vehicule.<span class="fu">setMoteur</span>(moteur);</a>
- <a class="sourceLine" id="cb9-9" data-line-number="9">}</a></code></pre></div>
- <h3 id="initialisation-possibilité-3-1">Initialisation (possibilité 3)</h3>
- <div class="sourceCode" id="cb10"><pre class="sourceCode java"><code class="sourceCode java"><a class="sourceLine" id="cb10-1" data-line-number="1"><span class="kw">class</span> Vehicule {</a>
- <a class="sourceLine" id="cb10-2" data-line-number="2"> <span class="kw">private</span> Moteur moteur;</a>
- <a class="sourceLine" id="cb10-3" data-line-number="3"> <span class="kw">public</span> <span class="dt">void</span> <span class="fu">setMoteur</span>(Moteur moteur){</a>
- <a class="sourceLine" id="cb10-4" data-line-number="4"> <span class="kw">this</span>.<span class="fu">moteur</span> = moteur;</a>
- <a class="sourceLine" id="cb10-5" data-line-number="5"> moteur.<span class="fu">setVehicule</span>(moteur);</a>
- <a class="sourceLine" id="cb10-6" data-line-number="6"> }</a>
- <a class="sourceLine" id="cb10-7" data-line-number="7">}</a>
- <a class="sourceLine" id="cb10-8" data-line-number="8"></a>
- <a class="sourceLine" id="cb10-9" data-line-number="9"><span class="dt">void</span> <span class="fu">init</span>(){</a>
- <a class="sourceLine" id="cb10-10" data-line-number="10"> Moteur moteur ;</a>
- <a class="sourceLine" id="cb10-11" data-line-number="11"> Vehicule vehicule;</a>
- <a class="sourceLine" id="cb10-12" data-line-number="12"></a>
- <a class="sourceLine" id="cb10-13" data-line-number="13"> moteur = <span class="kw">new</span> <span class="fu">Moteur</span>();</a>
- <a class="sourceLine" id="cb10-14" data-line-number="14"> vehicule = <span class="kw">new</span> <span class="fu">Vehicule</span>();</a>
- <a class="sourceLine" id="cb10-15" data-line-number="15"> vehicule.<span class="fu">setMoteur</span>(moteur);</a>
- <a class="sourceLine" id="cb10-16" data-line-number="16">}</a></code></pre></div>
- </div>
- <h1 id="dépendance-utilisation">Dépendance, utilisation</h1>
- <p>Il est possible de représenter une relation de dépendance entre deux classes sans qu’il y ait une association telle que représentée précédemment.</p>
- <h2 id="relation-de-dépendance">Relation de dépendance</h2>
- <p>La classe principale <code>LancerCalculs</code> utilise la classe <code>Calcul</code></p>
- <figure>
- <img src="images/UML-dependance.png" alt="Dépendance d’utilisation" /><figcaption>Dépendance d’utilisation</figcaption>
- </figure>
- <h2 id="relation-de-création">Relation de création</h2>
- <p>La classe principale <code>LancerCalculs</code> crée au moins une instance de la classe <code>Addition</code></p>
- <figure>
- <img src="images/UML-dependance-creation.png" alt="Dépendance de création" /><figcaption>Dépendance de création</figcaption>
- </figure>
- <p>Peut aussi être noté:</p>
- <figure>
- <img src="images/UML-dependance-instanciation.png" alt="Dépendance d’instanciation" /><figcaption>Dépendance d’instanciation</figcaption>
- </figure>
- <h1 id="agrégation">Agrégation</h1>
- <h2 id="définition">Définition</h2>
- <p>Une agrégation consiste en un assemblage d’objets:</p>
- <ul>
- <li>chaque objet est une partie de l’agrégat</li>
- </ul>
- <div class="incremental">
- <p>Ces objets sont liés par une relation d’inclusion :</p>
- <ul>
- <li>une partie est inclus dans un ensemble</li>
- </ul>
- </div>
- <h2 id="exemple">Exemple</h2>
- <figure>
- <img src="images/Aggregation-exemple.png" alt="Agrégation" /><figcaption>Agrégation</figcaption>
- </figure>
- <h2 id="relations">Relations</h2>
- <figure>
- <img src="images/Aggregation-exemple.png" alt="Agrégation" /><figcaption>Agrégation</figcaption>
- </figure>
- <p>Les relations entre agrégat et parties peuvent être:</p>
- <ul>
- <li>structurelles</li>
- <li>comportementales</li>
- </ul>
- <h2 id="destruction">Destruction</h2>
- <figure>
- <img src="images/Aggregation-exemple.png" alt="Agrégation" /><figcaption>Agrégation</figcaption>
- </figure>
- <p>La destruction de l’agrégat n’implique pas la destruction des parties</p>
- <h2 id="exemple-en-java">Exemple en Java</h2>
- <h3 id="diagramme-de-classes">Diagramme de classes</h3>
- <figure>
- <img src="images/Aggregation-classe.png" alt="Agrégation" /><figcaption>Agrégation</figcaption>
- </figure>
- <h3 id="classe-livre">Classe Livre</h3>
- <p><a href="ws/Agregation/src/Livre.java">Classe Livre</a></p>
- <div class="sourceCode" id="cb11"><pre class="sourceCode java"><code class="sourceCode java"><a class="sourceLine" id="cb11-1" data-line-number="1"></a>
- <a class="sourceLine" id="cb11-2" data-line-number="2"><span class="kw">public</span> <span class="kw">class</span> Livre {</a>
- <a class="sourceLine" id="cb11-3" data-line-number="3"> <span class="bu">String</span> titre;</a>
- <a class="sourceLine" id="cb11-4" data-line-number="4"> <span class="fu">Livre</span>(<span class="bu">String</span> t){</a>
- <a class="sourceLine" id="cb11-5" data-line-number="5"> titre = t;</a>
- <a class="sourceLine" id="cb11-6" data-line-number="6"> }</a>
- <a class="sourceLine" id="cb11-7" data-line-number="7">}</a></code></pre></div>
- <h3 id="classe-tablechevet">Classe TableChevet</h3>
- <p><a href="ws/Agregation/src/TableChevet.java">Classe TableChevet</a></p>
- <div class="sourceCode" id="cb12"><pre class="sourceCode java"><code class="sourceCode java"><a class="sourceLine" id="cb12-1" data-line-number="1"></a>
- <a class="sourceLine" id="cb12-2" data-line-number="2"><span class="kw">public</span> <span class="kw">class</span> TableChevet {</a>
- <a class="sourceLine" id="cb12-3" data-line-number="3"> Livre livreMatin;</a>
- <a class="sourceLine" id="cb12-4" data-line-number="4"> Livre livreSoir ;</a>
- <a class="sourceLine" id="cb12-5" data-line-number="5"> </a>
- <a class="sourceLine" id="cb12-6" data-line-number="6"> <span class="kw">public</span> <span class="dt">void</span> <span class="fu">afficherTitres</span>() {</a>
- <a class="sourceLine" id="cb12-7" data-line-number="7"> <span class="bu">System</span>.<span class="fu">out</span>.<span class="fu">println</span>(<span class="st">"Livre posé: "</span>+livreMatin.<span class="fu">titre</span>);</a>
- <a class="sourceLine" id="cb12-8" data-line-number="8"> <span class="bu">System</span>.<span class="fu">out</span>.<span class="fu">println</span>(<span class="st">"Livre posé: "</span>+livreSoir.<span class="fu">titre</span>);</a>
- <a class="sourceLine" id="cb12-9" data-line-number="9"> }</a>
- <a class="sourceLine" id="cb12-10" data-line-number="10"> <span class="kw">public</span> <span class="dt">void</span> <span class="fu">setLivreSoir</span>(Livre livreSoir) {</a>
- <a class="sourceLine" id="cb12-11" data-line-number="11"> <span class="kw">this</span>.<span class="fu">livreSoir</span> = livreSoir;</a>
- <a class="sourceLine" id="cb12-12" data-line-number="12"> }</a>
- <a class="sourceLine" id="cb12-13" data-line-number="13"> <span class="kw">public</span> <span class="dt">void</span> <span class="fu">setLivreMatin</span>(Livre livreMatin) {</a>
- <a class="sourceLine" id="cb12-14" data-line-number="14"> <span class="kw">this</span>.<span class="fu">livreMatin</span> = livreMatin;</a>
- <a class="sourceLine" id="cb12-15" data-line-number="15"> }</a>
- <a class="sourceLine" id="cb12-16" data-line-number="16"> <span class="kw">public</span> <span class="dt">void</span> <span class="fu">finalize</span>() {</a>
- <a class="sourceLine" id="cb12-17" data-line-number="17"> <span class="bu">System</span>.<span class="fu">out</span>.<span class="fu">println</span>(<span class="st">"La table de chevet est vendue"</span>);</a>
- <a class="sourceLine" id="cb12-18" data-line-number="18"> }</a>
- <a class="sourceLine" id="cb12-19" data-line-number="19">}</a></code></pre></div>
- <h3 id="classe-personne">Classe Personne</h3>
- <p><a href="ws/Agregation/src/Personne.java">Classe Personne</a></p>
- <div class="sourceCode" id="cb13"><pre class="sourceCode java"><code class="sourceCode java"><a class="sourceLine" id="cb13-1" data-line-number="1"></a>
- <a class="sourceLine" id="cb13-2" data-line-number="2"><span class="kw">public</span> <span class="kw">class</span> Personne {</a>
- <a class="sourceLine" id="cb13-3" data-line-number="3"> TableChevet tableChevet ;</a>
- <a class="sourceLine" id="cb13-4" data-line-number="4"> </a>
- <a class="sourceLine" id="cb13-5" data-line-number="5"> Livre aube = <span class="kw">new</span> <span class="fu">Livre</span>(<span class="st">"Aube"</span>);</a>
- <a class="sourceLine" id="cb13-6" data-line-number="6"> Livre crepuscule = <span class="kw">new</span> <span class="fu">Livre</span>(<span class="st">"Crepuscule"</span>);</a>
- <a class="sourceLine" id="cb13-7" data-line-number="7"> </a>
- <a class="sourceLine" id="cb13-8" data-line-number="8"> <span class="fu">Personne</span>(){</a>
- <a class="sourceLine" id="cb13-9" data-line-number="9"> tableChevet = <span class="kw">new</span> <span class="fu">TableChevet</span>();</a>
- <a class="sourceLine" id="cb13-10" data-line-number="10"> tableChevet.<span class="fu">setLivreMatin</span>(aube);</a>
- <a class="sourceLine" id="cb13-11" data-line-number="11"> tableChevet.<span class="fu">setLivreSoir</span>(crepuscule);</a>
- <a class="sourceLine" id="cb13-12" data-line-number="12"> }</a>
- <a class="sourceLine" id="cb13-13" data-line-number="13"> <span class="kw">public</span> <span class="dt">void</span> <span class="fu">vendreTableChevet</span>() {</a>
- <a class="sourceLine" id="cb13-14" data-line-number="14"> tableChevet = <span class="kw">null</span>;</a>
- <a class="sourceLine" id="cb13-15" data-line-number="15"> }</a>
- <a class="sourceLine" id="cb13-16" data-line-number="16"> <span class="kw">public</span> <span class="dt">void</span> <span class="fu">citerLivres</span>() {</a>
- <a class="sourceLine" id="cb13-17" data-line-number="17"> <span class="bu">System</span>.<span class="fu">out</span>.<span class="fu">println</span>(<span class="st">"Mon livre du matin: "</span>+ aube.<span class="fu">titre</span>);</a>
- <a class="sourceLine" id="cb13-18" data-line-number="18"> <span class="bu">System</span>.<span class="fu">out</span>.<span class="fu">println</span>(<span class="st">"Mon livre du soir: "</span>+crepuscule.<span class="fu">titre</span>);</a>
- <a class="sourceLine" id="cb13-19" data-line-number="19"> }</a>
- <a class="sourceLine" id="cb13-20" data-line-number="20">}</a></code></pre></div>
- <h3 id="classe-lirematinetsoir">Classe LireMatinEtSoir</h3>
- <p><a href="ws/Agregation/src/LireMatinEtSoir.java">Classe LireMatinEtSoir</a></p>
- <div class="sourceCode" id="cb14"><pre class="sourceCode java"><code class="sourceCode java"><a class="sourceLine" id="cb14-1" data-line-number="1"></a>
- <a class="sourceLine" id="cb14-2" data-line-number="2"><span class="kw">public</span> <span class="kw">class</span> LireMatinEtSoir {</a>
- <a class="sourceLine" id="cb14-3" data-line-number="3"> <span class="kw">public</span> <span class="dt">static</span> <span class="dt">void</span> <span class="fu">main</span>(<span class="bu">String</span>[] args) {</a>
- <a class="sourceLine" id="cb14-4" data-line-number="4"> Personne joey = <span class="kw">new</span> <span class="fu">Personne</span>();</a>
- <a class="sourceLine" id="cb14-5" data-line-number="5"> </a>
- <a class="sourceLine" id="cb14-6" data-line-number="6"> joey.<span class="fu">citerLivres</span>();</a>
- <a class="sourceLine" id="cb14-7" data-line-number="7"> joey.<span class="fu">tableChevet</span>.<span class="fu">afficherTitres</span>();</a>
- <a class="sourceLine" id="cb14-8" data-line-number="8"> joey.<span class="fu">vendreTableChevet</span>();</a>
- <a class="sourceLine" id="cb14-9" data-line-number="9"> <span class="fu">nettoyerObjets</span>();</a>
- <a class="sourceLine" id="cb14-10" data-line-number="10"> <span class="bu">System</span>.<span class="fu">out</span>.<span class="fu">println</span>(joey.<span class="fu">tableChevet</span>);</a>
- <a class="sourceLine" id="cb14-11" data-line-number="11"> joey.<span class="fu">citerLivres</span>();</a>
- <a class="sourceLine" id="cb14-12" data-line-number="12"> }</a>
- <a class="sourceLine" id="cb14-13" data-line-number="13"> </a>
- <a class="sourceLine" id="cb14-14" data-line-number="14"> <span class="kw">public</span> <span class="dt">static</span> <span class="dt">void</span> <span class="fu">nettoyerObjets</span>() {</a>
- <a class="sourceLine" id="cb14-15" data-line-number="15"> <span class="bu">System</span>.<span class="fu">out</span>.<span class="fu">println</span>(<span class="st">"Ramasse-miettes"</span>);</a>
- <a class="sourceLine" id="cb14-16" data-line-number="16"> <span class="kw">try</span> {</a>
- <a class="sourceLine" id="cb14-17" data-line-number="17"> <span class="bu">System</span>.<span class="fu">gc</span>();</a>
- <a class="sourceLine" id="cb14-18" data-line-number="18"> <span class="bu">Thread</span>.<span class="fu">sleep</span>(<span class="dv">100</span>);</a>
- <a class="sourceLine" id="cb14-19" data-line-number="19"> } <span class="kw">catch</span> (<span class="bu">InterruptedException</span> e) {</a>
- <a class="sourceLine" id="cb14-20" data-line-number="20"> <span class="bu">System</span>.<span class="fu">err</span>.<span class="fu">println</span>(e);</a>
- <a class="sourceLine" id="cb14-21" data-line-number="21"> }</a>
- <a class="sourceLine" id="cb14-22" data-line-number="22"> }</a>
- <a class="sourceLine" id="cb14-23" data-line-number="23">}</a></code></pre></div>
- <h1 id="composition">Composition</h1>
- <h2 id="définition-1">Définition</h2>
- <p>Une composition consiste en un assemblage d’objets:</p>
- <ul>
- <li>chaque objet est un composant de l’élément composite</li>
- </ul>
- <div class="incremental">
- <p>Ces objets sont liés par une relation dans laquelle :</p>
- <ul>
- <li>un composant est inclus dans un élément composite</li>
- <li>un composant ne peut être lié à plus d’un élément composite</li>
- </ul>
- </div>
- <h2 id="exemple-1">Exemple</h2>
- <figure>
- <img src="images/Composition-exemple.png" alt="Composition" /><figcaption>Composition</figcaption>
- </figure>
- <h2 id="relations-1">Relations</h2>
- <figure>
- <img src="images/Composition-exemple.png" alt="Composition" /><figcaption>Composition</figcaption>
- </figure>
- <p>Les relations entre composite et composants sont structurelles</p>
- <h2 id="destruction-1">Destruction</h2>
- <figure>
- <img src="images/Composition-exemple.png" alt="Agrégation" /><figcaption>Agrégation</figcaption>
- </figure>
- <p>La destruction de la composition implique la destruction des composants</p>
- <h2 id="exemple-en-java-1">Exemple en Java</h2>
- <h3 id="diagramme-de-classes-1">Diagramme de classes</h3>
- <figure>
- <img src="images/Composition-classe.png" alt="Composition" /><figcaption>Composition</figcaption>
- </figure>
- <h3 id="classe-livre-1">Classe Livre</h3>
- <p><a href="ws/Composition/src/Livre.java">Classe Livre</a></p>
- <div class="sourceCode" id="cb15"><pre class="sourceCode java"><code class="sourceCode java"><a class="sourceLine" id="cb15-1" data-line-number="1"><span class="kw">import</span><span class="im"> java.util.ArrayList;</span></a>
- <a class="sourceLine" id="cb15-2" data-line-number="2"><span class="kw">import</span><span class="im"> java.util.List;</span></a>
- <a class="sourceLine" id="cb15-3" data-line-number="3"></a>
- <a class="sourceLine" id="cb15-4" data-line-number="4"><span class="kw">public</span> <span class="kw">class</span> Livre {</a>
- <a class="sourceLine" id="cb15-5" data-line-number="5"> <span class="bu">String</span> titre;</a>
- <a class="sourceLine" id="cb15-6" data-line-number="6"> <span class="bu">List</span><Page> pages = <span class="kw">new</span> <span class="bu">ArrayList</span><>();</a>
- <a class="sourceLine" id="cb15-7" data-line-number="7"> </a>
- <a class="sourceLine" id="cb15-8" data-line-number="8"> <span class="fu">Livre</span>(<span class="bu">String</span> t){</a>
- <a class="sourceLine" id="cb15-9" data-line-number="9"> titre = t;</a>
- <a class="sourceLine" id="cb15-10" data-line-number="10"> pages.<span class="fu">add</span>(<span class="kw">new</span> <span class="fu">Page</span>(<span class="dv">1</span>, <span class="kw">this</span>));</a>
- <a class="sourceLine" id="cb15-11" data-line-number="11"> pages.<span class="fu">add</span>(<span class="kw">new</span> <span class="fu">Page</span>(<span class="dv">2</span>, <span class="kw">this</span>));</a>
- <a class="sourceLine" id="cb15-12" data-line-number="12"> pages.<span class="fu">add</span>(<span class="kw">new</span> <span class="fu">Page</span>(<span class="dv">3</span>, <span class="kw">this</span>));</a>
- <a class="sourceLine" id="cb15-13" data-line-number="13"> }</a>
- <a class="sourceLine" id="cb15-14" data-line-number="14"> </a>
- <a class="sourceLine" id="cb15-15" data-line-number="15"> <span class="kw">public</span> <span class="dt">void</span> <span class="fu">finalize</span>() {</a>
- <a class="sourceLine" id="cb15-16" data-line-number="16"> <span class="bu">System</span>.<span class="fu">out</span>.<span class="fu">println</span>(<span class="st">"Le livre "</span>+titre+<span class="st">" est brûlé."</span>);</a>
- <a class="sourceLine" id="cb15-17" data-line-number="17"> }</a>
- <a class="sourceLine" id="cb15-18" data-line-number="18">}</a></code></pre></div>
- <h3 id="classe-page">Classe Page</h3>
- <p><a href="ws/Composition/src/Page.java">Classe Page</a></p>
- <div class="sourceCode" id="cb16"><pre class="sourceCode java"><code class="sourceCode java"><a class="sourceLine" id="cb16-1" data-line-number="1"></a>
- <a class="sourceLine" id="cb16-2" data-line-number="2"><span class="kw">public</span> <span class="kw">class</span> Page {</a>
- <a class="sourceLine" id="cb16-3" data-line-number="3"> <span class="dt">int</span> numero;</a>
- <a class="sourceLine" id="cb16-4" data-line-number="4"> Livre livre ;</a>
- <a class="sourceLine" id="cb16-5" data-line-number="5"> <span class="fu">Page</span>(<span class="dt">int</span> num, Livre l){</a>
- <a class="sourceLine" id="cb16-6" data-line-number="6"> numero = num;</a>
- <a class="sourceLine" id="cb16-7" data-line-number="7"> livre = l;</a>
- <a class="sourceLine" id="cb16-8" data-line-number="8"> }</a>
- <a class="sourceLine" id="cb16-9" data-line-number="9"> <span class="kw">public</span> <span class="dt">void</span> <span class="fu">finalize</span>() {</a>
- <a class="sourceLine" id="cb16-10" data-line-number="10"> <span class="bu">System</span>.<span class="fu">out</span>.<span class="fu">println</span>(<span class="st">"La page "</span></a>
- <a class="sourceLine" id="cb16-11" data-line-number="11"> +numero+<span class="st">" du livre "</span></a>
- <a class="sourceLine" id="cb16-12" data-line-number="12"> +livre.<span class="fu">titre</span>+<span class="st">" brûle."</span>);</a>
- <a class="sourceLine" id="cb16-13" data-line-number="13"> }</a>
- <a class="sourceLine" id="cb16-14" data-line-number="14">}</a></code></pre></div>
- <h3 id="classe-personne-1">Classe Personne</h3>
- <p><a href="ws/Composition/src/Personne.java">Classe Personne</a></p>
- <div class="sourceCode" id="cb17"><pre class="sourceCode java"><code class="sourceCode java"><a class="sourceLine" id="cb17-1" data-line-number="1"></a>
- <a class="sourceLine" id="cb17-2" data-line-number="2"><span class="kw">public</span> <span class="kw">class</span> Personne {</a>
- <a class="sourceLine" id="cb17-3" data-line-number="3"> Livre aube = <span class="kw">new</span> <span class="fu">Livre</span>(<span class="st">"Aube"</span>);</a>
- <a class="sourceLine" id="cb17-4" data-line-number="4"> Livre crepuscule = <span class="kw">new</span> <span class="fu">Livre</span>(<span class="st">"Crepuscule"</span>);</a>
- <a class="sourceLine" id="cb17-5" data-line-number="5"> </a>
- <a class="sourceLine" id="cb17-6" data-line-number="6"> <span class="fu">Personne</span>(){</a>
- <a class="sourceLine" id="cb17-7" data-line-number="7"> }</a>
- <a class="sourceLine" id="cb17-8" data-line-number="8"> <span class="kw">public</span> <span class="dt">void</span> <span class="fu">brulerLivres</span>() {</a>
- <a class="sourceLine" id="cb17-9" data-line-number="9"> <span class="bu">System</span>.<span class="fu">out</span>.<span class="fu">println</span>(<span class="st">"Je brûle mes livres"</span>);</a>
- <a class="sourceLine" id="cb17-10" data-line-number="10"> aube = <span class="kw">null</span>;</a>
- <a class="sourceLine" id="cb17-11" data-line-number="11"> crepuscule = <span class="kw">null</span>;</a>
- <a class="sourceLine" id="cb17-12" data-line-number="12"> }</a>
- <a class="sourceLine" id="cb17-13" data-line-number="13"> <span class="kw">public</span> <span class="dt">void</span> <span class="fu">citerLivres</span>() {</a>
- <a class="sourceLine" id="cb17-14" data-line-number="14"> <span class="kw">if</span> (aube != <span class="kw">null</span>) {</a>
- <a class="sourceLine" id="cb17-15" data-line-number="15"> <span class="bu">System</span>.<span class="fu">out</span>.<span class="fu">println</span>(<span class="st">"Mon livre du matin: "</span>+ aube);</a>
- <a class="sourceLine" id="cb17-16" data-line-number="16"> }<span class="kw">else</span> {</a>
- <a class="sourceLine" id="cb17-17" data-line-number="17"> <span class="bu">System</span>.<span class="fu">out</span>.<span class="fu">println</span>(<span class="st">"Pas de livre du matin"</span>);</a>
- <a class="sourceLine" id="cb17-18" data-line-number="18"> }</a>
- <a class="sourceLine" id="cb17-19" data-line-number="19"> <span class="kw">if</span> (crepuscule != <span class="kw">null</span>) {</a>
- <a class="sourceLine" id="cb17-20" data-line-number="20"> <span class="bu">System</span>.<span class="fu">out</span>.<span class="fu">println</span>(<span class="st">"Mon livre du soir: "</span>+ crepuscule);</a>
- <a class="sourceLine" id="cb17-21" data-line-number="21"> }<span class="kw">else</span> {</a>
- <a class="sourceLine" id="cb17-22" data-line-number="22"> <span class="bu">System</span>.<span class="fu">out</span>.<span class="fu">println</span>(<span class="st">"Pas de livre du soir"</span>);</a>
- <a class="sourceLine" id="cb17-23" data-line-number="23"> }</a>
- <a class="sourceLine" id="cb17-24" data-line-number="24"> }</a>
- <a class="sourceLine" id="cb17-25" data-line-number="25">}</a></code></pre></div>
- <h3 id="classe-brulerlivres">Classe BrulerLivres</h3>
- <p><a href="ws/Composition/src/BrulerLivres.java">Classe BrulerLivres</a></p>
- <div class="sourceCode" id="cb18"><pre class="sourceCode java"><code class="sourceCode java"><a class="sourceLine" id="cb18-1" data-line-number="1"></a>
- <a class="sourceLine" id="cb18-2" data-line-number="2"><span class="kw">public</span> <span class="kw">class</span> BrulerLivres {</a>
- <a class="sourceLine" id="cb18-3" data-line-number="3"> <span class="kw">public</span> <span class="dt">static</span> <span class="dt">void</span> <span class="fu">main</span>(<span class="bu">String</span>[] args) {</a>
- <a class="sourceLine" id="cb18-4" data-line-number="4"> Personne joey = <span class="kw">new</span> <span class="fu">Personne</span>();</a>
- <a class="sourceLine" id="cb18-5" data-line-number="5"> </a>
- <a class="sourceLine" id="cb18-6" data-line-number="6"> joey.<span class="fu">brulerLivres</span>();</a>
- <a class="sourceLine" id="cb18-7" data-line-number="7"> <span class="fu">nettoyerObjets</span>();</a>
- <a class="sourceLine" id="cb18-8" data-line-number="8"> joey.<span class="fu">citerLivres</span>();</a>
- <a class="sourceLine" id="cb18-9" data-line-number="9"> }</a>
- <a class="sourceLine" id="cb18-10" data-line-number="10"> </a>
- <a class="sourceLine" id="cb18-11" data-line-number="11"> <span class="kw">public</span> <span class="dt">static</span> <span class="dt">void</span> <span class="fu">nettoyerObjets</span>() {</a>
- <a class="sourceLine" id="cb18-12" data-line-number="12"> <span class="bu">System</span>.<span class="fu">out</span>.<span class="fu">println</span>(<span class="st">"Ramasse-miettes"</span>);</a>
- <a class="sourceLine" id="cb18-13" data-line-number="13"> <span class="kw">try</span> {</a>
- <a class="sourceLine" id="cb18-14" data-line-number="14"> <span class="bu">System</span>.<span class="fu">gc</span>();</a>
- <a class="sourceLine" id="cb18-15" data-line-number="15"> <span class="bu">Thread</span>.<span class="fu">sleep</span>(<span class="dv">100</span>);</a>
- <a class="sourceLine" id="cb18-16" data-line-number="16"> } <span class="kw">catch</span> (<span class="bu">InterruptedException</span> e) {</a>
- <a class="sourceLine" id="cb18-17" data-line-number="17"> <span class="bu">System</span>.<span class="fu">err</span>.<span class="fu">println</span>(e);</a>
- <a class="sourceLine" id="cb18-18" data-line-number="18"> }</a>
- <a class="sourceLine" id="cb18-19" data-line-number="19"> }</a>
- <a class="sourceLine" id="cb18-20" data-line-number="20">}</a></code></pre></div>
- <h1 id="délégation">Délégation</h1>
- <h2 id="définition-2">Définition</h2>
- <p>Déléguer c’est faire réaliser le travail par un tiers (un délégué)</p>
- <h2 id="caractéristiques">Caractéristiques</h2>
- <p>La délégation :</p>
- <ul>
- <li>permet de faire réaliser une tâche par le délégué</li>
- <li>donne l’entière responsabilité de la réalisation au délégué</li>
- </ul>
- <h2 id="diagramme-de-séquence">Diagramme de séquence</h2>
- <figure>
- <img src="images/Calculs-delegation-sequence.png" alt="Délégation simple (séquence)" /><figcaption>Délégation simple (séquence)</figcaption>
- </figure>
- <h2 id="diagramme-de-classe">Diagramme de classe</h2>
- <figure>
- <img src="images/Calculs-delegation-classe.png" alt="Délégation simple (classe)" /><figcaption>Délégation simple (classe)</figcaption>
- </figure>
- <h2 id="interface-operateur">Interface Operateur</h2>
- <p><a href="ws/Calcul-delegation-simple/src/Operateur.java"><code>Operateur.java</code></a></p>
- <div class="sourceCode" id="cb19"><pre class="sourceCode java"><code class="sourceCode java"><a class="sourceLine" id="cb19-1" data-line-number="1"></a>
- <a class="sourceLine" id="cb19-2" data-line-number="2"><span class="kw">public</span> <span class="kw">interface</span> Operateur {</a>
- <a class="sourceLine" id="cb19-3" data-line-number="3"> <span class="kw">public</span> <span class="dt">int</span> <span class="fu">appliquer</span>(<span class="dt">int</span> a, <span class="dt">int</span> b);</a>
- <a class="sourceLine" id="cb19-4" data-line-number="4"> <span class="kw">public</span> <span class="bu">String</span> <span class="fu">getType</span>();</a>
- <a class="sourceLine" id="cb19-5" data-line-number="5">}</a></code></pre></div>
- <h2 id="classe-calcul">Classe Calcul</h2>
- <p><a href="ws/Calcul-delegation-simple/src/Calcul.java"><code>Calcul.java</code></a></p>
- <div class="sourceCode" id="cb20"><pre class="sourceCode java"><code class="sourceCode java"><a class="sourceLine" id="cb20-1" data-line-number="1"></a>
- <a class="sourceLine" id="cb20-2" data-line-number="2"><span class="kw">public</span> <span class="kw">class</span> Calcul {</a>
- <a class="sourceLine" id="cb20-3" data-line-number="3"> <span class="kw">private</span> <span class="dt">int</span> resultat ;</a>
- <a class="sourceLine" id="cb20-4" data-line-number="4"> <span class="kw">private</span> <span class="dt">int</span> op1 ;</a>
- <a class="sourceLine" id="cb20-5" data-line-number="5"> <span class="kw">private</span> <span class="dt">int</span> op2;</a>
- <a class="sourceLine" id="cb20-6" data-line-number="6"> <span class="kw">private</span> Operateur operateur;</a>
- <a class="sourceLine" id="cb20-7" data-line-number="7"> </a>
- <a class="sourceLine" id="cb20-8" data-line-number="8"> <span class="fu">Calcul</span>(Operateur lOperateur){</a>
- <a class="sourceLine" id="cb20-9" data-line-number="9"> operateur = lOperateur;</a>
- <a class="sourceLine" id="cb20-10" data-line-number="10"> }</a>
- <a class="sourceLine" id="cb20-11" data-line-number="11"> </a>
- <a class="sourceLine" id="cb20-12" data-line-number="12"> <span class="co">/**</span></a>
- <a class="sourceLine" id="cb20-13" data-line-number="13"> <span class="co">*</span> Accesseur<span class="co">:</span> donne accès à la valeur</a>
- <a class="sourceLine" id="cb20-14" data-line-number="14"> <span class="co">*</span> d<span class="co">'</span>op<span class="co">1</span></a>
- <a class="sourceLine" id="cb20-15" data-line-number="15"> <span class="co">* </span><span class="kw">@return </span>op<span class="co">1</span></a>
- <a class="sourceLine" id="cb20-16" data-line-number="16"> <span class="co">*/</span></a>
- <a class="sourceLine" id="cb20-17" data-line-number="17"> <span class="kw">public</span> <span class="dt">int</span> <span class="fu">getOp1</span>() {</a>
- <a class="sourceLine" id="cb20-18" data-line-number="18"> <span class="kw">return</span> op1;</a>
- <a class="sourceLine" id="cb20-19" data-line-number="19"> }</a>
- <a class="sourceLine" id="cb20-20" data-line-number="20"> </a>
- <a class="sourceLine" id="cb20-21" data-line-number="21"> <span class="kw">public</span> <span class="dt">void</span> <span class="fu">setOp1</span>(<span class="dt">int</span> a) {</a>
- <a class="sourceLine" id="cb20-22" data-line-number="22"> <span class="fu">calculer</span>(a, op2);</a>
- <a class="sourceLine" id="cb20-23" data-line-number="23"> }</a>
- <a class="sourceLine" id="cb20-24" data-line-number="24"> </a>
- <a class="sourceLine" id="cb20-25" data-line-number="25"> <span class="kw">public</span> <span class="dt">void</span> <span class="fu">setOp2</span>(<span class="dt">int</span> b) {</a>
- <a class="sourceLine" id="cb20-26" data-line-number="26"> <span class="fu">calculer</span>(op1, b);</a>
- <a class="sourceLine" id="cb20-27" data-line-number="27"> }</a>
- <a class="sourceLine" id="cb20-28" data-line-number="28"> </a>
- <a class="sourceLine" id="cb20-29" data-line-number="29"> <span class="kw">public</span> <span class="dt">void</span> <span class="fu">calculer</span>(<span class="dt">int</span> a, <span class="dt">int</span> b) {</a>
- <a class="sourceLine" id="cb20-30" data-line-number="30"> op1 = a;</a>
- <a class="sourceLine" id="cb20-31" data-line-number="31"> op2 = b;</a>
- <a class="sourceLine" id="cb20-32" data-line-number="32"> resultat = operateur.<span class="fu">appliquer</span>(op1, op2);</a>
- <a class="sourceLine" id="cb20-33" data-line-number="33"> }</a>
- <a class="sourceLine" id="cb20-34" data-line-number="34"> </a>
- <a class="sourceLine" id="cb20-35" data-line-number="35"> <span class="co">/**</span></a>
- <a class="sourceLine" id="cb20-36" data-line-number="36"> <span class="co">*</span> Accesseur<span class="co">:</span> donne accès à la valeur</a>
- <a class="sourceLine" id="cb20-37" data-line-number="37"> <span class="co">*</span> d<span class="co">'</span>op<span class="co">2</span></a>
- <a class="sourceLine" id="cb20-38" data-line-number="38"> <span class="co">* </span><span class="kw">@return </span>op<span class="co">2</span></a>
- <a class="sourceLine" id="cb20-39" data-line-number="39"> <span class="co">*/</span></a>
- <a class="sourceLine" id="cb20-40" data-line-number="40"> <span class="kw">public</span> <span class="dt">int</span> <span class="fu">getOp2</span>() {</a>
- <a class="sourceLine" id="cb20-41" data-line-number="41"> <span class="kw">return</span> op2;</a>
- <a class="sourceLine" id="cb20-42" data-line-number="42"> }</a>
- <a class="sourceLine" id="cb20-43" data-line-number="43"> </a>
- <a class="sourceLine" id="cb20-44" data-line-number="44"> <span class="kw">public</span> <span class="dt">int</span> <span class="fu">getResultat</span>() {</a>
- <a class="sourceLine" id="cb20-45" data-line-number="45"> <span class="kw">return</span> resultat;</a>
- <a class="sourceLine" id="cb20-46" data-line-number="46"> }</a>
- <a class="sourceLine" id="cb20-47" data-line-number="47"> </a>
- <a class="sourceLine" id="cb20-48" data-line-number="48"> <span class="kw">public</span> <span class="bu">String</span> <span class="fu">getInformation</span>() {</a>
- <a class="sourceLine" id="cb20-49" data-line-number="49"> <span class="kw">return</span> <span class="st">"Le resultat de "</span>+operateur.<span class="fu">getType</span>()</a>
- <a class="sourceLine" id="cb20-50" data-line-number="50"> + <span class="st">" avec "</span> + op1 + <span class="st">" et "</span> + op2 </a>
- <a class="sourceLine" id="cb20-51" data-line-number="51"> + <span class="st">" est "</span> + resultat;</a>
- <a class="sourceLine" id="cb20-52" data-line-number="52"> }</a>
- <a class="sourceLine" id="cb20-53" data-line-number="53">}</a></code></pre></div>
- <h2 id="classe-operateuraddition">Classe OperateurAddition</h2>
- <p><a href="ws/Calcul-delegation-simple/src/OperateurAddition.java"><code>OperateurAddition.java</code></a></p>
- <div class="sourceCode" id="cb21"><pre class="sourceCode java"><code class="sourceCode java"><a class="sourceLine" id="cb21-1" data-line-number="1"></a>
- <a class="sourceLine" id="cb21-2" data-line-number="2"><span class="kw">public</span> <span class="kw">class</span> OperateurAddition <span class="kw">implements</span> Operateur {</a>
- <a class="sourceLine" id="cb21-3" data-line-number="3"> <span class="at">@Override</span></a>
- <a class="sourceLine" id="cb21-4" data-line-number="4"> <span class="kw">public</span> <span class="dt">int</span> <span class="fu">appliquer</span>(<span class="dt">int</span> a, <span class="dt">int</span> b) {</a>
- <a class="sourceLine" id="cb21-5" data-line-number="5"> <span class="kw">return</span> a + b;</a>
- <a class="sourceLine" id="cb21-6" data-line-number="6"> }</a>
- <a class="sourceLine" id="cb21-7" data-line-number="7"></a>
- <a class="sourceLine" id="cb21-8" data-line-number="8"> <span class="at">@Override</span></a>
- <a class="sourceLine" id="cb21-9" data-line-number="9"> <span class="kw">public</span> <span class="bu">String</span> <span class="fu">getType</span>() {</a>
- <a class="sourceLine" id="cb21-10" data-line-number="10"> <span class="kw">return</span> <span class="st">"addition"</span>;</a>
- <a class="sourceLine" id="cb21-11" data-line-number="11"> }</a>
- <a class="sourceLine" id="cb21-12" data-line-number="12">}</a></code></pre></div>
- <h2 id="classe-lancercalculs">Classe LancerCalculs</h2>
- <p><a href="ws/Calcul-delegation-simple/src/LancerCalculs.java">Classe principale <code>LancerCalculs</code></a></p>
- <div class="sourceCode" id="cb22"><pre class="sourceCode java"><code class="sourceCode java"><a class="sourceLine" id="cb22-1" data-line-number="1"></a>
- <a class="sourceLine" id="cb22-2" data-line-number="2"><span class="kw">public</span> <span class="kw">class</span> LancerCalculs {</a>
- <a class="sourceLine" id="cb22-3" data-line-number="3"> <span class="kw">public</span> <span class="dt">static</span> <span class="dt">void</span> <span class="fu">main</span>(<span class="bu">String</span>[] args) {</a>
- <a class="sourceLine" id="cb22-4" data-line-number="4"> Calcul calcul1 = <span class="kw">new</span> <span class="fu">Calcul</span>(<span class="kw">new</span> <span class="fu">OperateurAddition</span>());</a>
- <a class="sourceLine" id="cb22-5" data-line-number="5"> calcul1.<span class="fu">calculer</span>(<span class="dv">3</span>, <span class="dv">5</span>);</a>
- <a class="sourceLine" id="cb22-6" data-line-number="6"> <span class="bu">System</span>.<span class="fu">out</span>.<span class="fu">println</span>(calcul1.<span class="fu">getInformation</span>());</a>
- <a class="sourceLine" id="cb22-7" data-line-number="7"> </a>
- <a class="sourceLine" id="cb22-8" data-line-number="8"> Calcul calcul2 = <span class="kw">new</span> <span class="fu">Calcul</span>(<span class="kw">new</span> <span class="fu">OperateurSoustraction</span>());</a>
- <a class="sourceLine" id="cb22-9" data-line-number="9"> calcul2.<span class="fu">calculer</span>(<span class="dv">4</span>, <span class="dv">5</span>);</a>
- <a class="sourceLine" id="cb22-10" data-line-number="10"> <span class="bu">System</span>.<span class="fu">out</span>.<span class="fu">println</span>(calcul2.<span class="fu">getInformation</span>());</a>
- <a class="sourceLine" id="cb22-11" data-line-number="11"> </a>
- <a class="sourceLine" id="cb22-12" data-line-number="12"> Calcul calcul3 = <span class="kw">new</span> <span class="fu">Calcul</span>(<span class="kw">new</span> <span class="fu">OperateurMultiplication</span>());</a>
- <a class="sourceLine" id="cb22-13" data-line-number="13"> calcul3.<span class="fu">calculer</span>(<span class="dv">3</span>, <span class="dv">5</span>);</a>
- <a class="sourceLine" id="cb22-14" data-line-number="14"> </a>
- <a class="sourceLine" id="cb22-15" data-line-number="15"> calcul3.<span class="fu">setOp1</span>(<span class="dv">7</span>);</a>
- <a class="sourceLine" id="cb22-16" data-line-number="16"> <span class="bu">System</span>.<span class="fu">out</span>.<span class="fu">println</span>(calcul3.<span class="fu">getInformation</span>());</a>
- <a class="sourceLine" id="cb22-17" data-line-number="17"> calcul3.<span class="fu">setOp2</span>(<span class="dv">6</span>);</a>
- <a class="sourceLine" id="cb22-18" data-line-number="18"> <span class="bu">System</span>.<span class="fu">out</span>.<span class="fu">println</span>(calcul3.<span class="fu">getInformation</span>());</a>
- <a class="sourceLine" id="cb22-19" data-line-number="19"> <span class="bu">System</span>.<span class="fu">out</span>.<span class="fu">println</span>(calcul3.<span class="fu">getResultat</span>());</a>
- <a class="sourceLine" id="cb22-20" data-line-number="20"> }</a>
- <a class="sourceLine" id="cb22-21" data-line-number="21"></a>
- <a class="sourceLine" id="cb22-22" data-line-number="22">}</a></code></pre></div>
- <h3 id="exercice">Exercice</h3>
- <p>Compléter le diagramme suivant:</p>
- <figure>
- <img src="images/Calculs-delegation-sequence-exercice.png" alt="Délégation simple (séquence)" /><figcaption>Délégation simple (séquence)</figcaption>
- </figure>
- <h3 id="classe-operateursoustraction">Classe OperateurSoustraction</h3>
- <p><a href="ws/Calcul-delegation-simple/src/OperateurSoustraction.java">Classe <code>OperateurSoustraction</code></a></p>
- <div class="sourceCode" id="cb23"><pre class="sourceCode java"><code class="sourceCode java"><a class="sourceLine" id="cb23-1" data-line-number="1"></a>
- <a class="sourceLine" id="cb23-2" data-line-number="2"><span class="kw">public</span> <span class="kw">class</span> OperateurSoustraction <span class="kw">extends</span> OperateurAddition {</a>
- <a class="sourceLine" id="cb23-3" data-line-number="3"> <span class="at">@Override</span></a>
- <a class="sourceLine" id="cb23-4" data-line-number="4"> <span class="kw">public</span> <span class="dt">int</span> <span class="fu">appliquer</span>(<span class="dt">int</span> a, <span class="dt">int</span> b) {</a>
- <a class="sourceLine" id="cb23-5" data-line-number="5"> <span class="kw">return</span> <span class="kw">super</span>.<span class="fu">appliquer</span>(a, -b);</a>
- <a class="sourceLine" id="cb23-6" data-line-number="6"> }</a>
- <a class="sourceLine" id="cb23-7" data-line-number="7"> <span class="at">@Override</span></a>
- <a class="sourceLine" id="cb23-8" data-line-number="8"> <span class="kw">public</span> <span class="bu">String</span> <span class="fu">getType</span>() {</a>
- <a class="sourceLine" id="cb23-9" data-line-number="9"> <span class="kw">return</span> <span class="st">"soustraction"</span>;</a>
- <a class="sourceLine" id="cb23-10" data-line-number="10"> } </a>
- <a class="sourceLine" id="cb23-11" data-line-number="11">}</a></code></pre></div>
- <h1 id="délégation-hybride">Délégation hybride</h1>
- <h2 id="caractéristiques-1">Caractéristiques</h2>
- <p>La délégation hybride :</p>
- <ul>
- <li>permet de faire réaliser une opération par un objet tiers</li>
- <li>permet au délégué de solliciter le délégateur pour l’aider dans la réalisation</li>
- </ul>
- <h2 id="diagramme-de-séquence-1">Diagramme de séquence</h2>
- <figure>
- <img src="images/Calculs-delegation-hybride-sequence.png" alt="Délégation hybride (séquence)" /><figcaption>Délégation hybride (séquence)</figcaption>
- </figure>
- <h2 id="diagramme-de-classe-1">Diagramme de classe</h2>
- <figure>
- <img src="images/Calculs-delegation-hybride-classe.png" alt="Délégation hybride (classe)" /><figcaption>Délégation hybride (classe)</figcaption>
- </figure>
- <h2 id="interface-operateur-1">Interface Operateur</h2>
- <p><a href="ws/Calcul-delegation-hybride/src/Operateur.java">Interface Operateur</a></p>
- <div class="sourceCode" id="cb24"><pre class="sourceCode java"><code class="sourceCode java"><a class="sourceLine" id="cb24-1" data-line-number="1"></a>
- <a class="sourceLine" id="cb24-2" data-line-number="2"><span class="kw">public</span> <span class="kw">interface</span> Operateur {</a>
- <a class="sourceLine" id="cb24-3" data-line-number="3"> <span class="kw">public</span> <span class="dt">int</span> <span class="fu">appliquer</span>(Calcul c);</a>
- <a class="sourceLine" id="cb24-4" data-line-number="4"> <span class="kw">public</span> <span class="bu">String</span> <span class="fu">getType</span>();</a>
- <a class="sourceLine" id="cb24-5" data-line-number="5">}</a></code></pre></div>
- <h2 id="classe-calcul-1">Classe Calcul</h2>
- <p><a href="ws/Calcul-delegation-hybride/src/Calcul.java">Classe Calcul</a></p>
- <div class="sourceCode" id="cb25"><pre class="sourceCode java"><code class="sourceCode java"><a class="sourceLine" id="cb25-1" data-line-number="1"></a>
- <a class="sourceLine" id="cb25-2" data-line-number="2"><span class="kw">public</span> <span class="kw">class</span> Calcul {</a>
- <a class="sourceLine" id="cb25-3" data-line-number="3"> <span class="kw">private</span> <span class="dt">int</span> resultat ;</a>
- <a class="sourceLine" id="cb25-4" data-line-number="4"> <span class="kw">private</span> <span class="dt">int</span> op1 ;</a>
- <a class="sourceLine" id="cb25-5" data-line-number="5"> <span class="kw">private</span> <span class="dt">int</span> op2;</a>
- <a class="sourceLine" id="cb25-6" data-line-number="6"> <span class="kw">private</span> Operateur operateur;</a>
- <a class="sourceLine" id="cb25-7" data-line-number="7"> </a>
- <a class="sourceLine" id="cb25-8" data-line-number="8"> <span class="fu">Calcul</span>(Operateur lOperateur){</a>
- <a class="sourceLine" id="cb25-9" data-line-number="9"> operateur = lOperateur;</a>
- <a class="sourceLine" id="cb25-10" data-line-number="10"> }</a>
- <a class="sourceLine" id="cb25-11" data-line-number="11"> </a>
- <a class="sourceLine" id="cb25-12" data-line-number="12"> <span class="co">/**</span></a>
- <a class="sourceLine" id="cb25-13" data-line-number="13"> <span class="co">*</span> Accesseur<span class="co">:</span> donne accès à la valeur</a>
- <a class="sourceLine" id="cb25-14" data-line-number="14"> <span class="co">*</span> d<span class="co">'</span>op<span class="co">1</span></a>
- <a class="sourceLine" id="cb25-15" data-line-number="15"> <span class="co">* </span><span class="kw">@return </span>op<span class="co">1</span></a>
- <a class="sourceLine" id="cb25-16" data-line-number="16"> <span class="co">*/</span></a>
- <a class="sourceLine" id="cb25-17" data-line-number="17"> <span class="kw">public</span> <span class="dt">int</span> <span class="fu">getOp1</span>() {</a>
- <a class="sourceLine" id="cb25-18" data-line-number="18"> <span class="kw">return</span> op1;</a>
- <a class="sourceLine" id="cb25-19" data-line-number="19"> }</a>
- <a class="sourceLine" id="cb25-20" data-line-number="20"> </a>
- <a class="sourceLine" id="cb25-21" data-line-number="21"> <span class="kw">public</span> <span class="dt">void</span> <span class="fu">setOp1</span>(<span class="dt">int</span> a) {</a>
- <a class="sourceLine" id="cb25-22" data-line-number="22"> <span class="fu">calculer</span>(a, op2);</a>
- <a class="sourceLine" id="cb25-23" data-line-number="23"> }</a>
- <a class="sourceLine" id="cb25-24" data-line-number="24"> </a>
- <a class="sourceLine" id="cb25-25" data-line-number="25"> <span class="kw">public</span> <span class="dt">void</span> <span class="fu">setOp2</span>(<span class="dt">int</span> b) {</a>
- <a class="sourceLine" id="cb25-26" data-line-number="26"> <span class="fu">calculer</span>(op1, b);</a>
- <a class="sourceLine" id="cb25-27" data-line-number="27"> }</a>
- <a class="sourceLine" id="cb25-28" data-line-number="28"> </a>
- <a class="sourceLine" id="cb25-29" data-line-number="29"> <span class="kw">public</span> <span class="dt">void</span> <span class="fu">calculer</span>(<span class="dt">int</span> a, <span class="dt">int</span> b) {</a>
- <a class="sourceLine" id="cb25-30" data-line-number="30"> op1 = a;</a>
- <a class="sourceLine" id="cb25-31" data-line-number="31"> op2 = b;</a>
- <a class="sourceLine" id="cb25-32" data-line-number="32"> resultat = operateur.<span class="fu">appliquer</span>(<span class="kw">this</span>);</a>
- <a class="sourceLine" id="cb25-33" data-line-number="33"> }</a>
- <a class="sourceLine" id="cb25-34" data-line-number="34"> </a>
- <a class="sourceLine" id="cb25-35" data-line-number="35"> <span class="co">/**</span></a>
- <a class="sourceLine" id="cb25-36" data-line-number="36"> <span class="co">*</span> Accesseur<span class="co">:</span> donne accès à la valeur</a>
- <a class="sourceLine" id="cb25-37" data-line-number="37"> <span class="co">*</span> d<span class="co">'</span>op<span class="co">2</span></a>
- <a class="sourceLine" id="cb25-38" data-line-number="38"> <span class="co">* </span><span class="kw">@return </span>op<span class="co">2</span></a>
- <a class="sourceLine" id="cb25-39" data-line-number="39"> <span class="co">*/</span></a>
- <a class="sourceLine" id="cb25-40" data-line-number="40"> <span class="kw">public</span> <span class="dt">int</span> <span class="fu">getOp2</span>() {</a>
- <a class="sourceLine" id="cb25-41" data-line-number="41"> <span class="kw">return</span> op2;</a>
- <a class="sourceLine" id="cb25-42" data-line-number="42"> }</a>
- <a class="sourceLine" id="cb25-43" data-line-number="43"> </a>
- <a class="sourceLine" id="cb25-44" data-line-number="44"> <span class="kw">public</span> <span class="dt">int</span> <span class="fu">getResultat</span>() {</a>
- <a class="sourceLine" id="cb25-45" data-line-number="45"> <span class="kw">return</span> resultat;</a>
- <a class="sourceLine" id="cb25-46" data-line-number="46"> }</a>
- <a class="sourceLine" id="cb25-47" data-line-number="47"> </a>
- <a class="sourceLine" id="cb25-48" data-line-number="48"> <span class="kw">public</span> <span class="bu">String</span> <span class="fu">getInformation</span>() {</a>
- <a class="sourceLine" id="cb25-49" data-line-number="49"> <span class="kw">return</span> <span class="st">"Le resultat de "</span>+operateur.<span class="fu">getType</span>()</a>
- <a class="sourceLine" id="cb25-50" data-line-number="50"> + <span class="st">" avec "</span> + op1 + <span class="st">" et "</span> + op2 </a>
- <a class="sourceLine" id="cb25-51" data-line-number="51"> + <span class="st">" est "</span> + resultat;</a>
- <a class="sourceLine" id="cb25-52" data-line-number="52"> }</a>
- <a class="sourceLine" id="cb25-53" data-line-number="53">}</a></code></pre></div>
- <h2 id="classe-operateuraddition-1">Classe OperateurAddition</h2>
- <p><a href="ws/Calcul-delegation-hybride/src/OperateurAddition.java">Classe OperateurAddition</a></p>
- <div class="sourceCode" id="cb26"><pre class="sourceCode java"><code class="sourceCode java"><a class="sourceLine" id="cb26-1" data-line-number="1"></a>
- <a class="sourceLine" id="cb26-2" data-line-number="2"><span class="kw">public</span> <span class="kw">class</span> OperateurAddition <span class="kw">implements</span> Operateur {</a>
- <a class="sourceLine" id="cb26-3" data-line-number="3"> <span class="at">@Override</span></a>
- <a class="sourceLine" id="cb26-4" data-line-number="4"> <span class="kw">public</span> <span class="dt">int</span> <span class="fu">appliquer</span>(Calcul c) {</a>
- <a class="sourceLine" id="cb26-5" data-line-number="5"> <span class="kw">return</span> c.<span class="fu">getOp1</span>() + c.<span class="fu">getOp2</span>();</a>
- <a class="sourceLine" id="cb26-6" data-line-number="6"> }</a>
- <a class="sourceLine" id="cb26-7" data-line-number="7"></a>
- <a class="sourceLine" id="cb26-8" data-line-number="8"> <span class="at">@Override</span></a>
- <a class="sourceLine" id="cb26-9" data-line-number="9"> <span class="kw">public</span> <span class="bu">String</span> <span class="fu">getType</span>() {</a>
- <a class="sourceLine" id="cb26-10" data-line-number="10"> <span class="kw">return</span> <span class="st">"addition"</span>;</a>
- <a class="sourceLine" id="cb26-11" data-line-number="11"> }</a>
- <a class="sourceLine" id="cb26-12" data-line-number="12">}</a></code></pre></div>
- <h2 id="classe-operateursoustraction-1">Classe OperateurSoustraction</h2>
- <p><a href="ws/Calcul-delegation-hybride/src/OperateurSoustraction.java">Classe OperateurSoustraction</a></p>
- <div class="sourceCode" id="cb27"><pre class="sourceCode java"><code class="sourceCode java"><a class="sourceLine" id="cb27-1" data-line-number="1"></a>
- <a class="sourceLine" id="cb27-2" data-line-number="2"><span class="kw">public</span> <span class="kw">class</span> OperateurSoustraction <span class="kw">implements</span> Operateur {</a>
- <a class="sourceLine" id="cb27-3" data-line-number="3"> <span class="at">@Override</span></a>
- <a class="sourceLine" id="cb27-4" data-line-number="4"> <span class="kw">public</span> <span class="dt">int</span> <span class="fu">appliquer</span>(Calcul c) {</a>
- <a class="sourceLine" id="cb27-5" data-line-number="5"> <span class="kw">return</span> c.<span class="fu">getOp1</span>() - c.<span class="fu">getOp2</span>();</a>
- <a class="sourceLine" id="cb27-6" data-line-number="6"> }</a>
- <a class="sourceLine" id="cb27-7" data-line-number="7"> <span class="at">@Override</span></a>
- <a class="sourceLine" id="cb27-8" data-line-number="8"> <span class="kw">public</span> <span class="bu">String</span> <span class="fu">getType</span>() {</a>
- <a class="sourceLine" id="cb27-9" data-line-number="9"> <span class="kw">return</span> <span class="st">"soustraction"</span>;</a>
- <a class="sourceLine" id="cb27-10" data-line-number="10"> } </a>
- <a class="sourceLine" id="cb27-11" data-line-number="11">}</a></code></pre></div>
- <h2 id="classe-lancercalculs-1">Classe LancerCalculs</h2>
- <p>Elle reste idendique à la version précédente.</p>
- <h1 id="exercices">Exercices</h1>
- <h2 id="lettre">Lettre</h2>
- <p>La classe <code>Lettre</code> permet de représenter les lettres d’un alphabet. Chaque lettre possède un nom.</p>
- <p>A chaque instance est associée :</p>
- <ul>
- <li>une instance de la classe <code>Symbole</code> correspondant à sa représentation en <code>majuscule</code></li>
- <li>une autre à sa représentation en <code>minuscule</code></li>
- </ul>
- <ol type="1">
- <li>Donner le diagramme de classe UML correspondant</li>
- <li>Créer les classes correspondantes en Java.</li>
- <li>Créer une classe principale ‘LettresEtSymboles’ qui instancie les lettres: <code>A</code>, <code>B</code> et <code>C</code>.</li>
- <li>Afficher les noms et symboles pour ces trois instances de <code>Lettre</code></li>
- </ol>
- <h2 id="chiffres">Chiffres</h2>
- <p>La classe <code>Chiffre</code> permet de représenter les symboles de numération. Chaque chiffre est associé:</p>
- <ul>
- <li>à un nom</li>
- <li>à une valeur numérique (sous forme d’entier)</li>
- <li>à un symbole</li>
- </ul>
- <ol type="1">
- <li>Donner le diagramme de classe UML correspondant</li>
- <li>Créer les classes correspondantes en Java.</li>
- <li>Modifier la classe principale ‘LettresEtSymboles’ pour instancier les chiffres: <code>0</code>, <code>1</code> et <code>9</code>.</li>
- <li>Afficher les noms et symboles pour ces trois instances de <code>Chiffre</code></li>
- </ol>
- <h2 id="mot-et-nombre">Mot et nombre</h2>
- <p>La classe <code>Mot</code> représente un ensemble composée de lettres.</p>
- <p>La classe <code>Nombre</code> représente un ensemble composée de chiffres.</p>
- <ol type="1">
- <li>Représenter ces classes sous forme de diagramme UML et leurs associations avec les classes précédemment créées.</li>
- </ol>
- <h1 id="associations-à-cardinalités-multiples">Associations à cardinalités multiples</h1>
- <h2 id="ensemble-non-ordonné">Ensemble non ordonné</h2>
- <p>Un ensemble représente une collection d’objets non ordonnés.</p>
- <figure>
- <img src="images/UML-association-cardinalite-set.png" alt="Association" /><figcaption>Association</figcaption>
- </figure>
- <h3 id="code-java-équivalent-3">Code Java équivalent</h3>
- <div class="sourceCode" id="cb28"><pre class="sourceCode java"><code class="sourceCode java"><a class="sourceLine" id="cb28-1" data-line-number="1"><span class="kw">public</span> <span class="kw">class</span> EntiersRelatifs {</a>
- <a class="sourceLine" id="cb28-2" data-line-number="2"> <span class="bu">Set</span><<span class="bu">String</span>> mots = <span class="kw">new</span> <span class="bu">TreeSet</span><>(); <span class="co">//ou une classe implémentant Set</span></a>
- <a class="sourceLine" id="cb28-3" data-line-number="3">}</a></code></pre></div>
- <h2 id="ensemble-ordonné-cardinalité-fixée">Ensemble ordonné (cardinalité fixée)</h2>
- <p>Objets ordonnés dont le nombre est fixé.</p>
- <figure>
- <img src="images/UML-association-cardinalite-array.png" alt="Association" /><figcaption>Association</figcaption>
- </figure>
- <h3 id="code-java-équivalent-4">Code Java équivalent</h3>
- <div class="sourceCode" id="cb29"><pre class="sourceCode java"><code class="sourceCode java"><a class="sourceLine" id="cb29-1" data-line-number="1"><span class="kw">public</span> <span class="kw">class</span> Wagon {</a>
- <a class="sourceLine" id="cb29-2" data-line-number="2"> <span class="kw">private</span> PlaceAssise[] placesAssises = <span class="kw">new</span> PlaceAssise[<span class="dv">36</span>] ;</a>
- <a class="sourceLine" id="cb29-3" data-line-number="3">}</a></code></pre></div>
- <h2 id="ensemble-ordonné">Ensemble ordonné</h2>
- <p>Objets ordonnés dont le nombre peut varier.</p>
- <figure>
- <img src="images/UML-association-cardinalite-list.png" alt="Association" /><figcaption>Association</figcaption>
- </figure>
- <h3 id="code-java-équivalent-5">Code Java équivalent</h3>
- <div class="sourceCode" id="cb30"><pre class="sourceCode java"><code class="sourceCode java"><a class="sourceLine" id="cb30-1" data-line-number="1"><span class="kw">public</span> <span class="kw">class</span> Classeur {</a>
- <a class="sourceLine" id="cb30-2" data-line-number="2"> <span class="kw">private</span> <span class="bu">List</span><Feuille> feuilles = <span class="kw">new</span> <span class="bu">ArrayList</span><>();</a>
- <a class="sourceLine" id="cb30-3" data-line-number="3"> <span class="co">// ou LinkedList ou classe implémentant List</span></a>
- <a class="sourceLine" id="cb30-4" data-line-number="4">}</a></code></pre></div>
- <h2 id="sequence">Sequence</h2>
- <p>Collection ordonnée pouvant contenir plusieurs fois la même occurence d’une même valeur.</p>
- <p>Au Clair De La Lune : <code>{Do, Do, Do, Ré, Mi, Ré, Do, Mi, Ré, Ré, Do}</code></p>
- <figure>
- <img src="images/UML-association-cardinalite-sequence.png" alt="Association" /><figcaption>Association</figcaption>
- </figure>
- <h3 id="code-java-équivalent-6">Code Java équivalent</h3>
- <div class="sourceCode" id="cb31"><pre class="sourceCode java"><code class="sourceCode java"><a class="sourceLine" id="cb31-1" data-line-number="1"><span class="kw">public</span> <span class="kw">class</span> Melodie {</a>
- <a class="sourceLine" id="cb31-2" data-line-number="2"> <span class="kw">private</span> <span class="bu">List</span><Note> notes = <span class="kw">new</span> <span class="bu">ArrayList</span><>();</a>
- <a class="sourceLine" id="cb31-3" data-line-number="3"> <span class="co">// ou LinkedList ou classe implémentant List</span></a>
- <a class="sourceLine" id="cb31-4" data-line-number="4">}</a></code></pre></div>
- <h2 id="initialisation-des-associations-1-n">Initialisation des associations 1-n</h2>
- <h3 id="création">Création</h3>
- <div class="sourceCode" id="cb32"><pre class="sourceCode java"><code class="sourceCode java"><a class="sourceLine" id="cb32-1" data-line-number="1"><span class="kw">public</span> <span class="kw">class</span> Classeur {</a>
- <a class="sourceLine" id="cb32-2" data-line-number="2"> <span class="kw">private</span> <span class="bu">List</span><Feuille> feuilles ;</a>
- <a class="sourceLine" id="cb32-3" data-line-number="3"></a>
- <a class="sourceLine" id="cb32-4" data-line-number="4"> <span class="kw">public</span> <span class="fu">Classeur</span>() {</a>
- <a class="sourceLine" id="cb32-5" data-line-number="5"> feuilles = <span class="kw">new</span> <span class="bu">ArrayList</span><>();</a>
- <a class="sourceLine" id="cb32-6" data-line-number="6"> }</a>
- <a class="sourceLine" id="cb32-7" data-line-number="7"></a>
- <a class="sourceLine" id="cb32-8" data-line-number="8"> <span class="kw">public</span> <span class="fu">Classeur</span>(<span class="bu">List</span><Feuille> feuilles) {</a>
- <a class="sourceLine" id="cb32-9" data-line-number="9"> <span class="kw">this</span>.<span class="fu">feuilles</span> = feuilles;</a>
- <a class="sourceLine" id="cb32-10" data-line-number="10"> }</a>
- <a class="sourceLine" id="cb32-11" data-line-number="11"></a>
- <a class="sourceLine" id="cb32-12" data-line-number="12"> <span class="kw">public</span> <span class="fu">Classeur</span>(Feuille<span class="kw">... </span>feuilles) {</a>
- <a class="sourceLine" id="cb32-13" data-line-number="13"> <span class="kw">this</span>.<span class="fu">feuilles</span> = <span class="kw">new</span> <span class="bu">ArrayList</span><>(<span class="bu">Arrays</span>.<span class="fu">asList</span>(feuilles));</a>
- <a class="sourceLine" id="cb32-14" data-line-number="14"> }</a>
- <a class="sourceLine" id="cb32-15" data-line-number="15">}</a></code></pre></div>
- <h3 id="ajout">Ajout</h3>
- <div class="sourceCode" id="cb33"><pre class="sourceCode java"><code class="sourceCode java"><a class="sourceLine" id="cb33-1" data-line-number="1"><span class="kw">public</span> <span class="kw">class</span> Classeur {</a>
- <a class="sourceLine" id="cb33-2" data-line-number="2"> <span class="kw">private</span> <span class="bu">List</span><Feuille> feuilles ;</a>
- <a class="sourceLine" id="cb33-3" data-line-number="3"> <span class="co">//...</span></a>
- <a class="sourceLine" id="cb33-4" data-line-number="4"> <span class="kw">public</span> <span class="dt">void</span> <span class="fu">addFeuille</span>(Feuille p) {</a>
- <a class="sourceLine" id="cb33-5" data-line-number="5"> feuilles.<span class="fu">add</span>(p);</a>
- <a class="sourceLine" id="cb33-6" data-line-number="6"> }</a>
- <a class="sourceLine" id="cb33-7" data-line-number="7"></a>
- <a class="sourceLine" id="cb33-8" data-line-number="8"> <span class="kw">public</span> <span class="dt">void</span> <span class="fu">addFeuilles</span>(<span class="bu">Collection</span><Feuille> feuilles) {</a>
- <a class="sourceLine" id="cb33-9" data-line-number="9"> <span class="kw">this</span>.<span class="fu">feuilles</span>.<span class="fu">addAll</span>(feuilles);</a>
- <a class="sourceLine" id="cb33-10" data-line-number="10"> }</a>
- <a class="sourceLine" id="cb33-11" data-line-number="11"></a>
- <a class="sourceLine" id="cb33-12" data-line-number="12"> <span class="kw">public</span> <span class="dt">void</span> <span class="fu">addFeuilles</span>(Feuille<span class="kw">... </span>feuilles) {</a>
- <a class="sourceLine" id="cb33-13" data-line-number="13"> <span class="kw">this</span>.<span class="fu">feuilles</span>.<span class="fu">addAll</span>(<span class="bu">Arrays</span>.<span class="fu">asList</span>(feuilles));</a>
- <a class="sourceLine" id="cb33-14" data-line-number="14"> }</a>
- <a class="sourceLine" id="cb33-15" data-line-number="15">}</a></code></pre></div>
- <h3 id="accès">Accès</h3>
- <div class="sourceCode" id="cb34"><pre class="sourceCode java"><code class="sourceCode java"><a class="sourceLine" id="cb34-1" data-line-number="1"><span class="kw">public</span> <span class="kw">class</span> Classeur {</a>
- <a class="sourceLine" id="cb34-2" data-line-number="2"> <span class="kw">private</span> <span class="bu">List</span><Feuille> feuilles ;</a>
- <a class="sourceLine" id="cb34-3" data-line-number="3"> <span class="co">//...</span></a>
- <a class="sourceLine" id="cb34-4" data-line-number="4"> <span class="kw">public</span> Feuille <span class="fu">getFeuille</span>(<span class="dt">int</span> index) {</a>
- <a class="sourceLine" id="cb34-5" data-line-number="5"> <span class="kw">return</span> feuilles.<span class="fu">get</span>(index);</a>
- <a class="sourceLine" id="cb34-6" data-line-number="6"> }</a>
- <a class="sourceLine" id="cb34-7" data-line-number="7"></a>
- <a class="sourceLine" id="cb34-8" data-line-number="8"> <span class="kw">public</span> <span class="bu">Iterator</span><Feuille> <span class="fu">getFeuilles</span>() {</a>
- <a class="sourceLine" id="cb34-9" data-line-number="9"> <span class="kw">return</span> feuilles.<span class="fu">iterator</span>();</a>
- <a class="sourceLine" id="cb34-10" data-line-number="10"> }</a>
- <a class="sourceLine" id="cb34-11" data-line-number="11">}</a></code></pre></div>
- <h1 id="exercices-1">Exercices</h1>
- <h2 id="alphabet">Alphabet</h2>
- <p>Créer une classe <code>Alphabet</code>. Cette classe permet d’associer des symboles (‘A’, ‘b’, ‘Z’) sous la forme d’un ensemble (déterminer lequel est pertinent). Ces symboles seront représentés par la classe <code>Lettre</code>.</p>
- <p>Chaque symbole a une représentation minuscule ou majuscule.</p>
- <ol type="1">
- <li>Donner la représentation UML des différentes relations entre <code>Alphabet</code>, <code>Lettre</code> et <code>Symbole</code>.</li>
- <li>Créer les classes correspondantes en Java.</li>
- <li>Modifier la classe principale ‘LettresEtSymboles’ pour créer un alphabet complet (alphabet latin) : de <code>A</code>, à <code>Z</code>.</li>
- <li>Afficher les noms et symboles pour ces trois instances de <code>Lettre</code></li>
- </ol>
- <h2 id="mot">Mot</h2>
- <p>Un mot est une séquence de lettres. La classe <code>Mot</code> représente cette séquence.</p>
- <ol type="1">
- <li>Donner la représentation UML des différentes relations entre <code>Mot</code> et <code>Lettre</code>.</li>
- <li>Créer les classes correspondantes en Java.</li>
- <li>Créer une classe principale ‘DesMassesDeMots’ et créer les mots <code>chat</code>, <code>le</code>, <code>lait</code>, <code>boit</code>.</li>
- <li>Afficher ces mots.</li>
- </ol>
- <h1 id="associations-qualifiées">Associations qualifiées</h1>
- <h2 id="cardinalité-simple">Cardinalité simple</h2>
- <figure>
- <img src="images/UML-association-qualifie-simple.png" alt="Association qualifiée simple" /><figcaption>Association qualifiée simple</figcaption>
- </figure>
- <h3 id="code-java-équivalent-7">Code Java équivalent</h3>
- <div class="sourceCode" id="cb35"><pre class="sourceCode java"><code class="sourceCode java"><a class="sourceLine" id="cb35-1" data-line-number="1"><span class="kw">public</span> <span class="kw">class</span> Lexique {</a>
- <a class="sourceLine" id="cb35-2" data-line-number="2"> <span class="kw">private</span> <span class="bu">Map</span><Mot, Signification> significations;</a>
- <a class="sourceLine" id="cb35-3" data-line-number="3">}</a></code></pre></div>
- <h2 id="cardinalité-multiple">Cardinalité multiple</h2>
- <figure>
- <img src="images/UML-association-qualifie-multiple.png" alt="Association qualifiée multiple" /><figcaption>Association qualifiée multiple</figcaption>
- </figure>
- <h3 id="code-java-équivalent-8">Code Java équivalent</h3>
- <div class="sourceCode" id="cb36"><pre class="sourceCode java"><code class="sourceCode java"><a class="sourceLine" id="cb36-1" data-line-number="1"><span class="kw">public</span> <span class="kw">class</span> Lexique {</a>
- <a class="sourceLine" id="cb36-2" data-line-number="2"> <span class="kw">private</span> <span class="bu">Map</span><Mot, <span class="bu">Set</span><Page>> indexAlphabetique;</a>
- <a class="sourceLine" id="cb36-3" data-line-number="3">}</a></code></pre></div>
- <h1 id="exercices-2">Exercices</h1>
- <h2 id="glossaire">Glossaire</h2>
- <p>Dans un glossaire, on associe à chaque mot une définition dans une discipline donnée.</p>
- <p>Le glossaire sera ici organisé comme suit:</p>
- <ul>
- <li>pour chaque mot, on associera une et une seule définition</li>
- </ul>
- <h2 id="dictionnaire">Dictionnaire</h2>
- <p>Le dictionnaire sera ici organisé comme suit:</p>
- <ul>
- <li>pour chaque lettre de l’alphabet, on associera un ensemble de mots commençant par cette lettre</li>
- <li>pour chaque mot, on associera une ou plusieurs définitions, stockées dans un ensemble.</li>
- </ul>
- </body>
- </html>
|