Académique Documents
Professionnel Documents
Culture Documents
Remarques prliminaires
- Les travaux pratiques seffectueront sous le systme dexploitation Windows
avec l'outil de dveloppement NetBeans. A la cration des projets, veiller ce que
ceux-ci soient situs sur le disque rseau. Pour chaque exercice, un projet doit tre
cr. Pour les exercices ncessitant des arguments sur la ligne de commande, ceux
ci peuvent tre placs sur la ligne Arguments de la catgorie Run des
proprits du projet.
-
Vous pourrez trouvez de laide en ligne sur les diffrentes classes et mthodes de
la version 8 du langage utiliser ladresse:
http://download.oracle.com/javase/8/docs/api/
Tous les affichages consoles demands dans les exercices seront effectus par
appel de la mthode System.out.println(String), par contre les ventuels messages
derreurs seront affichs par appel de la mthode System.err.println(String).
Pour les comptes rendus de travaux pratiques, une attention particulire sera
porte sur les commentaires ; outre les listings des programmes, chaque classe,
partir du TP2, devra tre accompagne par sa description qui devra tre gnre
par la commande javadoc (utilisation des commentaires /**
*/). Les comptes
rendus sous forme darchive du projet NetBeans devront tre dposs sur la
plateforme denseignement http://foad.ensicaen.fr.
Exercice I
crire une application console au sein dune classe Telegramme qui permet lors
de son excution d'afficher les chanes de caractres prises en argument
spares par des "Stop.".
Exemple :
Chane ceci est drole
Rsultat ceci Stop. est Stop. drole Stop.
Exercice II
Ecrire une application console au sein dune classe Somme qui permet dafficher la
somme des nombres transmis en arguments lors de lexcution de lapplication.
Ne pas oublier d'intercepter l'exception NumberFormatException lors de la
conversion chane de caractres/entier.
dp
Travaux Pratiques
-1-
Exercice III
Ecrire une application console permettant d'crire un double avec un nombre
limit de dcimales. Pour cela, on dfinira une classe contenant la fonction
principale main et une mthode tronque, ayant deux paramtres : un double x et
un entier nbDecimales. La mthode devra retourner une chane de caractres
donnant le double x ventuellement tronqu de faon avoir au plus nbDecimales
dcimales. L'affichage du rsultat sur la console sera fait dans la mthode main.
On ne cherchera pas "arrondir au plus proche", on enlvera simplement les
dcimales excdentaires, que x soit positif ou ngatif. Le paramtre nbDecimales
transmis la mthode tronque sera toujours positif ou nul. La valeur de x et celle
de nbDecimales seront transmises par la ligne de commande.
Voici quelques exemples d'excution.
98.7689
98.76
-0.765
-0.7
-0.765
0
-4.765
-4
dp
Travaux Pratiques
-2-
JAVA TP2
Exercice I
On souhaite grer une bibliothque constitue de documents; un document est
caractris par un numro (entier) et un titre (chane de caractres).
a) Ecrire une classe "Document" permettant cette reprsentation. La classe
contiendra un constructeur admettant un entier (le numro) et une chane de
caractres (le titre) en argument et un deuxime constructeur admettant un objet
Document en argument. On inclura galement une mthode toString() pour
accder la reprsentation chane de caractres des objets Document et une
mthode equals () permettant de tester si deux documents sont gaux (deux objets
seront gaux s'ils sont tous les deux de type Document et s'ils ont le mme numro
de registre).
b) Testez la classe en crivant une application console (dans une autre classe)
capable de crer un objet de type Document et dafficher les caractristiques de ce
document en appelant la mthode System.out.println.
c) Ecrire une classe Bibliotheque rpondant au cahier des charges suivant :
a. Un constructeur qui prend en paramtre le nombre maximum de
documents que peut contenir la bibliothque. Les documents seront
contenus dans un tableau (on utilisera ultrieurement les "collections"
qui seront plus adaptes).
b. Une mthode int getCapacite () retournant la capacit de la
bibliothque.
c. Une mthode boolean ajoutDocument (Document) qui ajoute un
document la bibliothque. La mthode renvoie true si lajout sest
correctement effectu, false sinon.
d. Une mthode int getNbDocuments () retournant le nombre de
documents contenus dans la bibliothque.
e. Une mthode String toString () qui permettra dafficher lensemble des
documents contenus dans la bibliothque.
d) Modifier le programme principal pour tester la classe Bibliothque.
e) On souhaite maintenant que la mthode ajoutDocument () puisse gnrer une
exception si la bibliothque est pleine, plutt que de renvoyer un boolen.
Crer une classe BibiliothequeException pour grer ce cas de figure et modifier
en consquence la mthode ajoutDocument (). Modifier galement le
programme principal; il sera intressant de faire afficher les titres des
documents qui n'ont pu tre ajouts.
dp
Travaux Pratiques
-3-
Exercice II
On souhaite construire une classe baptise TriSimple capable de manipuler des
tableaux dentiers. Le tableau dentiers sera dfini comme une donne membre
prive de la classe. Au moment de la cration dun objet TriSimple, la taille du
tableau aura une valeur par dfaut dfinie par le programmeur mais pourra
galement tre indique par lutilisateur de la classe lors de la construction dun
objet TriSimple. Le tableau initial ne contiendra aucun lment. La classe TriSimple
devra contenir les mthodes suivantes :
. void inserer(int entier) : insre un entier dans le tableau en respectant un ordre
croissant sur les entiers.
. void supprimer(int entier) : retire un entier donn, si un tel entier est dans le
tableau. Si l'entier figure plusieurs fois, une seule occurrence est retire.
. public String toString() : retourne une chane de caractres dcrivant le
tableau, et redfinit la mthode correspondante de la classe Object.
. Deux constructeurs : un sans paramtre, et un qui prend en paramtre la
capacit initiale du tableau et la valeur dun incrment ; lincrment sera utilis par
les mthodes inserer () et supprimer () comme ceci :
-
dp
Travaux Pratiques
-4-
l'adresse
http://www.ecole.ensicaen.fr/~dp/tpjava/EssaiTri.java. Lors de l'excution de ce
programme de test, on pourra entrer :
la lettre a suivie de donnes insrer
la lettre s suivie de donnes supprimer
la lettre q pour quitter
Exercice III
On souhaite gnraliser le concept prcdent pour manipuler des tableaux tris de
type quelconque (pas uniquement d'entiers) pourvu qu'il soit possible d'tablir une
relation d'ordre et un test d'galit entre 2 valeurs de ce type.
- Dfinir une interface de nom Ordonnable contenant les prototypes:
boolean plusGrand (Object o) ;
boolean egal (Object o) ;
La mthode plusGrand renvoie true si l'instance courante est plus grande que
l'instance spcifie en paramtre, false sinon. La mthode egal renvoie true si l'instance
courante est gale l'instance transmise en paramtre, false sinon. Tout type de
donne implmentant cette interface devra dfinir ces mthodes.
-
dp
Travaux Pratiques
-5-
JAVA TP3
Exercice I
- Ecrire une application capable dafficher lcran le nom de tous les fichiers
contenus dans un rpertoire. Le nom du rpertoire sera saisi au clavier. On
saidera pour cet exercice de la classe java.io.File.
- Modifier lapplication pour nafficher cette fois que les fichiers dextension .java ;
On utilisera linterface java.io.FilenameFilter.
Exercice II
Ecrire une application console capable de lire le contenu dun fichier texte (la
lecture du fichier se fera laide des classes de flux de caractres java.io.Reader, le
nom du fichier sera saisi au clavier) et de compter le nombre d'occurrence des
mots prsents dans ce fichier. Un mot sera dfini comme un ensemble de
caractres dfinis entre 2 dlimiteurs. Les dlimiteurs de mots pourront tre les
suivants:
" ,.;:_-+*/\\.;\n\"'{}()=><\t!?"
Pour compter le nombre d'occurrences des mots dans le fichier il est possible
dutiliser une table de hachage; Le langage java propose la classe
java.util.HashMap<K,V>. Une table de hachage est une collection de paires clesvaleurs. Les cles permettent d'accder trs rapidement la valeur associe; Il ne
peut pas y avoir 2 cls identiques. Les cls doivent tre des sous classes de la
classe Object et implmenter les mthodes hashCode () et equals () (c'est le cas de la
classe String). La valeur associe la cl pourra tre une instance de la classe
Integer permettant de compter le nombre d'occurrences du mot correspondant.
Voil un exemple de rsultat attendu:
Le mot faut figure 2 fois
Le mot InputStreamReader figure 1 fois
Le mot void figure 1 fois
Le mot public figure 1 fois
Le mot IOException figure 1 fois
Le mot LEURS figure 1 fois
Le mot java figure 2 fois
Le mot ouvert figure 1 fois
Le mot throws figure 1 fois
Le mot TABLE figure 1 fois
dp
Travaux Pratiques
-6-
Exercice III
Ecrire une application console permettant de coder et dcoder des donnes. Ce
programme sera utilis de la manire suivante :
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
N O P Q R S T U V W X Y Z A B C D E F G H I J K L M
Exercice IV
a) Ecrire une classe FileCopy permettant la duplication dun fichier. Cette
classe comportera :
-
b) Ecrire dans une autre classe, une application console permettant de vrifier
le bon fonctionnement de cette classe.
c) Sans modifier la classe FileCopy, on souhaite maintenant pouvoir surveiller
la progression de la copie en affichant toutes les 2 secondes le nombre
doctets copis. Ecrire une classe tendant la classe java.lang.Thread
permettant de raliser cela.
d) Ecrire la mthode main () permettant de crer une application console
utilisant ces 2 classes.
dp
Travaux Pratiques
-7-
Exercice V
On se propose dtudier les problmes de synchronisation entre threads en
mettant en uvre un modle producteur-consommateur.
-
dp
Travaux Pratiques
-8-
JAVA TP4
On se propose de dvelopper une application pour interroger une base de donnes
cinmatographique. Le gestionnaire de base de donnes sera SQLite dont la
particularit est de placer lintgralit de la base de donnes (dclarations, tables,
index, donnes) dans un fichier unique indpendant de la plate forme. SQLite est
beaucoup utilis dans la programmation pour mobile. On pourra rcuprer
lexcutable pour Windows ladresse :
http://www.ecole.ensicaen.fr/~dp/tpjava/sqlite3.exe
Une base de donnes (palolithique) contenant quelques centaines de films
pourra tre tlcharge ladresse : http://www.ecole.ensicaen.fr/~dp/tpjava/cinema.db
Pour ouvrir la base en mode console, il suffit de taper : sqlite3 cinema.db
Schma de la base :
Pour connatre le schma dune table ainsi que les types de donnes utiliss, on peut
taper sous sqlite3 : .schema nom_de_la_table
Pour interfacer la base de donnes et le code java, il est ncessaire de disposer
dun driver jdbc. Celui-ci est disponible ladresse :
http://www.ecole.ensicaen.fr/~dp/tpjava/sqlite-jdbc-3.8.11.2.jar
dp
Travaux Pratiques
-9-
Travail effectuer :
Avec NetBeans, concevoir une interface utilisatrice pouvant interroger la base de
donnes et qui pourra ressembler ceci :
On saisit le nom ou le
dbut du nom dun
comdien. On ne peut
trouver quun seul
comdien ; un message
derreur apparaitra en
statut si on ne trouve
pas de comdiens dans la
base ou si on en trouve
plus quun.
Aprs avoir tap sur la touche Entre dans la zone de saisie du comdien ou cliqu
sur le bouton Rechercher :
-Ecole Nationale Suprieure d'Ingnieurs de Caen -
dp
Travaux Pratiques
- 10 -
On affiche le nom
complet du comdien.
Toutes les instructions SQL seront regroupes dans une classe que
lon pourra baptiser GestionBase.
Dfinir une classe Film contenant toutes les caractristiques dun
film (numro, titre, resume, ). Pour un comdien donn, on
disposera ainsi dune collection dobjets de type Film.
Les films seront affichs dans un objet de type javax.swing.JTable.
Grce aux classes de rendus, on naffichera que les titres des films
et les rsums dans les infobulles.
dp
Travaux Pratiques
- 11 -