28
Cours 5 16/01/06 18:12 1 I. Test / structure alternatives / conditionnelles / Choix intro o Séquence : Séquence d’instruction et toutes les instructions sont exécuté une et une seule fois. o Test : Les instructions seront exécutée si et uniquement si une condition est remplie. o Utilisation d’un pseudo langage pour décrire les conditions et les boucles marche pour tous les langages. 1) Condition simple o SI condition ALORS instructions FINSI exemple : SI 0A9 ALORS AFFICHER « c’est un chiffre » FINSI 2)Condition o if (condition) instruction 1; (seule l’instruction 1 dépend du if) instruction 2 ; o if (condition) { instruction 1 ; (l’instruction 1 et 2 dépend du if) instruction 2 ; } 3) Condition + alternative o SI condition ALORS instrutctions1 ; SINON instruction2 ; FINSI 4°) indentation o if (condition) instructions1 ; else instruction2 ; 5°) Imbrication o SI car=’/’ ALORS SI BØ ALORS R A/B

I. Test / structure alternatives / conditionnelles / Choixjohnnycastoy.free.fr/esiee/i2/INFO/IN201/IN101.pdf · I. Test / structure alternatives / conditionnelles / Choix • intro

Embed Size (px)

Citation preview

Cours 5 16/01/06 18:12

1

I. Test / structure alternatives / conditionnelles / Choix • intro

o Séquence : Séquence d’instruction et toutes les

instructions sont exécuté une et une seule fois. o Test : Les instructions seront exécutée si et uniquement si

une condition est remplie. o Utilisation d’un pseudo langage pour décrire les conditions

et les boucles marche pour tous les langages.

• 1) Condition simple o SI condition

ALORS instructions FINSI

exemple : SI 0≤A≤9 ALORS AFFICHER « c’est un chiffre »

FINSI

• 2)Condition o if (condition)

instruction 1; (seule l’instruction 1 dépend du if) instruction 2 ;

o if (condition) { instruction 1 ; (l’instruction 1 et 2 dépend du if) instruction 2 ; }

• 3) Condition + alternative o SI condition

ALORS instrutctions1 ; SINON instruction2 ; FINSI

• 4°) indentation o if (condition)

instructions1 ; else instruction2 ;

• 5°) Imbrication o SI car=’/’

ALORS SI B≠Ø ALORS R A/B

2

FINSI SINON R A*B

FINSI o If (car == ‘/’)

{if (B !=Ø) R = A/B ;} else R = A*B ;

• 6°) Tests non indépendants o if (A<Ø) s.o.p(« négatif ») ;

elseif (A == Ø) s.o.p(« Nul ») ; elseif (A>Ø) s.o.p(« positif ») ;

elseif n’est pas nécessaire a la dernière ligne. Else suffit.

o if (Math.sqrt(A)>2 && A>Ø)

Erreur : si A est nul, le programme plante car il y a erreur sur la

racine carré de 1.

il est donc référable de mettre : (A>Ø && Math.sqrt(A))

o if (A<B && A<C) s.o.p(A); if (B<A && B<C) s.o.p(B); if (c<=A && C<=B) s.o.p(C) ;

expression lourds !

o if (A<=B && A<=C) s.o.p(A) ; else if (B<=A && B<=C) s.o.p(B) ; else s.o.p(C) ;

un peu moins de test pour la même expression

o if (A<=B)

if (A<=C) s.o.p(A) ; else s.o.p(C) ; else if (b<=C) s.o.p(B) ; else s.o.p(C) ;

structure hiérarchisée pour l’expression

o if (a<=B) M=A ; else M=B ; if (C<=M) s.o.p(C); else s.o.p.(M);

un peu mieux : on découvre la solution petit à petit

II. Boucle répétitive • 1)TANT QUE

3

o TANT QUE condition vraie FAIRE

instruction FIN TANTQUE

nombre de tour inconnu.

Le test de la condition est situé au début de la boucle. : La

boucle peu ne pas tourner si la condition initiale n’est pa

exécutée.

En sortie de boucle la condition est forcément fausse : a

prendre en compte en prog inutile de retester que les

conditions testées sont fausses en sortie de boucle

Il faut initialiser les variables qui sont dans la condition avant la

boucle.

Il est important que la boucle puisse changer la condition : si la

boucle ne modifie par la condition, la boucle tourne alors à

l’infini erreur !

• 2)REPETER o REPETER

instructions JUSQUA condition devienne vraie

nb de tour inconnue

Test à la fin 1 à N

les instructions sont exécutés au moins une fois

il faut que les instructions puissent changer la condition

risque de boucle infini

• 3) REPETER n FOIS o REPETER n FOIs

instructions FINREPETER

nombre de tour connu : n

o variable 1

TANT QUE variable≤n FAIRE instructions variable variable + 1

FIN TANTQUE

équivalent à la boucle répété n fois.

• 4) POUR variable DE x À y

4

o POUR variable DE début A fin FAIRE

instruction FIN POUR

nombre de fois connu : fin – début + 1

test au début : elle peut ne pas être exécutée si la condition est

fausse dès le début.

o variable 18 ;

POUR variable DECROISSANT DE début A fin PAR pas FAIRE instructions FIN POUR

DECROISSANT est une option qui permet de compter a l’envers

PAR permet de compter avec un certain pas. par exemple de 2

en 2.

III. Choix de boucle • Nombre de tour connu à l’avance ?

o OUI POUR ou REPETER n FOIS

Si l’on a besoin de la valeur du compteur : POUR

sinon REPETER n FOIS.

o NON TANT QUE ou REPETER JUSQUA

si l’on dois exécuter les instruction au moins une fois : REPETER

JUSQUA

sinon TANT QUE

IV. Boucle JAVA • 1) while

o while (condition) instruction;

équivalent de TANTQUE

• 2) do while o do

instruction while( !(condition));

équivalent de REPETER

• 3) for o for (initialisation ; test de continuation ; incrémentation)

instruction;

équivalent à POUR … DE … A …

5

parenthèses obligatoires

utilisation des points virgules !! (même si c’est pas logique car

d’habitude le « ; » termine les instructions)

initialisation est une instruction (affectation).

ex : variable = début

o for (variable = début ; variable<=fin ; variable ++)

instructions ;

• 4) for / particulière o for (variable = Ø; variable<n; variable ++)

instructions;

équivalent a REPETER n FOIS

V. Imbrication • exemple 1

o for (i=Ø ; i <1Ø ; i++) {for (j=Ø ; j<5 ; j++) if (i == j) s.o.print(‘*’) ; else s.o.print(‘.’) ; s.o.println() ; }

TD 5.1 16/01/06 18:12

6

IN101 : • I° les objectif

o Savoir utiliser les structures alternatives simple et multiples et

savoir manipuler les expressions booléennes

• II) Notions a mettre en œuvre o Cours 5 : SI ALORS FINSI, if o Cours 5 : SI ALORS SINON FINSI, if else o TD 5.1 : SELON QUE VAUT AURE FINSELONQUE, switch case

break default

• III) Références dans le petit memento de java o cf : 11.3.1.1 o cf : 11.3.1.2

• IV) Expressions booléenne o 1°) (i1 == 0)

o 2°) (i2 > 0) o 3°) (i3 >= 0) o 4°) (‘0’>c || c>’9’) o 5°) (i4%2 == 1 && i5 == 0)

a%2 est soit égale à 0 soit égale à 1

• V) Traduire en java o public void isChar(char c)

{ if (c >= ‘a’ && c <= ‘z’) { s.o.p("minuscule) ; } else if (c >= ‘A’ && c <= ‘Z’) { s.o.p("MAJUSCULE") ; } else if (c >= ‘0’ && c <= ‘9’) { s.o.p("chiffre") ; } else { s.o.p("divers ») ;

7

} }

• VI) Exercies o public void getMax(int a, int b, int c)

{ private int m ; m = a ; if (b > m) { m = b ; } if (c > m) { m = c ; } return m; }

o public void calc(float a, char op, float b) { float res ; string err ; switch (op) { case ‘*’ : res = a*b; break ; case ‘+’ : res = a+b ; break ; case '-' : res = a-b ; break ; case ‘/’ : if (b==0) err = "Division par zero ! " ; else res = a/b ; break ;

8

default : err = "Operation inconnue !" ; } if(err) { s.o.p(err) ; } else { s.o.p( a + " " + op + " " + b + " = " + res) ; } }

• VII Problèmes o METHODE comparaison vecteurs PARAM a1 (float), b1 (float), c1

(float), a2 (float), b2 (float), c2 (float) RETOUR char

public void printDate(char jour, int quantieme, int mois, int annee)

TD 5.2 16/01/06 18:12

9

TD 5.2 • 1) les objectifs

o Savoir choisir et programmer des structures répétitives et savoir

manipuler les expressions booléennes.

• 2) Notions abordées dans le cours 5 o TANT QUE , while () {} o REPETER JUSQU'A, do {} while (!()) o POUR, for (;;) {} o REPETER … FOIS, for (;;) {} o critères de choix de boucle

• 4) o pour i=1

X(1) = X(0) * X0 = X0^2

o pour i=2 X(2) = X(1) * X0 = X0^3

o pour i=n X(n) = X0^(n+1) ≡ X0^(Math.floor(X0)))

• 5) traduire en Java o public void lireVoyelle()

{ char carac ; int NbEssais=0 ; boolean estVoyelle= false; do { carac = JOptionPane.showInputDialog(« Entrez une voyelle minuscule »).charAt(0) ; NbEssais++ ; estVoyelle = (carac == ‘a’ || carac == ‘e’ || carac == ‘i’ || carac == ‘o’ || carac == ‘u’ || carac == ‘y’) ; if(!estVoyelle) s.o.p(« erreur ») ; } while(( !estVoyelle) && (NbEssais)) if(!voyelle) s.o.p(« trop d’erreur ») ; else s.o.p( carac + « est bien une voyelle

10

minuscule ») ; }

• 6) o o public int getFactorielle(int n)

{ if (n<0) { return 0 ; } else { int i; int f = 1 ; for (i = 2 ; (i ≤ n) ; i++) { f = f * i ; } return f ; } }

o public void affNb(int num)

{ int i ; string res ; string work ; for (i=0 ; i≤ num.length ; i++) { switch(num.at(i)) { case 0 : work = « zero » ; break ; case 1 : work = « un » ; break ; […] case 9 :

11

work = « neuf » ; } res = work + « » + res ; } s.o.p(res) ; }

QCM 2 16/01/06 18:12

12

QCM • Question 1

o d°)cp ../ESSAI.TXT NOUVEAU.TXT

rm ESSAI.TXT FAUX

• Question 3 o E) obj = prim ;

prim = obj ;

• Question 4 o

• Question 13 a)

Cours 6 16/01/06 18:12

13

I Tableaux • Intro

o Objectif est de regrouper un grand nombre de valeur et donnée

dans un tableau.

• 1°) Taille Fixe o Les tableaux ont une taille fixe. o Dans C et C++ : la taille des tableaux est fixe lors de la

compilation o Dans Java, taille fixe peut être précisée à l’exécution o Ensemble d’élément de même type accessible par leur rand, font

la taille est fixé à l’exécution.

• 2°)Nouveau type o T[ ] constitue un objet

• 3°) Déclaration o int[] tab ;

nom du tableau : tab

type de donnée : int

o int[] tab2 ;

nom du tableau tab2

Attention, cela ne créé pas l’objet.

• 4°) Allocation mémoire = création de l’objet o T[] tab = new T[taille];

int[] t = new int[10]

taille peut être soit un entier soit un attribu entier

types autorisés pour la taille : int short byte

• 5°) Attribut public o tab.length

.lenght : taille du tableau : défini le nombre de case du tableau ≠ du

nombre d’élément utils du tableau.

par exemple si seul trois cases sont utilisés sur 10, lenght renverra 10

et non 3.

tab.lenght attribut

tab.lenght() méthode qui existe dans la classe string

• 6°) accès o tab[indice]

indice est du même type

/!\ : première case : N°0

14

dernière case : N° (tab.lenght – 1)

Attention dans certain langages, en cas de dépassement

(ex :attribution d’une case du tableau hors de al taille du tableau)

Dans java, les indices des tableaux sont contrôlés. Si vous utilisé une

case hors tableaux, il renvoie une érreur avec la position éxacte.

o tab[0] représente la case désigné. Dans le cas d’un tableau

d’entier, tab[0] correspond à un entier.

tab[i] = tab[i-1] + tab[i+1] ;

• 7°) initialisation o int[] t={-2, 4, -3, 6, 0} ;

• 8°) Méthodes d’object o clone()

clone le tableau en deux tableau. Les valeurs sont recopiés

≠ ( t2 = t)

int[] t2= t.clone.() ;

o equals()

compare deux tableaux d’entier

attention si les case du tbaleau contient des lien vers des objetx

o tostring()

pas très intéressante pour les tableaux

• 9°) Méthodes de java.util.Arrays o Arrays.equal(t1, t2)

méthode statique : deux paramètres

même sur un tableau d’objet, elle va appeler equals sur chaque objet.

renvoie true ou false

o Arrays.tostring(tab)

permet d’afficher un tableau sous la forme [val1, val2,… ]

o Arrays.Fill(tab,val)

rempli un tableau avec une valeur

o binarySearch(tab,val)

permet de chercher une valeur val dans un tableau tab

retourn : le prof ne sais pas ( soit true false soit les indices où c’est

égaux

o sort(tab)

permet de trier le tableau

de base classe par un tableau croissant

15

• 10°) Caractères o Il est possible de faire des tableaux de caractères

String ≠ char[]

string s et tableau t s.length() et t.lenght

o pour construire une string a partir d’un tableau de caractère : String s = new String(t) ;

t est un tableau de caractères

o Au contraire : s.toCharArray() converti une chaine de

caractère s en tableau

ex : char[] t2 = s.toCharArray() ;

• 11°) Multidimensionnel o exemple : une image sur un écran est un tableau bidimensionnel

o ex : pour une séquence d’image couleur de 1 seconde il faut 5 dimensions

o Pour faire simple utilisons le tableau à deux dimensions. o pour cela on fait un tableau de tableaux o Notation : int[][] bidim = new int[3][2]

il s’agit d’un tableau de 3 fois deux cases.

tableau[ligne][colone]

o int[][] bidim = {{11,12},{21,22},{31,32}} ; o taille de la deuxième dimension : bidim.length[0]

renvoi 2

o Arrays.deepToString()

va chercher « en profondeur toutes les valeurs de dans toutes les

dimensions »

ex : "[[11,12],[21,22],[31,32]] »

o Arrays.deepEquals()

équivalent a Equals mais travail sur toutes les dimensions du tableau

II Collections • 1°) Framework

o Interfaces : ce sont des listes de méthodes abstraites qui définissent le contrat que devra remplir toute collection

Interface de plus haut niveau s’appelle Collection

16

Mais il existe des sous collection : List Set Queue

o Implémentations : implementation partielle

AbstractList AbstractSet

o Concrets : implementation totale o Algorithmes

• 2°) ne contient que des objets ! • 3°) Déclaration

o ArrayList<E> a = new ArrayList<E>();

E = Object ou Frame ou String ou Double

• 4°) Méthodes des collections o boolean add(E)

prend comme paramètre un élément de type E

retourne un bouléen -> retourne toujours vrai

o boolean contains(O)

O correspond à n’import quel objet

o boolean isEmpty()

vrai si la collection est vide

o boolean remove(O)

17

retire un objet de la collection

vide sans toucher la capacité

o int capacity()

nombre de case de la collection

o int size()

nombre d’objets effectivement dans la collection

différent que capacité

o ArrayList est extensible à l’infini. il est possible de faire des add à l’infini

o Arrays.asList(tab)

renvoie un tableau en une collection

o E[] toTray()

• 5°) Méthode d’ArrayList o E get(int)

c.get(Ø) t[Ø]

o void Set(int,E) o int indexOf(E)

retourn -1 si il ne le retrouve pas

sinon retourn l’index de l’objet

o E remoce(int)

supprime un élément à une certaine position

o void TrimToSize()

réduit la capacité à la size

TD 6 16/01/06 18:12

18

V Tableaux : traduire en Java • code

o public class Tableaux

{ public static void run() { int[] t1 ; int[] t2 ; t1 = saisirTableau(« premier ») ; afficheTableau(t1) ; t2 = saisirTableau(« second ») ; afficheTableau(t2) ; if tabEgal(t1, t2) s.o.p(« identiques ») ; else s.o.p(« différents ») ; } public static int[] saisirTableau(string qt) { int n ; int i ; S.O.P(« Taille du " + qt + " tableau ?") ; n = Integer.parseInt( JOptionPan.showInputDialog("entier numero " + i) ) ; int[] t = new t[n] ; int r ; for(i = 1 ; i <=n ;i++) { r = Integer.parseInt( JOptionPan.showInputDialog(« Element " + i + " : ") ) ; t[i - 1] = r ; } return t ; } public static void afficherTableau(int t) { String s ;

19

int i ; if (t != "") { s = t[0] ; } for (i=1 ; (t.length – 1)<=i ;i++) { s = s + ", " + t[i] ; } return s ; } public static tabEgal(int t1, int t2) { boolean r = true ; int i ; if(Arrays.equal(t1,t2) r = false ; else { i = 0 ; while((i < t1.length) && (r)) { if(t1[i] != t2[i]) r = false i++ ; } } return r ; } }

ECRIRE EN JAVA • MOYENNE

o version 1 public static int moyenne(double[] tab, int taille) { double moyenne ;

20

int i for(i = 1, i <= taille,i++) { moyenne = moyenne + tab[i] } return (moyenne / taille) ; }

o version 2 public static int moyenne(ArrayList tab) { double moyenne ; int i int taille = ArrayList.size(tab) ; for(i = 1, i <= taille,i++) { moyenne = moyenne + tab.get(i) ; } return (moyenne / taille) ; }

• Minimum o public double minimum(double[] tab, int taille)

{ sort(tab) ; return tab[0] ; }

• Matrice public class Matrice

{ private final int n = 20 ; public static void test() { double[][] mat = new mat[5][n] ; affMat(initMat(mat)) ; } public static double[][] iniMat(double[][] mat) {

21

for(int i=0 ;i<=n;i++) { mat[0][i] = java.lang.Math.pow(i,1/3);; mat[1][i] = java.lang.Math.pow(i,1/2); mat[2][i] = i; mat[3][i] = i * i; mat[4][i] = i * i * i; } return mat ; } public static void affMat(double[][] mat) { int i ; for(i=1 ;i<=n;i++) { /* system.out.println … */ } } }

QCM 6 16/01/06 18:12

22

QCM • question 1

o E)

• Question 3 o switch(expression)

{ case …. ; }

dans expression, on ne peut mettre que caractère ou que entier.

Dans case, on ne peut mettre que des variable nommée (ie des

constante). EX : 3, "A"

• Question 4 o Il est possible d’imbriquer des structures if o if(-)

if(--) instruction 1 ; else instruction 2 ; else instruction 3

• Question 6 o item B et E sont faux

• Question 8 o double[] tab = new double[expression] ;

on peut utiliser un expression de type int

• Question 12 o Une collection ne peut contenir que des objets !!!!! o Autoboxing et unboxing possibilité de convertir

automatiquement un type primitif en type objet et inversement.

Notion fondamentale

Par exemple dans la version 4 de palindrome, lors du clonage d’une

collection c1 vers c3 : avec des type objets et après clonage la

modification d’une valeur d’un objet modifiera son clone. Alors que

avec des type primitifs ça modifiera que la valeur clonée sans modifier

l’original.

o ArrayList<Integer> a ;

a = new ArrayList<Integer>() ;

• Question 13

23

for(element : collection)

{ element }

Exceptions 16/01/06 18:12

24

I EXCEPTIONS • 1°) Exemple

o public double get(int i)

{ return tab[i-1] ; }

il faut gérer le cas où le i est hors tableau : on peut mettre une

instruction if qui teste la tailler du tableau.

Plus simple que ça et plus pratique, on peut utiliser les exceptions qui

permette de gérer les erreurs : ce sont es exceptions.

• 2°) Def o exception : événement exceptionnel qui déroute le

fonctionnement du programme. o En java il s’agit d’un objet qui est une sous classe de la classe

Exception o Les exceptions peuvent être de type différent. ex : exception

arithmétique, exception d’entrée sortie, etc o On peut aussi créer ses propres exceptions adaptée à ses besoins

• 3°) Système de Gestion o Les principe est que l’on lance une exception lorsqu’un

événement survient. Une fois lancée, cette dernière prévoit de rattraper cette exception en la traitant.

o EXEMPLE :

25

• 4°) Avantages o Séparer

o propager o différencier/regrouper

• 5°) Hiérarchie o Différentes hiérarchisations des erreurs

o

• 6°) Traitement des exceptions lancées par le SDK o int n=Integer.parseInt(S) ;

Si S est "12" pas de problèmes

Si S est "douze", une exception est lancée

o NumberFormatException

Dans java doc, on peut consulter les exceptions qui peuvent être

lancée. Consulter la rubrique Throws de chaque méthodes

o Traitement des exceptions se fait avec l’utilisation d’un bloc try o try

{ Ξ Instructions à essayer

} catch(Exception e) { Ξ traitement de e

}

e est le nom que vous donner à l’objet du type exception

26

On peut mettre autant de catch que l’on souhaite pour traiter

différemment divers exceptions.

Attention : l’ordre des blocs catch compte : dans l’organigramme, il

faut d’abord traiter les élément les plus particulier, càd le plus profond

dans l’arbre (ici dans l’exemple c’est RunTimeException) au moins

particulière (ici c’est error puis throwable)

o Traitement partiel : permet de relancer l’exception afin de

remonter jusqu’à la méthode qui a appelé la méthode qui a généré l’exception throw e ;

o obligation (catch or specified) : on peut rajouter "throws" à la fin d’une signature

Sauf pour les RunTimeException

o Traitement des exceptions : il existe des cas où un morceau de traitement qui sont exécuté Et en traitement normal Et lors de l’exception. On peut spécifier des morceaux qui sont exécuté dans tous les cas :

o finally { "instruction finales toujours exécutées" ; }

• 7°) Lancer des exceptions ( existant dans le JDK) o Exemple au début d’une méthode vous avez un paramètre p. o if(p mauvais paramètre)

On peut lancer soit même une exception « manuellement ».

Or une exception est un objet il faut donc créer un objet de la classe

exception

o if(p mauvais paramètre)

throw new NumberFormatException("paramètre trop grand : " + p)

Il faut préciser « throws NumberFormatException » dans la signature

o < !> try{ if(!cond) throw new ClasseException() ; instruction1 ;} catch(ClasseException e){instruction 2 ;} <rigoureusement équivalent à > if(cond){instruction 1 ;} else {insctrution 2 ;}

27

o Règle importante Si la gestion de l’exception se fait dans la

même méthode, il faut la traiter avec des if/else. Les exceptions doivent être utilisé pour gérer une erreur avec une autre méthode.

• 8°) Créer ses propres exceptions o créer une classe Exception ou sous classe

Il faut d’abord vérifier dans java doc si il n’existe pas une déjà

existante pour le problème

Puis il faut voire si il n’y en a pas une qui s’en rapproche pour faire un

extends

Il ne faut pas hériter de RuntimeException

o redéfinir getMessage() return "explication" ; o Ajouter des attributs dans cette classe afin de mémoriser des

choses lors de l’exception un constructeur.

• 9°) Les assertions o Programmation par contrat

mise en oeuve par la notion d’assetion

o préconditions

vérifiée au début de la classe

o post-condition

vérifiée à la fin

o invariant

à tous moment

o Principe : assert condition : message ;

est équivalent à

if( !cond) throw new AssertionError(message) ;

o L’intérêt est de programmer de façon sûr. Par contre le code vas être plus long et le programme vas être plus lent

o Ainsi c’est utile lors du développement, car on peut activer ou non les vérification.

se définie lors de la compilation.

II Applications • intro

o une application est un programme java indépendant de bluJ.

peut être graphique ou non

28

o java Classe arg1 arg2 … argn (dans un terminal)

c’est une commande qui lance une machine virtuelle java et ça lance la

Classe passée en argument ça implique que Classe.class existe dans

le répertoire courant. il va automatiquement lancer la methode

main()

Dans une classe, pour qu’une méthode soit appelable de l’extérieur, il

faut que celle-ci soit public, static, void. Ainsi en java main doit être

static public et void et doit avoir en paramètre de quoi les argument 1

et 2 dans l’exemple : à savoir un tableau pour les arguments.

o public static void main(String[] arguments) {etc…

On peut ainsi se passer bluJ pour lancer un programme java.

La classe main étant statique il faut soit appeler des classes statiques

soit créer des objets.

Pour sortir du programme : return ; (car main est du type void

retourne rien du tout)

o javac [-ea]Classe.java (dans un terminal)

on peut passer comme argument –ea pour activer les assertions

o javadoc [-d:repertoire|-author|-version] *.java

on met en généralement *.java car on veut généralement générer une

doc sur tous les fichier java d’un projet par exemple.

On peut rajouter l’option –private pour faire une documentation pour le

développeur qui va afficher aussi les méthodes et attributs privés

On peut ajouter l’option –linksource pour lié la doc générée avec les

fichiers sources.

III APPLETTES • Intro

o Ensemble de classes java qui s’éxecutent automatiquement lors de la consultation d’une classe HTML indépendant de l’OS client. utilisable sur linux, Windows, mac os, etc.

o Il existe des restrictions de sécurité. Ainsi on ne peut pas accéder au disque dur depuis une applet.

o Les applets necessitent un fichier html pour s’exécuter. Il existe une commande qui s’appelle appletviewer qui va lancer un fichier html dans lequel il va lancer un applet.