Vous êtes sur la page 1sur 11

Exercices d’application

Lab Java

Enoncés des TP
© Rémy Courdier 1996-2009- Lab Java - Enoncés des TP - Version 2.2 1
TP0 – .java, .class, .jar, etc.
Organisation d’un projet Java
Création des répertoires de travail (exemple sous UNIX) :
# mkdir app_bonjour
# cd app_bonjour
# mkdir -p classes jar src/bonjour/afficheur

Creation des fichiers sources :


src/bonjour/BonjourLaReunion.java
package bonjour;
import bonjour.afficheur.*;
public class BonjourLaReunion {
public static void main (String [] args) {
Afficheur a_printer = new Afficheur();
a_printer.affiche("Bonjour la Réunion !");
}
}

src/bonjour/afficheur/Afficheur.java
package bonjour.afficheur;
public class Afficheur {
public void affiche(String message) {
System.out.println(message);
}
}

Vous disposez alors de l'arborescence suivante :


© Rémy Courdier 1996-2009- Lab Java - Enoncés des TP - Version 2.2 2
TP0 – .java, .class, .jar, etc.
Génération et Exécution
Compilation de l'application :
Commande javac
# javac -sourcepath src -d classes
src/bonjour/BonjourLaReunion.java
Vous obtenez l'arborescence suivante :

Archivage de l'application app_bonjour :


Pour archiver l'application, commencez par créer votre propre MANIFEST :
classes/MANIFEST
Manifest-version: 1.0
Created-by: Remy Courdier
Main-Class: bonjour.BonjourLaReunion
Création de l’archive :
# jar -cmf classes/MANIFEST jar/bonjour_la_reunion.jar -C classes bonjour

Exécution de l'application « Bonjour la Réunion » :


# java -classpath classes bonjour.BonjourLaReunion
ou : # java -classpath jar/bonjour_la_reunion.jar bonjour.BonjourLaReunion
ou encore : # java -jar jar/bonjour_la_reunion.jar

Génération de la documentation :
Javadoc –d ./doc –author –version –sourcepath src bonjour bonjour.afficheur

© Rémy Courdier 1996-2009- Lab Java - Enoncés des TP - Version 2.2 3


TP1 - Les structures de contrôle Java :
Classes WhileTest et ListCharacters
// WhileTest.java
/** * Demonstrates the while loop */
Implémenter les applications public class WhileTest {
WhileTest.Java public static void main(String args[]) {
double r = 0;
ListCharacters.Java while (r < 0.99d) {
r = Math.random();
System.out.println(r);
Compiler }
}
}
Tester // ListCharacters.java
/** * Demonstrates "for" loop by listing
* all the ASCII characters. */
public class ListCharacters {
public static void main(String args[]) {
for ( char c = 0; c < 128; c++ )
if (c != 26 ) // ANSI Clear screen
System.out.println(
"value: " + (int)c +
" character: " + c );
}
}

© Rémy Courdier 1996-2009- Lab Java - Enoncés des TP - Version 2.2 4


TP2 - Les structures de contrôle
Classe BreakAndContinue

// BreakAndContinue.java
Implémenter /** les clauses break et continue */
public class BreakAndContinue {
BreakAndContinue.Java
public static void main(String args[]) {

for(int i = 0; i < 100; i++) {


Modifier le code if(i == 74) break; // Out of loop
if(i % 9 != 0) continue; // Next iter.
supprimer un break
System.out.println(i);
supprimer un continue }
int i = 0; // An "infinite loop":
while(true) {
i++;
int j = i * 27;
if(j == 1269) break; // Out of loop
if(i % 10 != 0) continue; // Top
System.out.println(i);
}
}
}
Résultat : (avec un nombre par ligne)
0 9 18 27 36 45 54 63 72 10 20 30 40

© Rémy Courdier 1996-2009- Lab Java - Enoncés des TP - Version 2.2 5


TP3 - Les Tableaux, les exceptions
classe TabNew

import java.util.*;
/** TabNew.java
Implémenter * Création de tableaux par l’operateur new
TabNew.Java */
public class TabNew {
static Random rand = new Random();

Argument de programme static int pRand(int mod) {


return Math.abs(rand.nextInt()) % mod;
passer “mod” en paramètre }
du programme public static void main(String args[]) {
// déclaration et init. de tableaux
int tab[]; // <=> int [] tab;
tab = new int[pRand(20)];
// int tab[] = {1,2,3,4,5};
// utilisation de tableaux
prt("length of tab = " + tab.length);
for(int i = 0; i < tab.length; i++)
prt("tab[" + i + "] = " + tab[i]);
}
static void prt(String s) {
System.out.println(s);
}
}

© Rémy Courdier 1996-2009- Lab Java - Enoncés des TP - Version 2.2 6


TP4 - Le polymorphisme “simple”
Classes Forme, Cercle, Carre, Formes

Considérer une application devant


remplir aléatoirement un tableau de
Forme Formes (Cercle, Carré)
display()
Appliquer un traitement d’affichage de la
forme en mode caractère
> java Forme
Cercle Carré Je suis une forme carrée
Je suis une forme circulaire
display() display() Je suis un …

Faite évoluer votre solution pour utiliser


une classe abstraite

© Rémy Courdier 1996-2009- Lab Java - Enoncés des TP - Version 2.2 7


TP6 - Une applet simple : SimpleDraw
Dessin d’un cercle

Développer un applet de Classes standards Java à


configuration : importer :
largeur 270 pixel package applet
hauteur 150 pixels pour la définition de la classe Applet
(classe de base)
appelé par un fichier html
package awt
classe Graphics: pour dessiner
Cet applet doit dessiner un classe Color : définition des couleurs
cercle :
Fichiers produits
de couleur rouge
g.setColor (Color.red) SimpleDraw.html
de rayon 40 pixels SimpleDraw.java
positionné en x=115 et y=55 SimpleDraw.class
g.fillOval(115,55,40,40)
Passage de paramètre
classes de programme réaliser les modifications nécessaires
SimpleDraw pour passer la couleur du cercle en
paramètre de l’applet
© Rémy Courdier 1996-2009- Lab Java - Enoncés des TP - Version 2.2 8
TP7 - Gestion des événements
Gestion d’un “MouseEvent”

Dessine un cercle à l’emplacement du clic souris


utilisation de la classe SimpleDraw
création de la classe Circle pour la gestion du cercle
Directives d’implémentation :
Déclaration à l’Event Handler
addMouseListener(new ML());
Classe de gestion de l’événement souris
class ML extends MouseAdapter {...}
ou
classe ML implements MouseListener {...}
Méthode de gestion du clic souris
public void mouseClicked (MouseEvent e){...}
Récupération des coordonnées dans l’événement “e”:
e.getX() et e.getY()
Raffraichissement de l’écran
repaint();
Passer le paramètre de couleur à l’applet SimpleDraw

© Rémy Courdier 1996-2009- Lab Java - Enoncés des TP - Version 2.2 9


TP7 - Gestion des événements
Gestion d’une liste à choix

Dessine une forme cercle ou carrée de couleur rouge, verte ou


bleue à l’emplacement du clic souris
Les sélections de formes et des couleurs se font par deux listes à choix
Utilisation des classes SimpleDraw et Circle
Création des classes Shape (ou forme) et Square (ou Carre)
Directives d’implémentation :
Déclarations et initalisations
Choice colorChoice = new Choice(); // une liste à choix
colorChoice.addItem("rouge");... // ajout d’items
déclaration au Event Handler
colorChoice.addItemListener(new ILcolor ());
Classe de gestion de l’événement sur un item d’une liste à choix
class ILcolor implements ItemListener {...}
Méthode de gestion du changement de sélection
public void itemStateChanged (ItemEvent e){
String colorStr =
colorChoice.getSelectedItem();...}
Comparaison de chaînes de caractères :
if (colorStr.equals("Rouge"))

© Rémy Courdier 1996-2009- Lab Java - Enoncés des TP - Version 2.2 10


TP8 - Gestion de processus légers
Gestion d’un processus par forme dessinée

Il s’agit de gérer un processus quelconque qui a un effet visuel


relatif à chaque forme dessinée à l’écran

Directives d’implémentation :
exemple de traitement pour effet visuel avec temporisation à l’aide due la
fonction sleep().
try {
draw();
Thread.currentThread().sleep(500);
erase();
Thread.currentThread().sleep(500);
} catch(InterruptedException e) {}

© Rémy Courdier 1996-2009- Lab Java - Enoncés des TP - Version 2.2 11

Vous aimerez peut-être aussi