V. - Java, un langage professionnel

publicité
V. - Java, un langage professionnel
Gérald Monard
Chimie et Physique informatiques
L3 Physique et Chimie
static or not static
â Chaque fichier .java contient la définition d’une classe
â Dans la définition d’une classe, on trouve la définition de
méthodes. Ces définitions contiennent ou non le mot-clé static
dans leur signature.
1
2
3
4
5
6
7
8
public s t a t i c int add entiers ( )
{
...
}
p u b l i c double d i s t a n c e ( P o l a i r e P )
{
...
}
â Lorsque la signature de la méthode contient le mot static, on
parle de méthodes de classe (ou de méthodes statiques).
â Lorsque la signature ne contient pas le mot-clé static, on parle de
méthodes d’objet
méthodes de classe
â Une méthode de classe est rattachée à une classe (et non à un
objet).
â Elle est utilisée en préfixant le nom de la méthode par le nom de
la classe.
â Dans le cas où la méthode de classe est utilisée dans la classe
qui la définit, on peut omettre le préfixe (voir Chap. II).
1
2
3
4
5
6
7
8
9
10
/ ∗ methode de c l a s s e ∗ /
p u b l i c s t a t i c double d i s t a n c e 1 ( P o l a i r e P1 , P o l a i r e P2 )
{
/ ∗ d i s t a n c e e n t r e deux p o i n t s ∗ /
double d ;
double dx = P1 . x−P2 . x ;
double dy = P1 . y−P2 . y ;
d = Math . s q r t ( dx ∗ dx + dy ∗ dy ) ;
return d;
}
méthodes d’objet
â Une méthode d’objet est rattachée à un objet
â Elle est utilisée en préfixant au nom de la méthode le nom de
l’objet sur lequel elle s’applique.
1
2
3
4
5
6
7
8
9
10
/ ∗ methode d ’ o b j e t ∗ /
p u b l i c double d i s t a n c e 2 ( P o l a i r e P )
{
/ ∗ d i s t a n c e du p o i n t c o u r a n t au p o i n t P ∗ /
double d ;
double dx = t h i s . x−P . x ;
double dy = t h i s . y−P . y ;
d = Math . s q r t ( dx ∗ dx + dy ∗ dy ) ;
return d;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
p u b l i c c l a s s Main
{
p u b l i c s t a t i c v o i d main ( S t r i n g [ ] args )
{
Polaire point1 ;
Polaire point2 ;
double d ;
p o i n t 1 = new P o l a i r e ( 1 . , 0 . ) ;
p o i n t 2 = new P o l a i r e ( 2 . , 6 0 . ) ;
p o i n t 1 . a f f i c h e ( " point1 " ) ;
p o i n t 2 . a f f i c h e ( " point2 " ) ;
/ ∗ appel a une methode de c l a s s e ∗ /
d = Polaire . distance1 ( point1 , point2 ) ;
System . o u t . p r i n t l n ( d ) ;
/ ∗ appel a une methode d ’ o b j e t ∗ /
d = point1 . distance2 ( point2 ) ;
System . o u t . p r i n t l n ( d ) ;
}
}
Protection des données
â Java autorise la protection des données (classes, attributs ou
méthodes) grâce à des mot-clés contrôlant la modification ou
l’utilisation de celles-ci (= accessibilité ou encapsulation)
â Il existe trois mot-clés régissant l’accessibilité: public, private,
et protected
â Par défaut (= en l’absence de mot-clé), l’accès vaut protected
public l’élement (classe, méthode, attribut) est
visible/accessible de partout dans le programme
protected (défaut) l’élément n’est visible qu’aux classes du paquet
private il n’est pas possible d’accéder à l’élément en dehors de
la classe où il est défini.
Pour pouvoir manipuler un attribut private, il faut
passer par des accesseurs ou des mutateurs
accesseurs et mutateurs
â Lorsqu’un attribut est private, il n’est pas possible de lire son
contenu ou de le modifier direcement
accesseur: une méthode qui renvoie la valeur de l’attribut
mutateur: une méthode qui permet la modification de l’attribut
intérêts
â Masquage des données: l’utilisateur d’une classe n’a pas besoin
de connaı̂tre les détails de l’implémentation d’une classe
â Sécurité des données: l’utilisateur d’une classe ne peut pas
modifier le contenu interne de la classe
â Possibilité d’un contrôle préalable des modifications: avant de
modifier un attribut, on peut vérifier grâce à son mutateur que la
nouvelle valeur est valable (= dans le domaine de définition)
â Accesseur virtuelle: la méthode peut renvoyer une valeur qui ne
correspond pas réellement à un attribut de classe
Règles d’écriture (tacite) en Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
p u b l i c MaClasse
/ ∗ nom en ” chameau ” : chaque nom commence par
∗ 1 majuscule p u i s r e s t e minuscule
∗ ( noms c o l l e s sans espace n i s o u l i g n e )
∗/
{
private int a tt r ib u t ;
//
a t t r i b u t en minuscule e t p r i v a t e
p u b l i c i n t g e t A t t r i b u t ( ) / / accesseur de a t t r i b u t
{
}
p u b l i c v o i d s e t A t t r i b u t ( i n t a ) / / mutateur
{
}
p u b l i c v o i d a f f i c h e V a l e u r ( ) / / methode en chameau
/ / commencant par minuscule
{
}
}
Javadoc
â Java donne la possibilité de documenter directement dans le
code + javadoc
â Par ex., l’information fournit par NetBeans provient des javadocs
de l’implémentation officielle de Java par Sun.
â Un programme n’est pas complet s’il n’existe pas une
documentation qui lui est rattachée.
â But de la documentation:
3 fournit des informations générales sur le code (auteurs, numéro de
version, etc.)
3 indique comment utiliser les classes et les méthodes
3 explique les choix de programmation (algorithme utilisé)
Javadoc (suite)
â Javadoc est le créateur de documentation java.
â A partir d’informations incluses comme commentaires dans le
code Java, il génère des pages HTML lisibles dans un navigateur
Internetou par NetBeans.
â Format javadoc:
1
2
3
4
/ ∗ ∗ phrase ou paragraphe d e s c r i p t i f ( notez l e
∗ @tag1 d e s c r i p t i o n du ” t a g ”
∗ @tag2 d e s c r i p t i o n du ” t a g ”
∗/
’∗∗ ’)
â La documentation javadoc doı̂t être placé immédiatement avant
le morceau de code qu’il documente
Les ’tags’ javadoc
@author le nom de l’auteur de la classe (doc. de la classe
seulement)
@version texte le numéro de version de la classe (doc. de la
classe seulement)
@return texte ce que retourne la méthode
@param nom texte description du parametre nom
+ réécriture de la classe Polaire.
Conclusions
â Java est un langage de programmation moderne: orienté-objet
(classes, objets, etc.); interface de programmation (NetBeans);
professionnel (documentations, multiples outils, etc.)
â L3: apprentissage de la syntaxe Java,
â M1: interactivité simple avec Java: lecture de la ligne de
commande (String[] args); entrées-sorties du fichier; interface
graphique (I)
â M2: interactivité avancée: interface graphique (II); internet et
Java (applets, servlets, JSP, . . . )
Téléchargement