Skip to topic | Skip to bottom
Home
Minfo
Minfo.GlTD1r1.8 - 09 Oct 2012 - 20:16 - PhilippeCollettopic end

Start of topic | Skip to actions

TD 1 : Prise en main, construction avec ant

PhilippeCollet

Introduction

ALERT! Cette page va être mise à jour avec les différentes informations pour l'installation des outils sur vos portables

Dans le cadre de ce TD (et des suivants si tout va bien), vous allez utiliser un IDE (Integrated Development Environment) sous Linux, en l'occurence, Eclipse 3. Eclipse (www.eclipse.org) est un des environnements de développement intégré les plus utilisés actuellement.

Vous allez utiliser Eclipse avec un JDK 1.6.

Si vous utilisez Eclipse sur votre machine personnelle, sachez qu'il risque d'y avoir de petites différences de présentation entre les versions successives de 3.2 à 3.7 et la dernière version 4.2. S'il faut toujours une version des plugins compatibles avec votre version de base d'Eclipse, les tutoriaux et autres copies d'écran ne varient que très peu pour les éléments utilisés dans ce cours.

Lancement et paramétrage

Installation sur portable : JDK6 / Eclipse4.2 / Ant1.8

TIP Partie spécifique à une installation sur portable

A installer :

  1. Java SE Development Kit 6 Update 35 : http://www.oracle.com/technetwork/java/javase/downloads/jdk6u35-downloads-1836443.html Il faut sélectionner la version adaptée à votre OS, modifier la variable PATH suivant votre système d'exploitation
  2. Eclipse 4.2 (Juno) : http://www.eclipse.org/downloads/ : télécharger l'édition "Eclipse IDE for Java Developers". Si vous avez déjà un Eclipse 3.7.2, cela conviendra aussi.
  3. Apache Ant 1.8.4 (ou la dernière version) : http://ant.apache.org/bindownload.cgi

Eclipse 3.7.2 Version installée sous Linux (postes fixes du département d'informatique)

Normalement, la version 3.7.2 d'Eclipse doit être installée sur toutes les machines. Vous devriez aussi disposer d'un JDK récent (jdk1.6.0_21). Il ne faut pas qu'Eclipse soit démarrer avec le JDK gnu (gcj / OpenJDK??) dans votre PATH car celui-ci ne couvre pas toutes les bibliothèques nécessaires. Il faut donc que dans votre environnement (édition de profile, .bashrc, etc.), vous ayez l'équivalent de ce qui suit:

  export PATH=/usr/local/java/jdk1.6.0_21/bin:$PATH
Eclipse 3.7 peut être démarré de la façon suivante :
  /usr/local/eclipse-3.7.2/eclipse &

ALERT! En cas de plantage de l'environnement sur "OutOfMemory", il vous faudra créer un alias ou une commande pour exécuter ceci :

  /usr/local/eclipse-3.7.2/eclipse -vmargs -Xmx384M &
Remplacer éventuellement 384 par 512 au cas ou beaucoup de plugins sont lancés successivement, car ils consomment toujours plus de mémoire...

Prise en main (à faire avant le TD si vous n'avez pas utilisé Eclipse auparavant)

La page d'aide de bienvenue devrait s'afficher à la fin du lancement :

  • Effectuez le tutorial HelloWorld intégré a Eclipse (création de projet, compilation, exécution). Observez et explorez !

  • Dans le tutorial Eclipse de JM Doudoux, effectuez :
    • les chapitres 3 à 6 de la première partie,
    • surtout le chapitre 7 de la deuxième partie (les chapitres 8 et 9 pourront être vus par la suite, ils sont très utiles),

ALERT! Au moment de l'écriture de ce sujet de TD, le tutoriel correspond à la version 3.2 d'Eclipse. Comme nous utilisons la version 3.7, il y a de petites différences...

Après ça, vous devriez être paré pour démarrer et continuer à acquérir de l'expérience dans Eclipse. Prenez votre temps pour expérimenter. Comme tous les gros IDE, Eclipse peut être rebutant au départ, mais il peut aussi rendre de grands services si on sait comment utiliser les bonnes fonctionnalités au bon moment.

Premières expérimentations avec le simulateur de bébêtes

Analyse et compilation du projet

Créez un nouveau projet à partir du contenu de bebeteStupide.zip :

  • soit vous placez le contenu dans un répertoire hors de votre workspace et vous créerez le projet "à partir d'une source existante",
  • soit vous créerez un projet vide, puis vous recopierez le contenu de l'archive et vous réactualiserez le projet.

L'archive contient un sous-répertoire src/tp1/bebetes qui contient 4 fichiers java, le tout étant un ensemble de classes pour simuler un troupeau d'animaux, les bébêtes :

  • L'application fournit une architecture pour faire des simulations de bébêtes : une bébête a une position, elle se déplace dans une certaine direction avec une vitesse donnée et elle peut voir devant elle avec un certain champ de vision. Elle est censée agir (se déplacer dans un premier) temps en fonction de son environnement (les bébêtes autour par exemple).

  • Le package contient quatre classes
    • La classe principale est TestBebetes : ce n'est qu'une frame graphique qui contient un ChampDeBebetes.
    • La classe ChampDeBebetes s'occupe de créer les bébêtes et agit comme le moteur de la simulation. Régulièrement (avec un thread), elle fait "agir" chaque bébête. Cette classe s'occupe aussi de dessiner les bébêtes avec les outils AWT/Swing de base (paint/repaint).
    • La classe BebeteAbstraite est une classe abstraite qui regroupe les attributs de toutes bebetes (position, vitesse, direction...) ainsi que de quoi la dessiner (couleur, methode graphique seDessine). La seule méthode abstraite est "agit" dans laquelle doit être définie le comportement.
    • La classe BebeteStupide ne fait que définir "agit" en incrémentant les coordonnées et en gérant le débordement du champ.

Vous remarquez que la bébête fournie est plutôt stupide (d'où son nom...). Exécutez cette application.

Pensez à expérimenter un maximum de fonctionnalités qui vous ont été présentées dans les tutoriaux...

Utilisation classique de ant

TIP Ant sur votre portable

TIP Ant sur les machines Linux du dept

  • Hors de Eclipse (dans un shell), vérifiez la configuration de ant, faites les exportations nécessaires :
    1. export ANT_HOME=/usr/local/netbeans-7.1.1/java/ant
    2. export JAVA_HOME=/usr/local/java/jdk1.6.0_21
    3. export PATH=${PATH}:${ANT_HOME}/bin

Téléchargez l'archive antfiles.zip. Décompactez la à la racine du projet. Étudiez le fichier build.xml. Modifiez ce qu'il faut pour pouvoir compiler et exécuter votre projet en utilisant ant en ligne de commande (le projet est complet si vous arrivez a faire un "ant jar" et a exécuter directement "java -jar lejarproduit.jar" aide: inutile de toucher à build.xml ou à default.properties).

En vous inspirant des autres cibles, créez une cible "run" qui lance l'application (tâche java dans http://ant.apache.org/manual/).

Utilisation de ant dans Eclipse

  • Retournez dans Eclipse et rafraichissez le contenu du projet. Le fichier build.xml devrait apparaitre...
  • Expérimentez les différentes actions que vous pouvez faire sur ce fichier (édition, visualisation de la structure, exécution de tâches, etc.)
  • Activez la view "Ant" par les menus et glissez le fichier à l'intérieur. Vous verrez apparaître les cibles et vous pourrez les exécuter par double-clic...
  • Est-ce que la cible run marche toujours ? Si elle ne marche pas, allez voir du coté des options "fork" et "spawn" de la tâche java, car Eclipse s'attend plus à ce que ant réalise des tâches de compilation...

TIP Au cas où vous êtes un peu perdu, pensez à Doudoux, il y a un chapitre sur l'utilisation de ant dans Eclipse : http://www.jmdoudoux.fr/java/dejae/chap010.htm#chap_10

Bébêtes intelligentes

Création d'une nouvelle classe

Créez une nouvelle classe BebeteEmergente qui simule le comportement suivant :

  • Essaye d'aller à la vitesse moyenne des bébêtes autour
  • Va dans la direction moyenne du troupeau environnant (les bébêtes autour)
  • Maintient une distance minimale avec celles qui sont autour

Vous pouvez construire le comportement de votre bébête au fur et à mesure en définissant la méthode agit(). Regardez bien les méthodes utilitaires fournies dans les classes BebeteAbstraite et ChampDeBebetes : la direction d'une bébête est gérée en radians (soit une valeur entre 0 et 2*PI) et vous avez pratiquement toutes les informations précalculées. N'oubliez pas de faire des modifications pour que le champ de bébêtes utilise vos bébêtes à la place des bébêtes stupides.

Aide :

  • pour qu'une bestiole avance dans une certaine direction, si x,y est sa position initiale et dir sa direction en radians, le nouveau x vaudra x + distance de déplacement en pixels * cos(dir), y vaudra y + distance de déplacement * sin(dir).
  • Par défaut, la liste des bébêtes qui sont dans le champs de vision correspond à toutes les bébêtes en face de la bébête courante. Pour obtenir de meilleurs résultats, modifiez la méthode qui calcule la liste des bébêtes pour ne renvoyer que celles qui sont en face et par exemple à moins de 20 pixels de distance. BebeteAbstraite propose des fonctions de calcul de distance.

Tranformation du modèle objet du simulateur

Essayez de donner la liste de tous les problèmes de conception présents dans le projet :

  • Certains attributs static sont-ils vraiment des attributs de classe ou d'instance ?
  • Que faire des fonctions utilitaires sur les calculs de distance et de direction ?
  • Que faire pour que la simulation même soit indépendante de la partie graphique ?
  • Que faire pour changer le comportement des bébêtes lors de l'exécution ?
  • ...

Remarque : il n'est pas demandé de corriger tous ces problèmes pour l'instant, certaines erreurs évidentes peuvent être corrigées, Eclipse les a déjà détectées pour vous !

Tutoriaux et références

-- PhilippeCollet - 09 Oct 2012
to top


You are here: Minfo > GenieLog > GlTD1

to top

Copyright © 1999-2017 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding WIKIDeptinfo? Send feedback