2i002 - Javadoc, débuggage... Vers plus d`autonomie

publicité
2i002 - Javadoc, débuggage... Vers plus
d’autonomie
Vincent Guigue
Vincent Guigue
2i002 - Autonomie
1/11
Les bons reflexes...
1
Lire les messages d’erreur dans la console
2
Savoir corriger les erreurs les plus courantes
3
Savoir chercher dans la documentation officielle JAVA...
4
... Et éventuellement documenter votre propre code
Vincent Guigue
2i002 - Autonomie
2/11
Compilation et exécution
Exemple d’instructions de compilation/exécution :
1
2
3
javac Point . java
j a v a c MainPoint . j a v a
j a v a MainPoint
◦ Les deux premières instructions concernent la compilation...
Même s’il n’y a pas de message d’erreur, il faut encore vérifier
le bon fonctionnement du programme !
◦ La troisième ligne exécute le code compilé
Vincent Guigue
2i002 - Autonomie
3/11
Compilateur, JVM et garbage collector
◦ Compilateur
- syntaxe ( ;, parenthèses, ...)
- vérifie le type des variables,
- l’existence des méthodes/attributs et les niveaux d’accès :
· les méthodes/attributs existent-elles dans l’objet,
· les accès sont-ils permis (public/private)
◦ JVM
- gestion dynamique des liens (cf redéfinition avec l’héritage)
- gestion des erreurs d’utilisation des objets
· problème d’instanciation,
· dépassement dans les tableaux,
· gestion des fichiers...
- garbage collector (cf cycle de vie des objets)
Vincent Guigue
2i002 - Autonomie
4/11
Erreurs usuelles à corriger soit même
Compilation (les plus faciles !) :
Toujours bien regarder la ligne de l’erreur (elle
est donnée). Trouver le raccourci de votre
éditeur permettant d’aller à la ligne fautive
Syntaxe
1
2
3
P o i n t p = new P o i n t ( 1 , 2 )
p . move ( 1 , 0 ) ;
// S y n t a x e r r o r , i n s e r t " ; " t o c o m p l e t e B l o c k S t a t e m e n t s
Il y a souvent plusieurs erreurs : toujours regarder la première, les
autres sont peut-être simplement des conséquences de la première
Vincent Guigue
2i002 - Autonomie
5/11
Erreurs usuelles à corriger soit même
Compilation (les plus faciles !) :
Toujours bien regarder la ligne de l’erreur (elle
est donnée). Trouver le raccourci de votre
éditeur permettant d’aller à la ligne fautive
Niveau d’accès
1
2
3
P o i n t p = new P o i n t ( 1 , 2 ) ;
p . x = 3;
// The f i e l d P o i n t . x i s n o t v i s i b l e
Il y a souvent plusieurs erreurs : toujours regarder la première, les
autres sont peut-être simplement des conséquences de la première
Vincent Guigue
2i002 - Autonomie
5/11
Erreurs usuelles à corriger soit même
Compilation (les plus faciles !) :
Toujours bien regarder la ligne de l’erreur (elle
est donnée). Trouver le raccourci de votre
éditeur permettant d’aller à la ligne fautive
Existence des méthodes
1
2
3
4
5
6
P o i n t p = new P o i n t ( 1 , 2 ) ;
p . mover ( 1 , 3 ) ;
// The method mover ( i n t , i n t ) i s u n d e f i n e d f o r t h e t y p e P o i n t
p . move ( 1 ,
2 , 3);
// The method move ( d o u b l e , d o u b l e ) i n t h e t y p e P o i n t i s
// n o t a p p l i c a b l e f o r t h e a r g u m e n t s ( i n t , i n t , i n t )
Il y a souvent plusieurs erreurs : toujours regarder la première, les
autres sont peut-être simplement des conséquences de la première
Vincent Guigue
2i002 - Autonomie
5/11
Erreurs usuelles à corriger soit même
Compilation (les plus faciles !) :
Toujours bien regarder la ligne de l’erreur (elle
est donnée). Trouver le raccourci de votre
éditeur permettant d’aller à la ligne fautive
Anticipation des erreurs de la JVM
1
2
3
Point p ;
p . move ( 1 , 0 ) ;
// The l o c a l v a r i a b l e p may n o t h a v e b e e n i n i t i a l i z e d
Il y a souvent plusieurs erreurs : toujours regarder la première, les
autres sont peut-être simplement des conséquences de la première
Vincent Guigue
2i002 - Autonomie
5/11
Erreurs usuelles à corriger soit même
Execution (JVM) : Toujours vérifier la ligne également
◦ NullPointerException
1
2
3
4
Point p = n u l l ;
p . move ( 1 , 0 ) ;
// E x c e p t i o n i n t h r e a d " main " j a v a . l a n g . N u l l P o i n t e r E x c e p t i o n
//
a t c o u r s 1 . T e s t P o i n t . main ( T e s t P o i n t . j a v a : 1 1 )
- Cette erreur arrive souvent dans des cas plus complexe de
composition d’objet
◦ IndexOutOfBoundException
1
2
3
4
5
i n t [ ] t a b = new i n t [ 3 ] ;
tab [ 3 ] = 2;
// E x c e p t i o n i n t h r e a d " main "
//
java . lang . ArrayIndexOutOfBoundsException : 3
//
a t c o u r s 1 . T e s t P o i n t . main ( T e s t P o i n t . j a v a : 1 1 )
- Vérifier la ligne + l’index !
- Souvent dans les boucle for
Vincent Guigue
2i002 - Autonomie
6/11
Documentation
Java est un langage très bien documenté et plein d’outils :
https://docs.oracle.com/javase/8/docs/api/index.html
Vincent Guigue
2i002 - Autonomie
7/11
Documentation
Java est un langage très bien documenté et plein d’outils :
https://docs.oracle.com/javase/8/docs/api/index.html
◦ Cas 1 : objet connu, usage inconnu
- Quels sont les constructeurs d’une ArrayList ?
- Comment faire un cosinus (en se doutant que c’est dans la
classe Math) ?
- ...
⇒ Chercher directement dans la classe au niveau de la javadoc
Vincent Guigue
2i002 - Autonomie
7/11
Documentation
Java est un langage très bien documenté et plein d’outils :
https://docs.oracle.com/javase/8/docs/api/index.html
◦ Cas 1 : objet connu, usage inconnu
- Quels sont les constructeurs d’une ArrayList ?
- Comment faire un cosinus (en se doutant que c’est dans la
classe Math) ?
- ...
◦ Cas 2 : recherche d’une fonctionnalité sans point
d’entrée
ex : Comment créer une image en JAVA ?
- Google...
· recherche d’un point d’entrée ⇒ BufferedImage ⇒ retour à
la javadoc
· recherche d’un tutoriel (idéalement officiel) :
https://docs.oracle.com/javase/tutorial/2d/images/
Vincent Guigue
2i002 - Autonomie
7/11
Documentation... Suite
De manière générale, on programme pour les autres...
⇒ documenter son code pour le rendre utilisable
1
premier niveau : choisir des noms de classes, méthodes et
variables explicites.
2
deuxième niveau : faire des classes et des méthodes courtes,
utiliser des méthodes privées... Eviter à tout prix les
copier-coller.
troisième niveau : ajouter des commentaires pour créer une
documentation.
3
- Outil intégré dans JAVA : commentaires spéciaux + création
automatique d’une page web
Vincent Guigue
2i002 - Autonomie
8/11
Création d’une documentation
1 /∗∗
2
∗ @author Vincent Guigue
3
∗ C e t t e c l a s s e p e r m e t de g é r e r d e s p o i n t s en 2D
4
∗/
5 p u b l i c c l a s s Point {
6
/∗∗
7
∗ A t t r i b u t s c o r r e s p o n d a n t a u x c o o r d o n n é e s du p o i n t
8
∗/
9
p r i v a t e double x , y ;
10
/∗∗
11
∗ C o n s t r u c t e u r s t a n d a r d à p a r t i r de 2 r é e l s
12
∗ @param x : a b s c i s s e du p o i n t
13
∗ @param y : c o o r d o n n é e du p o i n t
14
∗/
15
p u b l i c Point ( double x , double y ) {
16
this .x = x;
17
this .y = y;
18
}
19
/∗∗
20
∗ @ r e t u r n l ’ a b s c i s s e du p o i n t
21
∗/
22
p u b l i c d o u b l e getX ( ) {
23
return x ;
24
}
25 }
$ javadoc Point.java
Vincent Guigue
2i002 - Autonomie
9/11
Javadoc : quelques options utiles
◦ De manière générale : vérifier la documentation
$ javadoc -h
◦ Pour gérer les accents :
$ javadoc -encoding utf8 -docencoding utf8 -charset utf8 [fichier.java]
◦ Pour sélectionner le répertoire de stockage du html :
$ javadoc -d <directory> [fichier.java]
◦ Représentation public/private
(par défaut, représentation de la partie public seulement)
$ javadoc -public/-private [fichier.java]
Vincent Guigue
2i002 - Autonomie
10/11
Javadoc : résultats obtenus
◦ Classe Point, présentation conforme à la javadoc standard
(présence des liens hypertextes...)
Vincent Guigue
2i002 - Autonomie
11/11
Javadoc : résultats obtenus
◦ Classe Point, description des méthodes (entrées, sorties...)
Vincent Guigue
2i002 - Autonomie
11/11
Javadoc : résultats obtenus
◦ Classe Point, représentation privée
Vincent Guigue
2i002 - Autonomie
11/11
Téléchargement