TP3 JAVA AVANCE LSIO 2016 TONDEUR H.

Transcription

TP3 JAVA AVANCE LSIO 2016 TONDEUR H.
TP3 JAVA AVANCE LSIO 2016 TONDEUR H.
OBJECTIFS
Ce TP, va permette de mettre en application :
- Ce que vous avez appris sur les API JavaFX et le langage de description FXML.
- De mettre en application les classes I/O.
- L’interopérabilité entre l’utilisateur et la machine au travers d’une GUI.
- De gérer les exceptions de manière efficace et d’utiliser les dialogues de conversation.
- Sécurisé son code via des contrôles simples.
- De mettre en pratique un projet concret pleinement fonctionnel.
NOTE
Ce TP est noté est à rendre par mail à l’adresse suivante [email protected] il devra
comporter tous les fichiers *.java & *.fxml, pour ceux qui travaillent avec NetBeans, ils peuvent me
fournir le dossier du projet complet zippé dans un fichier unique.
Ce TP peut être réalisé en binôme et devra dans ce cas comporter les noms des deux développeurs dans
les entêtes des fichiers sources.
Ce TP est obligatoire et participera à la note finale du module, tout manquement à la remise de celui-ci
à la date qui vous sera défini, sera sanctionné par une note de 0.
LE PROJET : GESTION D’UN FOUR DE VERRIER
Soit un artisan verrier qui possède un four a fusion électrique programmable pour
la cuisson/fusion du verre, le programmateur de ce four à fusion permet de saisir
des paliers comportant les informations suivantes :
- Température à atteindre dans le four en degrés Celsius.
- vitesse en degrés par heure de la chauffe (montée en température).
- Temps de maintien de la température une fois atteinte en minutes.
Le verrier à la possibilité de renseigner la valeur FULL a la place d’une valeur de
vitesse de température. Dans ce cas la montée se fait avec la température max
possible de 380°/heure (pour son modèle de four).
Le verrier à la possibilité également de renseigner des paliers de refroidissement,
ou il n’y a plus de chauffe qui peuvent s'exprimer également en degrés/heure ou
si la valeur doit descendre le plus rapidement possible on indique FULL (descente
FULL), dans ce cas le refroidissement max, est de 50° par heure en FULL au-dessus
d’une température de 400° actuelle du four , sinon de 25° par heure en FULL en
dessous de 400° (ces valeurs factices sont données ici pour simplifier les calculs).
a) La température min ou max admissible par le four est comprise entre 20° &
1280°.
b) La vitesse max de chauffe du four est comprise entre 5°/h & 380°/h.
c) Le temps de maintien est compris entre 0mn et 999mn.
1
TP3 JAVA AVANCE LSIO 2016 TONDEUR H.
Le premier palier qui ne se note pas, est la température initiale, avec une
vitesse de 0 et un maintien de 0, on prendra pour température initiale la
valeur moyenne de 20°.
Il sera donc nécessaire d'intégrer ce premier palier implicite dans le calcul
total du process.
Le dernier palier qui ne se note jamais, mais qui est implicite, est le temps
de refroidissement de la pièce de verre après la fin du dernier palier, le
four ne peut être ouvert que s’il affiche 30°.
Il sera donc nécessaire d'intégrer ce dernier palier implicite dans le calcul
total du process.
Ecrire une application Java avec le GUI JavaFX et le langage de description
d’interface FXML qui permet au verrier de renseigner tous les paliers
nécessaires, de pouvoir en insérer ou supprimer et d’exporter à la demande le
tableau des paliers et le temps total estimé du processus de fusion en minutes et
en heures.
Exemple simple et non réel :
L’exemple du tableau ci-dessus nous permettra de réaliser les calculs suivant.
Palier 0 :
(200°-20°/120°)*60mn=90mn
90mn+12mn=102mn
Palier 1 :
380°-200°=(180°/210°)*60mn=51.42mn
52mn+5mn=56.42mn
Palier 2 :
800°-380°=(420°/380°)*60mn=66.31mn
67mn+30mn=96.31mn
Palier 3 :
400°-800°=(-400°/50°)*60mn=480mn
480mn+1mn=481mn
2
TP3 JAVA AVANCE LSIO 2016 TONDEUR H.
Palier refroidissement :
30°-400°=|(-370°/25°)*60mn|=888mn
Temp total : 102mn+56.42mn+96.31mn+481mn+888mn
±1624mn = 27h04mn
Ce qui donne la formule mathématique suivante à appliquer :
- Réaliser pour chacune des saisies, les vérifications de validités (domaine de
valeurs), et saisie correcte, pour pourrez implémenter dans ce cadre la notion
d'exceptions.
- Pour la saisie d'une valeur de type FULL, on autorisera l'utilisateur à saisir la
valeur -1 ou le mot FULL.
L’application devra présenter l’interface graphique suivante :
L’application devra présenter les fonctionnalités suivantes :
-
Permettre la saisie des valeurs de température, de vitesse et de maintien
pour chaque palier, attention a bien vérifier les domaines de validités, le
mot FULL est autorisé également.
3
TP3 JAVA AVANCE LSIO 2016 TONDEUR H.
-
Ajouter ces valeurs dans une ListView, en respectant la chaine inscrite cidessus dans la capture écran de l’application.
Supprimer le triplet de valeurs de la ListView (ligne en cours de sélection).
Insérer ces valeurs dans la Listview à une position données (après la ligne
sélectionnée).
Permettre de calculer le temps global de chauffe du four.
Afficher ce calcul dans un Label sous format de minutes, et HH:MM.
Permettre d’exporter une liste d’enregistrement dans un fichier binaire au
format défini ci-dessous.
Permettre d’importer une liste d’enregistrement d’un fichier binaire au
format spécifié ci-dessous en contrôlant le numéro magique du fichier.
Pour ces deux opérations d’import et export vous ferez appel à un objet de
type FileChooser pour indiquer le nom du fichier.
Le fichier binaire devra contenir une signature de fichier spécifique qui
aura pour valeur entière : -889259298
MAGIC NUMBER = -889259298 (codé 32 bits entier signé)
STRUCTURE DU FICHER
HEADER {
MAGICNUMBER 4 octets (int)
NB DE CHUNK 4 octets (int)
CHUNK (répété)
[
TAILLE DU CHUNK 4 octets (int) valeur fixe =4+4+4=12
TEMPERATURE INTEGER 4 octets (int)
VITESSE INTEGER 4 octets (int)
MAINTIENT INTEGER 4 octets (int)
]
}
Le premier bloc, correspond au MAGIC NUMBER, le second bloc correspond au
nombre de CHUNK, ici 3 dans notre exemple, le bloc suivant correspond à la taille
du premier CHUNK 0C=12, le bloc suivant correspond aux 3 valeurs du premier
CHUNK 0, 20,0, le cadre en vert correspond au troisième CHUNK.
A connaitre : Un fichier de type binaire est en général constitué d’un entête
« Header » qui comporte un bloc de valeur que l’on nomme « nombre magique »
qui peut être lu et comparé à une valeur cible, ce qui nous permet de vérifier que
le fichier que nous sommes en train de lire est bien au bon format et correspond à
l’application.
L’entête contient également d’autres informations sur le contenu du fichier ou des
valeurs globales nécessaires pour l’application, dans notre cas le nombre de
triplets de valeurs.
Ces groupes de données répétés se nomme « CHUNK » que l’on peut traduire par
morceau, ces CHUNK contiennent les informations pour chaque bloc de données,
dans notre cas les trois valeurs d’une ligne d’entrée d’un palier.
4
TP3 JAVA AVANCE LSIO 2016 TONDEUR H.
Dans un fichier MP3(musique) ou OGG(vidéo) ou PNG(image) on retrouve
également cette structure entête qui contient en général ce nombre magique, la
taille de la vidéo ou image ou durée du son, des informations complémentaires
(par exemple pour le format MP3 les tags ID3) et ensuite des blocs de données
contenant un morceau du son ou de la vidéo ou de l’image sous format compressé
en général.
Sur quoi vous serez noté :
Vous serez noté sur la performance à réaliser ce type de projet jusqu’au bout, mais
également sur la gestion stricte des erreurs, des reprises sur erreurs et la
robustesse du programme proposé.
Sur la présentation du code, correctement commenté et indenté, le choix judicieux
des noms des objets et des variables.
Vous serez force de propositions sur la mise en place de technique permettant de
signaler les erreurs de saisies à l’utilisateur et les actions correctives possibles au
travers de l’utilisation de dialogues (Alert) ou codes couleurs (CSS FXML).
5