Le code source du Simulateur |
||||||||||
Licence libre open source.Ce logiciel est distribué gratuitement, code source compris.Son usage doit rester culturel et libre. Il ne peut être incorporé dans un projet commercial J’adhère à la philosophie de Richard Stallman et du projet GNU / Linux
Les utilisateurs peuvent librement soutenir le Simulateur Astronomique sur :
|
||||||||||
|
La programmation est l'activité à la base de l'informatique. Programmer est une activité intellectuelle intense et passionnante, que je pratique depuis l’âge de 12 ans. Nos ordinateurs ne fonctionneraient pas si quelqu'un n'avait pas préalablement écrit les programmes qui les animent.
Au contraire des jeux d'échecs ou de dames, la programmation laisse un résultat concret une fois terminée: C'est pour partager cette passion pour la programmation que j'en révèle les sources.
|
||||||||||
|
Ce code permet d’inclure l'applet dans votre site web :
<APPLET code="astro.Simulateur.class" name="Simulateur" codebase="http://www.sogedima.be/java/"
width="1000" height="700">
Aussi facilement qu'une image. |
||||||||||
|
Les passionnés de programmation reconnaîtront, dans le schéma qui suit, une implémentation du Modèle Vue Contrôleur.
|
||||||||||
| Le Simulateur |
C'est le contrôleur. Il définit l'applet, l'interface (menus, boutons, champ date) Il gère la Lune, le planétarium et le saros. |
|||||||||
| Les éphémérides |
Les éphémérides sont le cerveau du simulateur. C'est le modèle.Elles reçoivent une date, sur base de laquelle elles calculent les paramètres orbitaux des astres et objets affichés dans les graphes. La classe Lune devenait un peu lourde, elle contenait à la fois :
J'ai donc éjecté tous les calculs astronomiques dans une classe aveugle: les éphémérides.
L'interface contenue dans Elles n'effectuent par contre aucune action interactive ni ne dessinent à aucun schéma à l'écran. La classe éphémérides fournit à la classe Lune toutes les variables dont elle a besoin pour s'afficher. |
|||||||||
| Le test des éphémérides |
Puisque les éphémérides sont le cerveau du simulateur, il faut s'assurer de l'exactitude des calculs qui y sont programmés par des tests en JUnit 4.
Programmer ne suffit pas, il faut aussi tester. |
|||||||||
| La Lune |
Cette classe exécute les différents graphes selon les données calculées par le planétarium.
|
|||||||||
| Le Saros |
Le saros est le cycle des éclipses. Il recommence toutes les 223 lunaisons. Chaque saros reçoit un n° depuis le début du saros 136 pris comme point d'origine. |
|||||||||
| Angle |
Cette classe permet d'ajouter et de soustraire des angles à l'infini, tout en restant dans un intervalle 0 .. 2PI
Les calculs se font toujours en radians. |
|||||||||
| La file des graphes |
Le simulateur peut afficher quatre graphes simultanément, mais est prévu pour en gérer beaucoup plus. Chaque graphe est identifié par une lettre:
Lorsque l'utilisateur demande un graphe, celui-ci est affiché en haut à gauche.
La file des graphes veille donc à ce que le même graphe ne soit jamais affiché deux fois. |
|||||||||
| Le JColorButton |
|
|||||||||
|
Le simulateur existe en plusieurs langues. Si vous êtes natif d'une de ces langues, ou la maîtrisez convenablement, vous pouvez vous procurer le fichier d'expressions ci-dessous et me le renvoyer corrigé sur christian(point)mascart(arobase)demosthene(point)be. Vous pouvez aussi proposer une traduction dans une autre langue, que j'incorporerai au Simulateur. Merci ! |
||||||||||
Simulateur :
Classe Lune :
|
Le code source ne contient aucune expression. Celles-ci sont externalisées dans des Resource Bundle que le simulateur charge selon la langue de l'utilisateur.
Ces fichiers, à l'extension .properties, sont de simples fichiers textes. Ils fonctionnent selon le principe
Il ne faut jamais modifier la clef, ni effacer une ligne.
|
|||||||||
|
Ces quelques images viennent illustrer les graphes. Elles sont chargées au démarrage de l'applet. |
|||||||||
|
Le simulateur astronomique est rédigé en Java sous Eclipse, tournant dans l'environnement Linux UBUNTU.
|
|
| Eclipse permet notamment de rédiger automatiquement la documentation complète des objets. |