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, . . . )