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 revisionNext revisionBoth sides next revision | ||
2015_2016:s2:td:td_domaine_partie_2 [2016/02/20 07:27] – [Spécialisation et Enuméré (10 mn)] blay | 2015_2016:s2:td:td_domaine_partie_2 [2016/02/20 10:11] – [Un robot facteur] blay | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== Classes : modélisation et codage ====== | ====== Classes : modélisation et codage ====== | ||
- | <note warning> | ||
- | Objectif : Faire un lien direct entre la modélisation des classes et les codes correspondants. | ||
- | < | + | **Objectifs :** |
+ | - Faire un lien direct entre la modélisation des classes et les codes correspondants. | ||
+ | - Savoir construire un petit modèle de classes et le mettre en oeuvre. | ||
+ | |||
+ | < | ||
+ | |||
+ | |||
+ | ===== Classe : Code et modélisation ===== | ||
+ | <note tip> | ||
+ | Les notes de bas de page vous donnent des indications sur certaines actions. Il suffit de laisser la souris sur les renvois. | ||
+ | </ | ||
+ | <note tip> | ||
+ | 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. | ||
+ | </ | ||
+ | |||
+ | < | ||
< | < | ||
< | < | ||
Line 15: | Line 28: | ||
--!> | --!> | ||
</ | </ | ||
- | ===== Classe : Code et modélisation ===== | ||
- | <note tip> | ||
- | Les notes de bas de page vous donnent des indications sur certaines actions. Il suffit de laisser la souris sur les renvois. | ||
- | </ | ||
- | <note tip> | ||
- | 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. | ||
- | </ | ||
==== Classe '' | ==== Classe '' | ||
Line 138: | Line 144: | ||
- Et si nous voulions représenter plusieurs sortes de Robot, que ferions-nous? | - Et si nous voulions représenter plusieurs sortes de Robot, que ferions-nous? | ||
- | ===== Devoir facultatif pendant les vacances ===== | ||
+ | ===== Allons plus loin ===== | ||
+ | |||
+ | <note warning> | ||
+ | Vous devez réussir à présent à analyser puis coder un " | ||
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 151: | 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 159: | 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 ==== | ||
- | <box round rgb(185, | + | Nous sommes très content de notre robot jardinier. |
+ | Nous décidons de construire | ||
- | {{: | + | Il transporte des courriers. |
- | </ | + | |
- | ===== Reverse et agrégation ===== | ||
- | ==== Reverse | + | === Courrier |
+ | Un courrier est défini par une adresse et un contenu. | ||
+ | Pour des raisons de confidentialité, | ||
+ | **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'adresse ou le contenu d'un courrier. | ||
- | - Etant données les [[http://docs.oracle.com/ | + | Exemple de test et de trace : |
+ | < | ||
+ | Courrier c = new Courrier(" | ||
+ | System.out.println(" | ||
+ | System.out.println(" | ||
+ | </ | ||
+ | < | ||
+ | ===================TESTS Courrier =================== | ||
+ | | ||
+ | | ||
+ | </ | ||
- | < | + | === Decrypteur |
- | ==== Utilisation d'une classe : Chemin et Trajet ==== | + | 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' | ||
- | * On définit un chemin comme ayant un point de départ, un point d' | + | < |
- | * Un point peut appartenir à plusieurs chemins. | + | Decrypteur decrypteur = new Decrypteur(); |
- | * On veut connaitre la distance que représente un chemin | + | System.out.println(" |
- | * Un trajet est une suite ordonnée de chemins tels que le point de départ d'un chemin est le point d' | + | decrypteur.switchOn(); |
+ | System.out.println(" | ||
+ | </ | ||
- | - Modéliser les concepts | + | < |
- | - Codez-les. | + | ===================TESTS Decrypteur =================== |
+ | pas de lecture si non demarre rEV]FVuRQA\]}ZPV | ||
+ | lecture efficiente Avenue Fabron, Nice : true | ||
+ | </ | ||
- | ==== La classe '' | + | === Facteur |
+ | Notre robot facteur peut avoir un véhicule pour se déplacer et un décrypteur. | ||
- | Un polygone est composé d'un ensemble de points. | ||
- | - Modéliser la classe '' | ||
- | - Il est possible de créer un polygone comme un ensemble vide de Points ou en passant un tableau de Points | ||
- | - Générer le code. Quelle structure de données utilisez vous? Regarder le code généré ... Evidemment il n'est pas possible de modifier la classe Point fournie par java. Vous ne devez donc pas la générer. | ||
- | - Tester votre classe, par exemple en ajoutant une méthode '' | ||
- | ==== La classe '' | ||
- | * Pour | ||
- | - Etendez votre modélisation de la classe '' | ||
- | - Générer le code. | ||
- | - Tester votre classe. | ||
- | - Que retenez-vous de cet exercice? Quand se fait le choix de la structure? | ||
+ | === Encrypteur === | ||
- | < | + | Voici le code pour crypter il est basé sur : [[http:// |
- | <!-- | + | |
- | ==== Faîtes tout seul! ==== | + | |
- | + | ||
- | * Vous commencerez par modéliser puis vous vous intéresserez aux codes : | + | |
- | * Nous avons besoin de manipuler des triangles. Un triangle c'est un polygone, évidemment. | + | |
- | * On veut pouvoir créer un triangle en donnant ses trois sommets : new Triangle (p1, p2, p3) | + | |
- | * On veut pouvoir savoir si un triangle est équilatérale. | + | |
- | * Pour cela vous aurez besoin | + | |
- | * On ne peut pas ajouter un point à un triangle. | + | |
- | --!> | + | |
- | </html> | + | |
+ | <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; | ||
+ | } | ||
+ | |||
+ | |||
+ | } | ||
+ | </code> | ||
+ | |||
+ | 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.txt · Last modified: 2016/02/20 13:33 by blay