Files
JIMRI/help/fr/html/doc/Technical/Patterns.shtml
T
2026-06-17 14:00:51 +02:00

147 lines
6.6 KiB
Plaintext

<!DOCTYPE html>
<html lang="fr">
<!-- Updated by Blorec Herv&#233; 2016-08-14-->
<head>
<title>JMRI: Patterns and Structure</title>
<meta name="author" content="Bob Jacobsen">
<meta name="keywords" content="JMRI technical code patterns structure">
<!--#include virtual="/help/fr/parts/Style.shtml" -->
</head>
<body>
<!--#include virtual="/help/fr/parts/Header_fr.shtml" -->
<div id="mBody">
<!--#include virtual="Sidebar.shtml" -->
<div id="mainContent">
<!-- Page Body -->
<h1>JMRI: Mod&#232;les et Organisation</h1>
<p>
JMRI a grandi et &#233;volu&#233; avec le temps, et
vous ne pouvez pas toujours voir les structures et les
caract&#233;ristiques actuellement pr&#233;f&#233;r&#233;es
en regardant des morceaux de l'ancien code.
<p>
Cette page tente de d&#233;crire la structure et les mod&#232;les recommand&#233;s,
et fournir des exemples des meilleures pratiques actuelles.
<a id="namedbeans" name="namedbeans"></a><h2>Noms, NamedBeans, et les gestionnaires</h2>
Le concept "NameBean" est la base de JMRI.
Un <a href="https://jmri.org/JavaDoc/doc/jmri/NamedBean.html">NamedBean</a>
est un objet de base qui repr&#233;sente quelque chose, typiquement quelque chose
comme un Capteur ou un Aiguillage.
<ul>
<li>Ils sont appel&#233;s "Bean" parce qu'ils sont une unit&#233;
d'interaction: De multiples morceaux de code peuvent travailler avec l'un d'eux, il peut &#234;tre charg&#233; ou stock&#233;, etc.
<li>Ils sont "named" parce que pour &#234;tre s&#251;r qu'ils sont uniques et retrouvables: Il y a seulement un Aiguillage NamedBean
appel&#233; LT01, et il repr&#233;sente un objet sp&#233;cifique du r&#233;seau adress&#233;( named ).
Voir la <a href="Names.shtml">page sur les Noms</a> pour en savoir davantage.
</ul>
Fonctionnellement, toutes les classes d'objets du syst&#232;me ( Capteur, Aiguillage,... ) et
leurs mise en oeuvre sp&#233;cifiques ( LnSensor, XNetTurnout, ...), h&#233;rite de la classe de base
<a href="https://jmri.org/JavaDoc/doc/jmri/NamedBean.html">NamedBean</a>.
<p>
Pour obtenir l'acc&#232;s &#224; un objet sp&#233;cifique (un NamedBean d'un type sp&#233;cifique avec un nom sp&#233;cifique ), vous faites
des demandes &#224; un gestionnaire: vous demandez un
<a href="https://jmri.org/JavaDoc/doc/jmri/TurnoutManager.html">TurnoutManager</a> pour un Aiguillage sp&#233;cifique
&#224; votre tour, vous
<a href="IntroStructure.shtml">acc&#233;dez aux gestionnaires &#224; travers l'InstanceManager commun</a>.
<p>
Un utilisateur peut vouloir r&#233;&#233;f&#233;rencer un NamedBean via un nom utilisateur, et &#224; son tour peut vouloir
changer le NetBean sp&#233;cifique auquel le nom utilisateur se r&#233;f&#232;re. "Yard East Turnout" peut &#234;tre
"LT12" &#224; un point et plus tardpeut changer en "CT5". Pour g&#233;rer ceci,
votre code utilise les objets
<a href="https://jmri.org/JavaDoc/doc/jmri/NamedBeanHandle.html">NamedBeanHandle</a>
pour g&#233;rer les r&#233;f&#233;rences pour NamedBeans. Ils automatisent le processus de renommage.
<h2>Organisation du Code</h2>
<p>
Au plus haut niveau, nous s&#233;parons le code de test du code
distribu&#233; en les mettant dans des r&#233;pertoires distincts
dans le r&#233;pertoire de d&#233;veloppement: "test" et "src".
Il est donc facile de compiler une version sans code de test,
d'appliquer des outils diff&#233;rents pour les deux types de code, etc
<p>
Dans le code source lui-m&#234;me, nous s&#233;parons plusieurs types.</p>
<dl>
<dt>Le paquet jmri
<dd>contient les interfaces de base pour le syst&#232;me.
Il doit contenir le code de mise en &#339;uvre minimale,
et pas de r&#233;f&#233;rences non-JMRI, en particulier le code Swing.
<dt>Le paquet jmri.jmris
<dd>Contient tout le code pour la mise en &#339;uvre des serveurs pour les interfaces JMRI.
<dt>Le paquet jmri.jmrit
<dd>contient tout le code pour les outils JMRI non sp&#233;cifiques au syst&#232;me et extensions
La plupart des outils sont dans des sous-paquets, mais certains apparaissent directement dans le paquet
<dt>Le paquet jmri.jmrix
<dd>Contient tout le code pour se connecter &#224;
du mat&#233;riel sp&#233;cifique du r&#233;seau ferr&#233;.
<dt>Les paquetsjmri.managers et jmri.implementations
<dd>Ceux-ci fournissent des mises en &#339;uvres par d&#233;faut pour les gestionnaires
et les autres classes. Cela d&#233;place le code du paquet
primaire JMRI. Ils ne doivent pas r&#233;pondre &#224; des applications, jmri.jmrix
ou jmri.jmrit.
<dt>paquet jmri.util
<dd>Autres mise en oeuvre courantes d'usage g&#233;n&#233;ral.
Ne devrait pas d&#233;pendre des paquets jmri.jmrit ou jmri.jmrix.
Le sous-paquet jmri.util.swing fournit les utilitaires Swing
<dt>paquet Apps
<dd>Pour rassembler une application, cela peut
d&#233;pendre de n'importe quoi.
<dt>Sous-r&#233;pertoires configurexml
<dd>Ceux-ci contiennent le code pour le
<a href="XmlPersistance.shtml"> syst&#232;me de configuration XML</a>
les paquets de haut niveau, esp util &amp; dependancies, apps.
<dt>Sous-r&#233;pertoires swing
<dd>Contient les outils Swing sp&#233;cifiques.
En particulier &#224; l'ext&#233;rieur du paquet jmri.jmrit,
nous essayons de s&#233;parer le code Swing du
code normal op&#233;rationnel.
Voir la <a href="Swing.shtml"> page Swing</a>
pour plus d'informations.
<dt>Help files (fichiers d'aide)
<dd>La structure du fichier d'aide,
les fichiers &#233;chos de la structure du code.
Pour plus d'informations, voir la page d'aide
<a href="Help.shtml"> dans les pages JavaHelp</a>.
<dt>ResourceBundles
<dd>Nous utilisons le regroupements de ressources pour <a href="I8N.shtml">l'internationalisation</a>.
Elles sont colocalis&#233;e avec le code qui les r&#233;f&#233;rence,
mais nous nous dirigeons vers une nouvelle convention de d&#233;nomination.
Pour r&#233;duire le fardeau de chargement, nous nous dirigeons vers un
mod&#232;le o&#249; le fichier jmri.foo.FooBundle.properties
est adress&#233; par un &#233;l&#233;ment statique dans la
classe jmri.foo.FooBundle, s&#233;par&#233; des
propri&#233;t&#233;s du fichier lui m&#234;me. Cela r&#233;duit
beaucoup le temps de chargement!
<br>
Notez qu'il existe &#233;galement quelques
regroupements de ressources qui sont utilis&#233;s &#224; d'autres fins,
indiqu&#233;s dans leurs commentaires en t&#234;te.</dd>
</dl>
<p>Le script outil de d&#233;veloppement "checkdepends.csh"
est destin&#233; &#224; v&#233;rifier certaines des d&#233;pendances par inadvertance,
mais nous sommes loin de l'effacer.</p>
<!--#include virtual="/help/fr/parts/Footer_fr.shtml" -->
</div><!-- closes #mainContent-->
</div> <!-- closes #mBody-->
<script src="/js/help.js"></script>
</body>
</html>