2015_2016:s2:td:td_domaine_partie_2
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
2015_2016:s2:td:td_domaine_partie_2 [2016/02/20 08:03] – [Classes : modélisation et codage] blay | 2015_2016:s2:td:td_domaine_partie_2 [2016/02/20 13:33] (current) – [Un robot facteur] blay | ||
---|---|---|---|
Line 15: | Line 15: | ||
Les temps sont donnés à titre indicatif, ce TD doit aller assez vite, il est simple et vise seulement à bien poser le lien entre conception et développement. | Les temps sont donnés à titre indicatif, ce TD doit aller assez vite, il est simple et vise seulement à bien poser le lien entre conception et développement. | ||
</ | </ | ||
+ | |||
+ | < | ||
+ | < | ||
+ | < | ||
+ | http:// | ||
+ | http:// | ||
+ | http:// | ||
+ | http:// | ||
+ | http:// | ||
+ | http:// | ||
+ | |||
+ | --!> | ||
+ | </ | ||
==== Classe '' | ==== Classe '' | ||
Line 138: | Line 151: | ||
A présent notre robot peut utiliser un véhicule. | A présent notre robot peut utiliser un véhicule. | ||
+ | |||
+ | ==== Déplacement d'un véhicule ==== | ||
Un '' | Un '' | ||
Line 147: | Line 162: | ||
Une '' | Une '' | ||
+ | < | ||
+ | ===================TESTS Vehicules =================== | ||
+ | Chariot => Vehicule [position=[0, | ||
+ | Avance sur X, position attendue [10,0] : true | ||
+ | Avance sur Y, position attendue | ||
+ | Fusee => Vehicule [position=[0, | ||
+ | Avance sur position attendue [100, | ||
+ | Avance sur position attendue [100, | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | ==== Le robot conduit le véhicule ==== | ||
On peut donner un véhicule au robot. Il l' | On peut donner un véhicule au robot. Il l' | ||
- | On peut demander au robot de se déplacer selon un schéma donné : " | + | On peut demander au robot de se déplacer selon un schéma donné : " |
+ | Le robot déplacera alors le véhicule de X puis de Y puis de X puis de X. | ||
Quand le robot arrête de travailler il ramène le véhicule en position initiale. | Quand le robot arrête de travailler il ramène le véhicule en position initiale. | ||
Line 155: | Line 184: | ||
< | < | ||
- | =========================TESTS Jardinier & Vehicule =================== | + | |
- | ===================TESTS Vehicules =================== | + | |
- | Chariot => Vehicule [position=[0, | + | |
- | Avance sur X : Chariot => Vehicule [position=[10, | + | |
- | Avance sur Y : Chariot => Vehicule [position=[10, | + | |
- | Fusee => Vehicule [position=[0, | + | |
- | Avance sur X : Fusee => Vehicule [position=[1000, | + | |
- | Avance sur Y : Fusee => Vehicule [position=[1000, | + | |
===================TESTS jardinier & Vehicules =================== | ===================TESTS jardinier & Vehicules =================== | ||
Pas de vehicule : Je suis R2-D2 : je n'ai pas d' | Pas de vehicule : Je suis R2-D2 : je n'ai pas d' | ||
Avec un charriot : Je suis R2-D2 : je n'ai pas d' | Avec un charriot : Je suis R2-D2 : je n'ai pas d' | ||
Deplacement du jardinier en XYX, on attend (0, | Deplacement du jardinier en XYX, on attend (0, | ||
- | [0,0] | + | Nouvelle position attendue |
- | [10,0] | + | |
- | [10,10] | + | |
- | [20,10] | + | Avec une fusee : Je suis R2-D2 : je n'ai pas d' |
- | Debut du travail pour le jardinier | + | Deplacement du jardinier en XYX, on attend (0, |
- | Position du charriot attendue en (0,0): [0,0] | + | Nouvelle position attendue [200, |
- | Deplacement du jardinier en YYX on l' | + | |
- | Je suis R2-D2, je tiens : Tondeuse [vitesse=moyen, | + | |
- | Arret du travail pour le jardinier : Merci, la journée a été dure! | + | |
- | Je suis R2-D2 : je n'ai pas d' | + | |
</ | </ | ||
+ | ==== Un robot facteur ==== | ||
+ | |||
+ | Nous sommes très content de notre robot jardinier. | ||
+ | Nous décidons de construire un robot facteur. | ||
+ | |||
+ | Il transporte des courriers. | ||
+ | |||
+ | Suivez l' | ||
+ | Des exemples de tests sont donnés pour vous aider, en particulier à définir les méthodes associées à vos classes. | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | === Courrier === | ||
+ | |||
+ | Un courrier est défini par une adresse et un contenu. | ||
+ | Pour des raisons de confidentialité, | ||
+ | |||
+ | Voici le modèle correspondant à la classe " | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | **Le courrier ne contient pas le texte initial, ni la clef de cryptage. Elles sont seulement connues à la création du courrier.** On ne peut pas modifier l' | ||
+ | |||
+ | Exemple de tests et de trace : | ||
+ | < | ||
+ | Courrier c = new Courrier(" | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | </ | ||
+ | < | ||
+ | ===================TESTS Courrier =================== | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | |||
+ | |||
+ | **QUESTIONS** | ||
+ | - Commencer par créer la classe '' | ||
+ | - Dans l' | ||
+ | - Quel est le modèle de la classe '' | ||
+ | - Quel est son code ? | ||
+ | |||
+ | |||
+ | === Decrypteur === | ||
+ | Pour lire le courrier il faut utiliser un décrypteur, | ||
+ | Quand il est allumé, si on lui présente un courrier, et on lui donne la clef, il nous donne l' | ||
+ | Donc à chaque lecture, un '' | ||
+ | |||
+ | Exemple de tests et de trace : | ||
+ | < | ||
+ | Decrypteur decrypteur = new Decrypteur(); | ||
+ | System.out.println(" | ||
+ | decrypteur.switchOn(); | ||
+ | System.out.println(" | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | ===================TESTS Decrypteur =================== | ||
+ | pas de lecture si non demarre rEV]FVuRQA\]}ZPV | ||
+ | lecture efficiente : Avenue Fabron, Nice : true | ||
+ | </ | ||
+ | |||
+ | **QUESTIONS** | ||
+ | - Quelles sont les méthodes de la classe '' | ||
+ | - Implémenter la classe '' | ||
+ | |||
+ | === Facteur === | ||
+ | Notre robot facteur peut avoir un véhicule pour se déplacer et un décrypteur pour lire le courrier. Quand on lui remet un courrier, on lui donne la clef pour lire le courrier. | ||
+ | |||
+ | |||
+ | Exemple de tests et de trace : | ||
+ | < | ||
+ | System.out.println(" | ||
+ | Courrier c2 = new Courrier(" | ||
+ | Courrier c3 = new Courrier(" | ||
+ | |||
+ | Facteur facteur = new Facteur(" | ||
+ | facteur.distribue(c, | ||
+ | facteur.distribue(c2, | ||
+ | facteur.distribue(c3, | ||
+ | |||
+ | String adresse = facteur.lire(); | ||
+ | System.out.println(" | ||
+ | facteur.setVehicule(charriot); | ||
+ | facteur.deplacer(" | ||
+ | Courrier courrier = facteur.depose(); | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | |||
+ | adresse = facteur.lire(); | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | facteur.setVehicule(fusee); | ||
+ | facteur.deplacer(" | ||
+ | courrier = facteur.depose(); | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | |||
+ | adresse = facteur.lire(); | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | facteur.depose(); | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | |||
+ | adresse = facteur.lire(); | ||
+ | System.out.println(" | ||
+ | </ | ||
+ | < | ||
+ | ===================TESTS Facteur =================== | ||
+ | Je dois aller à Avenue Fabron, Nice | ||
+ | Courrier deposé à l' | ||
+ | Je suis en [20,30]: [20,30] | ||
+ | Je dois aller à : Petit Prince Planete | ||
+ | Je prends ma fusee | ||
+ | Courrier depose à l' | ||
+ | Je suis en [700,700] : [700,700] | ||
+ | Je dois aller à : | ||
+ | Je ne comprends pas, même pas capable de me donner la bonne clef! | ||
+ | Courrier perdu | ||
+ | Je suis toujours en [700,700] : [700,700] | ||
+ | J'ai fini : Rentre chez toi | ||
+ | </ | ||
+ | |||
+ | **QUESTIONS** | ||
+ | - Quel est le modèle de la classe '' | ||
+ | - Quelles sont les méthodes que doit avoir un Facteur? | ||
+ | - Implémenter la classe '' | ||
+ | |||
+ | === Encrypteur === | ||
+ | |||
+ | Voici le code pour crypter il est basé sur : [[http:// | ||
+ | |||
+ | |||
+ | |||
+ | <code java> | ||
+ | public class Encryptor { | ||
+ | |||
+ | private final int key; | ||
+ | | ||
+ | public Encryptor(int key) { | ||
+ | super(); | ||
+ | this.key = key; | ||
+ | } | ||
+ | |||
+ | |||
+ | public String encrypt(String password){ | ||
+ | String crypte=""; | ||
+ | for (int i=0; i< | ||
+ | int c=password.charAt(i)^(48 + key); | ||
+ | crypte=crypte+(char)c; | ||
+ | } | ||
+ | return crypte; | ||
+ | } | ||
+ | |||
+ | |||
+ | public String decrypt(String password){ | ||
+ | String aCrypter=""; | ||
+ | for (int i=0; i< | ||
+ | int c=password.charAt(i)^(48 + key); | ||
+ | aCrypter=aCrypter+(char)c; | ||
+ | } | ||
+ | return aCrypter; | ||
+ | } | ||
+ | |||
+ | |||
+ | } | ||
+ | </ | ||
+ | |||
+ | Exemple de tests de l' | ||
+ | |||
+ | Encryptor d = new Encryptor(2); | ||
+ | String origine = " | ||
+ | String sCryptee = d.encrypt(origine); | ||
+ | System.out.println(" | ||
+ | String r = d.decrypt(sCryptee); | ||
+ | System.out.println(r |
2015_2016/s2/td/td_domaine_partie_2.1455955387.txt.gz · Last modified: 2016/02/20 08:03 by blay