Exercices de Programmation Java JDK
Exercices de Programmation Java JDK
EJ05
JAVA PROGRAMMATION -
EXERCICES
1
[Link]
Version 3.6
2
[Link]
Version 3.6
Pralable .
Pour chaque exercice consulter les commentaires dans les sources et plus particulirement ceux
marqus //==>
Classes en jeu :
A raliser :
Sources :
/**
* Exo01
* class [Link]
*
*/
package exo01;
3
[Link]
Version 3.6
A raliser :
S u r S ystem .ou t
Vous avez pass 3 argument(s)
Frapper la touche <entree> pour continuer
argument[0]: paul
argument[1]: Gazon
argument[2]: 1234
Exo2 termin !
4
[Link]
Version 3.6
A raliser :
S u r S ystem .ou t
Exo3
====
tab_p[0]==> [Link]@1add2dd|victor|zoe|2000|f
tab_p[1]==> [Link]@eee36c|Burma|Nestor|1950|M
tab_p[2]==> [Link]@194df86|Inconnu|Inconnu|0|X
Frapper la touche <entree> pour continuer
5
[Link]
Version 3.6
5. Relancer avec les arguments : victor zoe "deux mille" f , tester et analyser.
S u r S ystem .err
Exo3
====
[Link]: For input string: "deux mille"
at
[Link]([Link])
at [Link]([Link])
at [Link]([Link])
at [Link]([Link])
Exception in thread "main"
6
[Link]
Version 3.6
A raliser :
1. Classe Service : implmenter la mthode initialMajuscule
7
[Link]
Version 3.6
S u r S ystem .ou t
Exo4
====
Ajout d'une 4me Personne
tab_p[0]==> [Link]@1add2dd|Victor|Paul Emile|1910|g
tab_p[1]==> [Link]@eee36c|Burma|Nestor|1950|M
tab_p[2]==> [Link]@194df86|Lafarge|Virginie|1892|F
tab _p [3]= = > exo04.p erson n e.P erson n e@ d efa1a|In con n u |In con n u |0|X
Frapper la touche <entree> pour continuer
Nom ? V oltaire
Prnom ? zaD ig
tab_p[0]==> [Link]@1add2dd|Victor|Paul Emile|1910|g
tab_p[1]==> [Link]@eee36c|Burma|Nestor|1950|M
tab_p[2]==> [Link]@194df86|Lafarge|Virginie|1892|F
tab_p[3]==> [Link]@defa1a|V oltaire|Z ad ig |0|X
Frapper la touche <entree> pour continuer
Exo4 termin !
8
[Link]
Version 3.6
A raliser :
9
[Link]
Version 3.6
S u r S ystem .ou t
Exo5
====
tab_p[0]==> [Link]@defa1a|Zola|Emile|1880|M
tab_p[1]==> [Link]@f5da06|Inconnu|Inconnu|0|X|Inconnu|Inconnu
tab_p[2]==>
[Link]@bd0108|Lafarge|Rosalie|1892|F|[Link].88|SNCF
Frapper la touche <entree> pour continuer
On affiche le rsultat
tab_p[0]==> [Link]@defa1a|Zola|Emile|1880|M
tab_p[1]==> [Link]@f5da06|Debieu|Fernand|0|X|Inconnu|Inconnu
tab_p[2]==>
[Link]@bd0108|Lafarge|Rosalie|1892|F|[Link].88|SNCF
Frapper la touche <entree> pour continuer
Exo5 termin !
10
[Link]
Version 3.6
A raliser :
2. Tester avec Exo06 qui utilise la mthode [Link]( Object [ ] t) pour trier le tableau
de rfrence de Personne.
11
[Link]
Version 3.6
S u r S ystem .ou t
Exo6
====
Af f
ch ag e d u tab leau d e P erson n e avan t sort
i
tab[0][Link]@defa1a Sartre Victor 2000 M
tab[1][Link]@11a698a Burma Nestor 1954 M [Link].69 Le cinoche
tab[2][Link]@107077e Lafarge Rosalie 1892 F [Link].88 SNCF
tab[3][Link]@7ced01 Dubois Robert 1950 M [Link].55 La peinture
tab[4][Link]@1ac04e8 Dupond Zoe 1951 F [Link].92 Le sport
Frapper la touche <entree> pour continuer
Af f
ch ag e ap rs tri su r n om
i
tab[0][Link]@11a698a Burma Nestor 1954 M [Link].69 Le cinoche
tab[1][Link]@7ced01 Dubois Robert 1950 M [Link].55 La peinture
tab[2][Link]@1ac04e8 Dupond Zoe 1951 F [Link].92 Le sport
tab[3][Link]@107077e Lafarge Rosalie 1892 F [Link].88 SNCF
tab[4][Link]@defa1a Sartre Victor 2000 M
Frapper la touche <entree> pour continuer
Af f
ch ag e ap rs tri su r p rn om
i
tab[0][Link]@11a698a Burma Nestor 1954 M [Link].69 Le cinoche
tab[1][Link]@7ced01 Dubois Robert 1950 M [Link].55 La peinture
tab[2][Link]@107077e Lafarge Rosalie 1892 F [Link].88 SNCF
tab[3][Link]@defa1a Sartre Victor 2000 M
tab[4][Link]@1ac04e8 Dupond Zoe 1951 F [Link].92 Le sport
Frapper la touche <entree> pour continuer
Af f
ch ag e ap rs tri su r an n eeN aissan ce
i
tab[0][Link]@107077e Lafarge Rosalie 1892 F [Link].88 SNCF
tab[1][Link]@7ced01 Dubois Robert 1950 M [Link].55 La peinture
tab[2][Link]@1ac04e8 Dupond Zoe 1951 F [Link].92 Le sport
tab[3][Link]@11a698a Burma Nestor 1954 M [Link].69 Le cinoche
tab[4][Link]@defa1a Sartre Victor 2000 M
Frapper la touche <entree> pour continuer
Af f
ch ag e ap rs tri su r p rn om
i
tO[0][Link]@11a698a Burma Nestor 1954 M [Link].69 Le cinoche
tO[1][Link]@7ced01 Dubois Robert 1950 M [Link].55 La peinture
tO[2][Link]@107077e Lafarge Rosalie 1892 F [Link].88 SNCF
tO[3][Link]@defa1a Sartre Victor 2000 M
tO[4][Link]@1ac04e8 Dupond Zoe 1951 F [Link].92 Le sport
Frapper la touche <entree> pour continuer
Af f
ch ag e ap rs m od if i
i cation d e t0[2] en rfren ce d e C olor.B LU E
tO[0][Link]@11a698a Burma Nestor 1954 M [Link].69 Le cinoche
tO[1][Link]@7ced01 Dubois Robert 1950 M [Link].55 La peinture
tO[2][Link][r=0,g=0,b=255]
tO[3][Link]@defa1a Sartre Victor 2000 M
tO[4][Link]@1ac04e8 Dupond Zoe 1951 F [Link].92 Le sport
Frapper la touche <entree> pour continuer
O n essaie d e trier su r p rn om
[Link]: L'argument o2 de compare n'est pas une Personne. Sa classe est:
[Link]
at exo06.Exo06$[Link]([Link])
at [Link]([Link])
at [Link]([Link])
at [Link]([Link])
12
[Link]
Version 3.6
Exo07 Exception.
Classes en jeu :
A raliser:
1. Dans la classe Personne, modifier les mthodes setNom et setPrenom afin qu'elles fassent
un contrle sur la taille de l'argument. Si sa longueur est suprieure
PersException.LONGUEUR_MAX, on lancera une PersException construite sur
l'argument responsable du problme.
3. Dans Personne, Ami et Professionnel corriger les mthodes qui sont impliques par les
modification prcdentes.
13
[Link]
Version 3.6
S u r S ystem .ou t
Exo7
====
[Link]@defa1a|||22|M|[Link].87|La peinture
========================================================================
Commencer par faire des saisies de plus de 10 caractres
Nom ?aaaaaaaaaaaaaaaaa
Nom ?zoe
Prnom ? victor
[Link]@defa1a|Zoe|Victor|22|M|[Link].87|La peinture
========================================================================
=======================================================================
On instancie un Ami avec un prnom trop long en dehors d'un bloc try
l'exception sera interceptee et non traitee ...
Frapper la touche <entree> pour continuer
14
[Link]
Version 3.6
A raliser :
15
[Link]
Version 3.6
S u r S ystem .ou t
Q u el test vou lez-vou s faire:
A index=new Index("./resources/FicText/[Link]")
B index=new Index("./resources/FicText/[Link]")
C index=new IndexNOK("./resources/FicText/[Link]")
D index=new IndexNOK("./resources/FicText/[Link]")
A
Taille de l'index : 99
Nombre d'occurences indexes : 140
Premier mot de l'index : a
Dernier mot de l'index : tes
Dure de la cration : 10 m s
saisir VIDER pour terminer et vider l'index sur [Link])
saisie EXIT pour terminer directement
Mot recherch:
corb eau
2|7|35|68|121|
Mot recherch:
V ID ER
a:64|
allch:23|
apprenez:100|
arbre:10|
aux:105|
beau:44|
bec:15|85|
belle:79|
bien:115|
bois:63|
bon:98|
bonjour:32|
ce:29|
celui:108|
ces:62|65|
cette:112|
confus:124|
corbeau:2|7|35|68|121|
de:61|73|107|138|
des:59|
dit:96|
doute:119|
du:34|
dpens:106|
en:13|93|
et:3|75|95|123|
flatteur:103|
fontaine:140|
fromage:17|117|
honteux:122|
------------
------------
vaut:114|
vit:104|
voix:80|
votre:48|53|
vous:37|41|55|
y:134|
:26|52|
coute:111|
tes:38|56|
Exo08 termin
16
[Link]
Version 3.6
A raliser :
Sources :
1. Classe Fenetre :
Complter le contructeur Fenetre(String titre) (commentaires Etape 1)
Tester avec Exo09
2. Classe Fenetre :
Voir commentaires Etape 2.
Tester avec Exo09
4. Classe Fenetre :
Redfinir la mthode paint(Graphics g)
Passer la couleur de g en rouge.
Dessiner un cercle de rayon 25 centr sur x et y (attributs de Fenetre).
Classe EcouteurSouris :
Modifier la mthode mouseClicked afin que la mthode paint de la fenetre soit appele et
que le cercle soit trac l'emplacement du click de souris. Pour invoquer la mthode paint
il faut appeler repaint( ) sur la fentre.
5. Faire , votre faon, le menu suivant afin que le cercle soit trac avec la couleur choisie.
Un Menu s'coute avec un ActionListener .
17
[Link]
Version 3.6
Exo10 Applet.
Classes en jeu :
A raliser :
1. Dvelopper une classe [Link] qui soit la fois une Applet et une
Application Console.
Elle devra avoir le mme aspect que l'application Exo010 et utiliser, comme unique
composant la classe [Link]
3. Tester comme une applet dans une fentre dos avec appletViewer.
18
[Link]
Version 3.6
char char
char
octet String
A p p li
Fich ier Texte
A raliser:
Redfinir la mthode int read(char [ ] cbuf , int off , int len ) (voir doc page suivante)
19
[Link]
Version 3.6
D oc JD K [Link] ead er
[Link]
C lass FilterR ead er
[Link]
[Link]
[Link]
O verrid es:
read in class Reader
R etu rn s:
The character read, as an integer in the range 0 to 65535 ( 0x00-0xffff
), or -1 if the end
of the stream has been reached
Th row s:
IOException - If an I/O error occurs
Param eters:
cbuf - Destination buffer
off - Offset at which to start storing characters
len - Maximum number of characters to read
R etu rn s:
The number of characters read, or -1 if the end of the stream has been reached
Th row s:
IOException - If an I/O error occurs
M+tre Corbe+u, sur un +rbre perch, Matre Corbeau, sur un arbre perch,
Ten+it en son bec un from+ge. Tenait en son bec un fromage.
M+tre Ren+r????d, p+r l'????odeur +llch,??? Matre Renard, par l'odeur allch,
Lui tint peu prs ce l+ng+ge : Lui tint peu prs ce langage :
"H ! bonjour, Monsieur du Corbe+u. "H ! bonjour, Monsieur du Corbeau.
Que vous tes joli ! que vous me semblez be+u ! Que vous tes joli ! que vous me semblez beau !
S+ns mentir,?????????????? si votre r+m+ge Sans mentir, si votre ramage
Se r+pporte votre plum+ge, Se rapporte votre plumage,
Vous ??????tes le Ph?n?i?x des htes de ces bois." Vous tes le Phnix des htes de ces bois."
A ces mots le Corbe+u ne se sent p+s de joie ; A ces mots le Corbeau ne se sent pas de joie ;
Et pour montrer s+ belle voix, Et pour montrer sa belle voix,
Il ouvre un l+rge bec, l+i?s?s?e tomber s+ proie. Il ouvre un large bec, laisse tomber sa proie.
Le Ren+rd s'en s+isit, et dit : "Mon bon Monsieur, Le Renard s'en saisit, et dit : "Mon bon Monsieur,
Apprenez que tout fl+tteur Apprenez que tout flatteur
Vit +ux dpens de celui qui l'coute : Vit aux dpens de celui qui l'coute :
Cette leon v+ut bien un f????rom+ge, s+ns do??ute. " Cette leon vaut bien un fromage, sans doute. "
Le Corbe+u, honteux et confus, Le Corbeau, honteux et confus,
Jur+, m+is un peu t+rd, qu'on ne l'y pre???ndr+it Jura, mais un peu tard, qu'on ne l'y prendrait plus.
plus.
Jean de la fontaine
Je+n de l+ font+ine
Exo11 termin
20
[Link]
Version 3.6
A raliser :
1. Modifier la classe ConnexionThread afin que la mthode dialogue tourne dans un thread
21
[Link]
Version 3.6
22
[Link]
Version 3.6
1
[Link]
Version 3.6
2
[Link]
Version 3.6
5. Excuter [Link]
java classpath ./bin [Link]
Ceci est un Hello World Java !
3
[Link]
Version 3.6
p ackag e exo02 ;
/*
* instanciation de monService afin de pouvoir utiliser la mthode
* pause
*/
Service monService = new Service();
[Link]();
/*
* class exo02.S ervice
*/
p ackag e exo02;
import [Link];
4
[Link]
Version 3.6
String nom;
String prenom;
int anneeNaissance;
char sexe;
public Personne(){
this("Inconnu","Inconnu",0,'X');
}
public Personne( String nom, String prenom, int anneeNaissance, char sexe ){
[Link](nom);
[Link](prenom);
[Link](anneeNaissance);
[Link](sexe);
}
5
[Link]
Version 3.6
/**
* Exo03 Implmentation de la classe Personne.
* Constructeur, getter, setter, redfinition de mthodes.
* Tableau d'objets.
* Mthode statique.
*
* class exo03.S ervice
*
*/
p ackag e exo03 ;
import [Link];
6
[Link]
Version 3.6
/**
* Exo03 Implmentation de la classe Personne.
* Constructeur, getter, setter, redfinition de mthodes.
* Tableau d'objets.
* Mthode statique.
*
* class exo03.Exo03
*/
p ackag e exo03;
/**
*
* Dans la classe Personne:
* Modification du contructeur par dfaut par appel au constructeur 4 arguments
Personne [] tab_p;
tab_p = new Personne[3] ;
tab_p[1]=new Personne("Burma","Nestor",1950,'M');
tab_p[2]=new Personne();
[Link]();
[Link] ("Exo3 termin!");
}
}
7
[Link]
Version 3.6
import [Link];
String nom;
String prenom;
int anneeNaissance;
char sexe;
public Personne(){
this("Inconnu","Inconnu",0,'X');
}
public Personne( String nom, String prenom, int anneeNaissance, char sexe ){
[Link](nom);
[Link](prenom);
[Link](anneeNaissance);
[Link](sexe);
}
8
[Link]
Version 3.6
/**
* Exo04 Package et encapsulation.
*
* class exo04.u til.S ervice
*
*/
import [Link];
import [Link];
import [Link];
// A partir d'une String quelconque renvoie une String semblable en minuscule avec l'initiale
en majuscule
public static final String initialeMajuscule(String s)
{
return (s==null || [Link]() == 0 )
? s
: [Link](0,1).toUpperCase() + [Link](1).toLowerCase();
}
9
[Link]
Version 3.6
/**
* Exo04 Package et encapsulation.
*
* class exo04 .Exo04
*
*/
p ackag e exo04;
import [Link].*;
import [Link].*;
if ([Link] != 4 ) {
[Link]("veuillez saisir sur la ligne de commande\n" +
"Nom prenom anneeNaissance sexe");
[Link] ("Exo4 termin !");
[Link](1);}
tab_p[0]=new Personne(args[0],args[1],[Link](args[2]),args[3].charAt(0));
tab_p[1]=new Personne("Burma","Nestor",1950,'M');
tab_p[2]=new Personne("Lafarge","Virginie",1892,'F');
// Ajout d'une 4me personne avec le constructeur par dfaut puis sur cette rfrence
// appel de saisirNom et saisirPrenom
[Link]("Ajout d'une 4me Personne");
tab_p[3]=new Personne();
tab_p[3].saisirNom();
tab_p[3].saisirPrenom();
[Link](0);
}
}
10
[Link]
Version 3.6
import [Link];
String nom;
String prenom;
int anneeNaissance;
char sexe;
public Personne(){
this("Inconnu","Inconnu",0,'X');
}
public Personne( String nom, String prenom, int anneeNaissance, char sexe ){
[Link](nom);
[Link](prenom);
[Link](anneeNaissance);
[Link](sexe);
}
11
[Link]
Version 3.6
/**
* Exo05 Hritage et Polymorphisme.
*
* class exo05 .p erson n e.A m i
*
*/
public Ami(){
super();
telDomicile="Inconnu";
hobby="Inconnu";
}
12
[Link]
Version 3.6
/**
* Exo05 Hritage et Polymorphisme.
*
* class exo05 .p erson n e.P rofession n el
*
*/
public Professionnel(){
super();
[Link]="Inconnue";
[Link]="Inconnue";
}
13
[Link]
Version 3.6
/**
* Exo05 Hritage et Polymorphisme.
*
* class exo05 .u til.S ervice
*
*/
import [Link];
import [Link];
import [Link];
//A partir d'une String quelconque, renvoie une String semblable en minuscule avec l'initiale en
majuscule
public static final String initialeMajuscule(String s)
{
return (s==null || [Link]() == 0 )
? s
: [Link](0,1).toUpperCase() + [Link](1).toLowerCase();
}
14
[Link]
Version 3.6
/**
* Exo05 Hritage et Polymorphisme.
*
* class exo05 .Exo05
*
*/
p ackag e exo05;
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
class Exo0 5 {
public static void main (String []args)throws IOException{
[Link]("Exo5\n====");
Personne [] tab_p=new Personne[3]; //allocation de 3 rfrences de Personnes;
tab_p[0]=new Personne("Zola","Emile",1880,'M');
tab_p[1]=new Ami(); //Pour voir les valeurs par defaut
tab_p[2]=new Professionnel("Lafarge","Rosalie",1892,'F',"[Link].88","SNCF");
[Link]();
[Link](0);
}
}
15
[Link]
Version 3.6
import [Link];
String nom;
String prenom;
int anneeNaissance;
char sexe;
public Personne(){
this("Inconnu","Inconnu",0,'X');
}
public Personne( String nom, String prenom, int anneeNaissance, char sexe ){
[Link](nom);
[Link](prenom);
[Link](anneeNaissance);
[Link](sexe);
}
16
[Link]
Version 3.6
/**
* Exo06 Interface et classe interne.
*
* class exo06 .u til.S ervice
*
*/
import [Link];
import [Link];
import [Link];
17
[Link]
Version 3.6
//A partir d'une String quelconque renvoie une String semblable en minuscule avec l'initiale en
majuscule
public static final String initialeMajuscule(String s)
{
return (s==null || [Link]() == 0 )
? s
: [Link](0,1).toUpperCase() + [Link](1).toLowerCase();
}
}
return [Link]();
}
// ==============================================================================================
18
[Link]
Version 3.6
/**
* Exo06 Interface et classe interne.
*
* class exo06 .Exo06
*/
p ackag e exo06;
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
class Exo0 6 {
public static void main (String []args)throws IOException{
[Link]("Exo6\n====");
tab[0]=new Personne("Sartre","Victor",2000,'M');
tab[1]=new Ami("Burma","Nestor",1954,'M',"[Link].69","Le cinoche");
tab[2]=new Professionnel("Lafarge","Rosalie",1892,'F',"[Link].88","SNCF");
tab[3]=new Ami("Dubois","Robert",1950,'M',"[Link].55","La peinture");
tab[4]=new Ami("Dupond","Zoe",1951,'F',"[Link].92","Le sport");
//Affichage du contenu du tableau d'InterfaceTriable aprs sort sur les membres nom
[Link]("Affichage aprs tri sur nom");
[Link](tab);
for(int i=0;i<[Link];i++) [Link]([Link]("tab["+i+"]" +
tab[i].toString(),'|',43,8));
[Link]();
//===============================================================================================
//Affichage du contenu du tableau d'InterfaceTriable aprs sort sur les prnoms en
//utilisant une classe interne static ComparatorPrenom
[Link]("Affichage aprs tri sur prnom");
19
[Link]
Version 3.6
//===============================================================================================
//Affichage du contenu du tableau d'InterfaceTriable aprs sort sur anneeNaissance en
//utilisant une classe interne static anonyme
[Link]("Affichage aprs tri sur anneeNaissance");
}
}
);
//============================================================================
// On fait la mme chose avec un tableau d'object
Object [] tO= new Object[5];
for (int i = 0; i < [Link]; i++) {
tO[i]=tab[i];
}
List list = [Link](tO); //Obtention d'une liste
[Link](list); //Mlange de la liste
tO=[Link](); //Rcupration du tableau
[Link](tO,compPrenom);
for(int i=0;i<[Link];i++) [Link]([Link]("tO["+i+"]" +
tO[i].toString(),'|',43,8));
[Link]();
20
[Link]
Version 3.6
//============================================================================
private static class C om p aratorP ren om implements C om p arator {
public int compare(Object o1, Object o2) {
if(! (o1 instanceof Personne))
throw new ClassCastException(
"L'argument o1 de compare n'est pas une Personne. Sa classe est:\n"+
[Link]().getName());
if(! (o2 instanceof Personne))
throw new ClassCastException(
"L'argument o2 de compare n'est pas une Personne. Sa classe est:\n"+
[Link]().getName());
return ((Personne)o1).getPrenom().compareTo(((Personne)o2).getPrenom());
}
21
[Link]
Version 3.6
Exo07 Exception.
/**
* Exo07 Exception.
*
* class exo07 .p erson n e.P erson n e
*/
import [Link];
String nom;
String prenom;
int anneeNaissance;
char sexe;
public Personne( String nom, String prenom, int anneeNaissance, char sexe ) throws
PersException{
[Link](nom);
[Link](prenom);
[Link](anneeNaissance);
[Link](sexe);
}
22
[Link]
Version 3.6
23
[Link]
Version 3.6
/**
* Exo07 Exception.
*
* class exo07 .p erson n e.A m i
*/
24
[Link]
Version 3.6
/**
* Exo07 Exception.
*
* class exo07 .p erson n e.P rofession n el
*/
package [Link];
25
[Link]
Version 3.6
/**
* Exo07 Exception.
*
* class exo07 .p erson n e.P ersExcep tion
*/
package [Link];
// Pour l'exemple: "===> PersException <====" est stock dans l'attribut message et
// donc rcuprable par getMessage()
public PersException(){
super("===> PersException <====");
}
26
[Link]
Version 3.6
/**
* Exo07 Exception.
*
* class exo07 .Exo07
*/
p ackag e exo07;
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
class Exo0 7 {
public static void main (String []args)throws IOException, PersException
{
[Link]("Exo7\n====");
[Link]("\n============================================================");
[Link]("Commencer par faire des saisies de plus de 10 caracteres pour voir");
[Link]();
[Link]();
[Link]([Link]());
// l'extrieur d'un bloc try l'exception remonte et sa mthode getMessage sera appele
[Link]("\n============================================================");
[Link]("\nOn instancie un Ami avec un prnom trop long en dehors d'un bloc try"+
"\nl'exception sera intercepte et non traite ...");
[Link]();
[Link]( "\nA l'exterieur d(un bloc try exception non intercepte ...");
Ami z= new Ami("zoe","Mon prnom est beaucoup trop long",10,'C',"[Link].18","La
lecture");
[Link]();
27
[Link]
Version 3.6
S u r S ystem .ou t
Quel test voulez-vous faire:
A index=new Index("./resources/FicText/[Link]")
B index=new In d ex("./resources/FicText/[Link]")
C index=new IndexNOK("./resources/FicText/[Link]")
D index=new IndexNOK("./resources/FicText/[Link]")
B
Taille de l'index : 11023
Nombre d'occurences indexes : 134743
Premier mot de l'index : a
Dernier mot de l'index : zola
Dure de la cration : 741 m s
saisir FIN pour terminer et vider l'index sur [Link])
saisir EXIT pour terminer directement
Mot recherch:
EXIT
Exo08termin
S u r S ystem .ou t
Quel test voulez vous faire:
A index=new Index("./resources/FicText/[Link]")
B index=new Index("./resources/FicText/[Link]")
C index=new IndexNOK("./resources/FicText/[Link]")
D index=new In d exN O K
("./resources/FicText/[Link]")
D
Taille de l'index: 11023
Nombre d'occurences indexes: 134743
Premier mot de l'index: a
Dernier mot de l'index: zola
Dure de la cration: 8092 m s
saisir FIN pour terminer et vider l'index sur [Link])
saisir EXIT pour terminer directement
Mot recherch:
EXIT
Exo08termin
/*
* Exo08 Map, casting et [Link].
*
* class [Link] d [Link] d ex
*/
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
28
[Link]
Version 3.6
public class In d ex {
TreeMap map;
long totalOccurs;
protected Index(){
//Ne fait rien c'est juste pour que IndexNOK(String fileName)
//puisse l'appeler
}
public Index (String fileName )throws IOException{
dureeCreation = [Link]();
map=new TreeMap();
long pos=0;
int i=0;
String s;
for(;;){
i=[Link](); //type du prochain token
if (i==StreamTokenizer.TT_EOF)break; //fin de fichier: FIN
if (i==StreamTokenizer.TT_WORD ){ //un mot: TRAITEMENT
pos++;
s=[Link]; //recupration du token
if([Link](s)){
((StringBuffer) [Link](s)).append(pos).append('|');
}
else {
[Link](s,new StringBuffer().append(pos).append('|'));
}
}
totalOccurs=pos;
29
[Link]
Version 3.6
/*
* Exo08 Map, casting et [Link].
*
* class [Link] d [Link] d exN O K
*/
package [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
//C lass n on correcte, les p osition s son t stockes sou s form e d e S trin g
// ch aq u e n ou veau m ot, il y au ra d on c cration et su p p ression d e S trin g
//tem p s d 'xcu tion b eau cou p p lu s lon g (en viron 10 fois p lu s co teu x p ou r u n f i
ch ier
//d e 140000 m ots
long pos=0;
int i=0;
String s;
for(;;){
i=[Link](); //type du prochain token
if (i==StreamTokenizer.TT_EOF)break; //fin de fichier: FIN
if (i==StreamTokenizer.TT_WORD ){ //un mot: TRAITEMENT
pos++;
s=[Link]; //recupration du token
if([Link](s)){
30
[Link]
Version 3.6
}
}
totalOccurs=pos;
[Link] = [Link]() - dureeCreation;
Object o= [Link](key);
return o==null?null:[Link]();
}
}
/*
* Exo08 Map, casting et [Link].
*
* class exo08.Exo08
*/
p ackag e exo08;
import [Link];
import [Link];
import [Link];
import [Link];
31
[Link]
Version 3.6
switch (choix){
case 'A':
index=new Index("./resources/FicText/[Link]");
break;
case 'B':
index=new Index("./resources/FicText/[Link]");
break;
case 'C':
index=new IndexNOK("./resources/FicText/[Link]");
break;
case 'D':
index=new IndexNOK("./resources/FicText/[Link]");
break;
default:
[Link]("Choix incorrect");
[Link](0);
break;
}
String rech;
[Link]("saisir FIN pour terminer et vider l'index sur [Link])\n"+
"saisir EXIT pour terminer directement");
for(;;){
[Link]("Mot recherch : ");
rech=[Link]();
if ([Link]("FIN")) {
[Link]([Link]);
break;
}
if ([Link]("EXIT")){
break;
}
rech=[Link](rech);
if (rech==null) [Link]("mot inconnu dans l'index") ;
else [Link](rech) ;
}
[Link]("\nExo08 termin");
}
}
32
[Link]
Version 3.6
import [Link].*;
import [Link].*;
//C'est Fenetre elle-mme qui coute les actions des menus et qui fait le travail.
public class Fen etre extends Fram e implements A ction Listen er{
int x=-1;
int y;
Color couleur= [Link];
String forme="carre";
int taille=20;
TextDialog td;
boolean go=false;
//etape 2
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e){[Link](0);}
});
//Fabrication du menu
initMenu();
repaint();
}
33
[Link]
Version 3.6
// ==============================================================================
// Redfinition de la mthode paint pour dessiner un cercle ou un carr
// l'emplacement du clic
public void paint (Graphics g)
{
if (x!=-1) {
int dx=taille/2;
[Link](couleur);
if ([Link]("cercle")) [Link]( x-dx,y-dx,taille,taille);
else if ([Link]("carre")) [Link](x-dx,y-dx,taille,taille);
}
}
// ==============================================================================
void initMenu(){
MenuBar menuBar=new MenuBar();
setMenuBar(menuBar);
Menu menu=new Menu("Couleur");
MenuItem menuItem=null;
menuItem = new MenuItem("Bleu");
[Link](Fenetre.ACTION_BLEU);
[Link](menuItem);
[Link]();
[Link](menu);
[Link]();
34
[Link]
Version 3.6
// ==============================================================================
// TextDialog est interne la classe Fenetre
// elle connat implicitement l'instance qui l'a cre, [Link]
// elle accde donc directement l'attribut taille de l'instance qui l'a cre.
class TextD ialog exten d s D ialog {
TextField tf;
TextDialog(String titre) {
super([Link],titre);
setLayout(new BorderLayout());
setBackground([Link]);
tf=new TextField("Taille",20);
add(tf,[Link]);
Button b=new Button("OK");
add(b,[Link]);
[Link](new ActionListener(){
public void actionPerformed(ActionEvent e) {
try{
taille=[Link]([Link]());
setVisible(false);
[Link](); //repaint de la Fenetre parente
}
catch(NumberFormatException ex){setTitle("Il faut saisir un nombre");}
}
}
);
}
}
}
/**
* Exo09 AWT , Frame , Listener et Event.
*
* class exo09.g u [Link] teu rS ou ris
*/
package [Link];
import [Link];
import [Link];
35
[Link]
Version 3.6
/**
* Exo09 AWT , Frame , Listener et Event.
*
* class exo09.Exo09
*/
package exo09;
import [Link];
class Exo0 9 {
public static void main (String []args) {
[Link]("Exo9\n====");
Fenetre e = new Fenetre("Belle Fentre pour Exo9");
}
}
36
[Link]
Version 3.6
Exo10 Applet.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<!-- .../Projet/[Link] -->
</head>
<body>
<h1> Voici une belle applet </h1>
<applet code="[Link]" codebase="./bin"
height="220"
width="300">
</applet>
<h1> Et encore une autre </h1>
<applet code="[Link]" codebase="./bin"
height="250"
width="350">
</applet>
/**
* Exo10 Applet.
*
* class [Link] p let.C alcu letteA p p let
*
*/
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
public CalculetteApplet(){
[Link]("Contructeur");
37
[Link]
Version 3.6
[Link](
new WindowAdapter(){
public void windowClosing(WindowEvent e){[Link](0);}
});
}
/**
* Exo10 Applet.
*
* class [Link].C alcu lateu r
*
*/
p ackag e [Link];
38
[Link]
Version 3.6
//
/**
* Exo10 Applet.
*
* class exo10.g u i.C lavier
*/
p ackag e exo10.g u i;
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
Calculateur calculateur;;
Panel panelAffiche;
Panel panelChiffre;
Panel panelOperateur;
Panel panelClear;
String [] vChiffre={"7","8","9","4","5","6","1","2","3","0"};
String [] vOperateur={".","Push (p)","+","-","*","/","1/x (i)","RotateUp", "RotateDown",
"ChangeXY (e)","ClearAll (C)","ClearX (c)","Signe X (s)" };
String [] actionOperateur={".","p","+","-","*","/","i","U", "D", "e","C","c","s"};
39
[Link]
Version 3.6
//=============================================================================
public Clavier(){
//Changement de layout
setLayout(new BorderLayout());
calculateur=new Calculateur();
lRegistre[0]=new LabelCouleur("0",[Link]);
panelAffiche=new Panel();
[Link](new GridLayout(4,1));
for (int i=3;i>-1 ;i-- ) [Link](lRegistre[i]);
add(panelAffiche,[Link] );
add("South",panelClear);
for(int i=0;i<[Link];i++){
bChiffre[i].addActionListener(boutonListener);
bChiffre[i].addKeyListener(cleListener);
}
40
[Link]
Version 3.6
}
//=============================================================================
class BoutonCouleur extends Button{
BoutonCouleur(String texte,Color couleur){
super(texte);
setBackground(couleur);
}
}
//=============================================================================
class LabelCouleur extends Label{
LabelCouleur(String texte,Color couleur){
super(texte,[Link]);
setBackground(couleur);
}
41
[Link]
Version 3.6
/**
* Exo10 Applet.
*
* class exo10.g u i.B ou ton Listen er
*
*/
p ackag e exo10.g u i;
import [Link].*;
import [Link].*;
import [Link];
42
[Link]
Version 3.6
/**
* Exo10 Applet.
*
* class exo10.g u i.C leListen er
*
*/
p ackag e exo10.g u i;
import [Link];
import [Link];
import [Link];
import [Link];
char c=[Link]();
switch (c)
{
case 'c': [Link]();break;
case 'C': [Link]();break;
case '+': [Link]();break;
case '-': [Link]();break;
case '*': [Link]();break;
case '/': [Link]();break;
case 'e':
case 'E':[Link]();break;
case 'i':
case 'I':[Link]();break;
case 'p':
case 'P': [Link]();break;
case 's':
case 'S':[Link]();break;
case 'x':
case 'X': [Link](1);break;
}
switch ([Link]()){
case KeyEvent.VK_UP: [Link]();break;
case KeyEvent.VK_DOWN: [Link]();break;
}
if([Link](c) ||
c== '.' ) [Link](c);
43
[Link]
Version 3.6
/**
* Exo10 Applet.
*
* class exo10.Exo10
*/
p ackag e exo10;
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
calculetteFrame[i].addWindowListener(
new WindowAdapter(){
public void windowClosing(WindowEvent e){[Link](0);}
});
}
}
44
[Link]
Version 3.6
p ackag e exo11.f i
ltre;
import [Link];
import [Link];
import [Link];
public int read(char[] cbuf, int off, int len) throws IOException {
int ret=0;
int dest=0;
45
[Link]
Version 3.6
/**
* Exo11 [Link], FilterReader et pattern dcorateur.
*
* class exo11.f i
[Link] ep lace
*
*/
p ackag e exo11.f i
ltre;
import [Link];
import [Link];
import [Link];
public int read(char[] cbuf, int off, int len) throws IOException {
int ret=0;
ret=[Link](cbuf, off, len);
if (ret == -1) return ret;
46
[Link]
Version 3.6
/**
* Exo11 [Link], FilterReader et pattern dcorateur.
*
* class exo11.Exo11
*
*/
p ackag e exo11;
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
String fileName="./resources/FicText/[Link]";
BufferedReader bf=null;
String ligne;
try {
bf=new BufferedReader(
new FiltreDelete('?',
new FiltreReplace('+','a',
new FileReader(fileName))));
while (true){
ligne=[Link]();
if (ligne==null)break ;
[Link](ligne);
}
} catch (FileNotFoundException e) {
[Link]();
} catch (IOException e){
[Link]();
}
[Link]("\nExo11 termin");
}
47
[Link]
Version 3.6
/**
* Exo12 Thread, [Link] , [Link] et srialization.
*
* class [Link] r.C on n ection Th read
*
*/
p ackag e [Link] r;
import [Link].*;
import [Link].*;
import [Link].*;
iPhotos=[Link]();
iCitations=[Link]();
iProverbes=[Link]();
[Link]=numClient;
out=new ObjectOutputStream([Link]() );
in=new BufferedReader(new InputStreamReader([Link]()) );
void dialogue(){
String sIn;
try{
for(;true;){
48
[Link]
Version 3.6
sIn=[Link]();
if([Link]("Photo")) [Link]([Link]() ? [Link]():initItPhotos());
else if ([Link]("Citation")) [Link]([Link]() ? [Link]():
initItCitations());
else if ([Link]("Proverbe")) [Link]([Link]()? [Link]():
initItProverbes());
p u b lic void ru n () {
S ystem .ou t.p rin tln ("Je su is d an s le ru n d u clien t "+ n u m C lien t);
d ialog u e();
}
49
[Link]
Version 3.6
/**
* Exo12 Thread, [Link] , [Link] et srialization.
*
* class [Link] r.S erveu rM u lti
*
*/
p ackag e [Link] r;
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
public ServeurMulti() {
try {
50
[Link]
Version 3.6
}
catch([Link] e){
[Link]();
[Link](0);}
}
51
[Link]
Version 3.6
/**
* Exo12 Thread, [Link] , [Link] et srialization.
*
* class exo12.d [Link] ag eS erializab le
*
*/
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
/**
* Constructeur partir d'un File cod en jpeg
*/
public ImageSerializable(File fileImage) {
try {
buffer=new byte [ (int ) [Link]()];
new FileInputStream(fileImage).read(buffer);
}
catch ([Link] e) { [Link]() ; }
catch ([Link] e) {[Link]();}
}
52
[Link]
Version 3.6
/**
* Exo12 Thread, [Link] , [Link] et srialization.
*
* class [Link] t.Exo12C lien t
*
*/
p ackag e [Link] t;
import [Link];
import [Link].*;
import [Link];
import [Link];
//Construire l'application
public Exo12Client(String adrServeur) {
NetClient client=null;
try {
client=new NetClient(adrServeur,11111);
} catch (ConnectException e) {
[Link]("Pas de serveur disponible");
[Link](0);
} catch (IOException e) {
[Link]("Problmes pour tablir les flux entre client et serveur");
[Link](0);
}
Exo12ClientUI frame = new Exo12ClientUI(client);
//Valider les cadres ayant des tailles prdfinies
//Compacter les cadres ayant des infos de taille prfres - ex. depuis leur disposition
if (packFrame) {
[Link]();
}
else {
[Link]();
}
//Centrer la fentre
Dimension screenSize = [Link]().getScreenSize();
Dimension frameSize = [Link]();
if ([Link] > [Link]) {
[Link] = [Link];
}
if ([Link] > [Link]) {
[Link] = [Link];
}
[Link](([Link] - [Link]) / 2, ([Link] -
[Link]) / 2);
[Link](true);
}
//Mthode main
public static void main(String[] args) {
if ([Link]==0){
[Link]("Vous devez passer l'adresse du serveur en argument");
[Link](0);
}
try {
[Link]([Link]());
}
catch(Exception e) {
[Link]();
}
new Exo12Client(args[0]);
}
53
[Link]
Version 3.6
/**
* Exo12 Thread, [Link] , [Link] et srialization.
*
* class [Link] t.Exo12C lien tU I
*
*/
p ackag e [Link] t;
import [Link].*;
import [Link].*;
import [Link].*;
import [Link];
//Composants graphiques
JPanel contentPane;
JPanel panelAffiche = new JPanelAffiche();
JButton jButtonPhoto = new JButton();
JButton jButtonProverbe = new JButton();
JButton jButtonExit = new JButton();
JButton jButtonCitation = new JButton();
GridBagLayout gridBagLayout1 = new GridBagLayout();
//Construire le cadre
public Exo12ClientUI(NetClient client) {
[Link]=client;
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
try {
jbInit();
}
catch(Exception e) {
[Link]();
}
}
//Initialiser le composant
private void jbInit() throws Exception {
contentPane = (JPanel) [Link]();
[Link](gridBagLayout1);
[Link](new Dimension(407, 325));
[Link]("Titre du cadre");
[Link](new Dimension(407, 325));
[Link]([Link]());
[Link](new Dimension(79, 25));
[Link](new Dimension(79, 25));
[Link](new Dimension(79, 25));
[Link]('0');
[Link]("Photo");
[Link](new Exo10ClientUI_jButtonPhoto_actionAdapter(this));
[Link](new Dimension(79, 25));
[Link](false);
[Link]("Proverbe");
[Link](new Exo10ClientUI_jButtonProverbe_actionAdapter(this));
[Link](new Dimension(79, 25));
[Link](new Dimension(79, 25));
[Link](new Dimension(79, 25));
[Link]('0');
[Link](false);
[Link]("Exit");
54
[Link]
Version 3.6
[Link](new Exo10ClientUI_jButtonExit_actionAdapter(this));
[Link](new Dimension(79, 25));
[Link](new Dimension(79, 25));
[Link](new Dimension(79, 25));
[Link]('0');
[Link]("Citation");
[Link](new Exo10ClientUI_jButtonCitation_actionAdapter(this));
[Link](panelAffiche, new GridBagConstraints(1, 0, 1, 4, 1.0, 1.0
,[Link], [Link], new Insets(28, 15, 29, 11), 271,
254));
[Link](jButtonCitation, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0
,[Link], [Link], new Insets(28, 7, 0, 7), 9, 0));
[Link](jButtonPhoto, new GridBagConstraints(0, 1, 1, 1, 0.0, 0.0
,[Link], [Link], new Insets(9, 7, 0, 7), 9, 0));
[Link](jButtonExit, new GridBagConstraints(0, 3, 1, 1, 0.0, 0.0
,[Link], [Link], new Insets(9, 7, 10, 7), 9, 0));
[Link](jButtonProverbe, new GridBagConstraints(0, 2, 1, 1, 0.0, 0.0
,[Link], [Link], new Insets(9, 7, 0, 7), 9, 0));
}
void jButtonCitation_actionPerformed(ActionEvent e) {
[Link]("Citation");
objet=[Link]();
[Link]();
}
void jButtonPhoto_actionPerformed(ActionEvent e) {
[Link]("Photo");
objet=[Link]();
[Link]();
}
void jButtonProverbe_actionPerformed(ActionEvent e) {
[Link]("Proverbe");
objet=[Link]();
[Link]();
}
void jButtonExit_actionPerformed(ActionEvent e) {
[Link](0);
}
//============================================================================
class JPanelAffiche extends JPanel{
[Link](g);
if(objet==null){//on a encore rien demand
return;
}
55
[Link]
Version 3.6
[Link](image,0,0,lCible,hCible,null);
}
}
}
}
//=============================================================================
class Exo10ClientUI_jButtonCitation_actionAdapter implements [Link] {
Exo12ClientUI adaptee;
Exo10ClientUI_jButtonCitation_actionAdapter(Exo12ClientUI adaptee) {
[Link] = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButtonCitation_actionPerformed(e);
}
}
Exo10ClientUI_jButtonPhoto_actionAdapter(Exo12ClientUI adaptee) {
[Link] = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButtonPhoto_actionPerformed(e);
}
}
56
[Link]
Version 3.6
Exo10ClientUI_jButtonProverbe_actionAdapter(Exo12ClientUI adaptee) {
[Link] = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButtonProverbe_actionPerformed(e);
}
}
Exo10ClientUI_jButtonExit_actionAdapter(Exo12ClientUI adaptee) {
[Link] = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButtonExit_actionPerformed(e);
}
}
57
[Link]
Version 3.6
/**
* Exo12 Thread, [Link] , [Link] et srialization.
*
* class [Link] t.N etC lien t
*
*/
p ackag e [Link] t;
import [Link].*;
import [Link].*;
socket=new Socket(host,port);
out=new PrintStream([Link]() );
in=new ObjectInputStream([Link]() );
58