Interface des classes

publicité
Au programme du jour ….

Ce que vous n’avez pas encore vu



Utilisation de l’API




Constantes et variables de classe
Main et Tests
Existence des packages
Existence d’une Javadoc
Comment écrire la Javadoc ?
Comment faire des packages
CONCLUSION : Livraison de code

Organisation des répertoires et packages
Ce que vous n’avez pas encore vu
Constantes et variables de classe
Main et Tests
Un nouveau mot clé : static

Information attachée à la classe et non à
une instance

Constantes



private static final int GRAVITY = 3;
public static final VAL_MAX=10;
Variables et méthodes de classes

Compteur : nombre d’instances
 Exemple du compte bancaire

CAS PARTICULIER : une méthode main
 Pour une classe de Test
Un Main pour les Tests
Exemple : Pour tester la classe ClasseATester
Ecrire le contenu du main dans une classe
TestDEClasseAtester (condition réelle de l’usage) de sorte
qu’il y ait :
Création d’instances de cette classe : (Tests des
constructeurs)
Affichage des instances créées (Tests des constructeurs et de la
méthode toString)
Appels des méthodes en faisant varier la valeur des paramètres
sur ces instances (Test des méthodes publiques)
Affichage des retours des méthodes pour voir les tests
Les commandes
public static void main(String[] args)
javac ClasseAtester.java
-> erreurs ou création du
fichier ClasseAtester.class
javac TestDEClasseAtester.java
-> erreurs ou création du
fichier TestDeClasseAtester.class
java TestDeClasseAtester
-> erreurs et/ou exécution du
code
ATTENTION A L’ORDRE DE COMPILATION
Utilisation de l’API
Existence des packages
Existence d’une Javadoc
API Java : à quoi ça vous sert ?
http://java.sun.com/j2se/1.5/docs/api/ :
Javadoc de l'API 1.5.
Rechercher des informations
et
Comprendre un code existant
API Java : Rechercher des informations

sur les types de données que l’on
manipule ou que l’on souhaite manipuler ?

ArrayList :




Peut on ajouter un élément à une position donnée ?
Peut on enlever à une position donnée ?
Qu’existe-t-il comme autre type de données du
même style ?
Comment construit on une ArrayList ? Avec un
tableau est ce possible ?
API Java : Comprendre un code existant
String input = reader.getInput();
if(input.startsWith("bye")) {
finished = true;
}
Que fait startsWith("bye") ?
Comment peut on trouver l’information ?
Que fait getInput()?
Comment peut on trouver l’information ?
Comment chercher dans l’API ?

Organisation par packages

Quels sont les packages que vous connaissez ?




java.util
java.lang
Où pouvez vous trouver la classe String ? La
classe ArrayList ?
Quels sont les packages qui pourront vous
servir ?
Pourquoi trouve-t-on l’information ?
Parce que les classes sont documentées
 Documentation standardisée avec
génération dans un format HTML
 Documentation accessible par un browser
web
 On documente : l’API des classes


Interface des classes : ensemble des méthodes
et variables publiques
Public vs private : accessible ou non à l’extérieur
de la classe
Documenter quoi ?

Interface vs implémentation


L’implémentation reste cachée
La documentation inclut :



Le nom de la classe
Une description textuelle générale de la classe
La liste des constructeurs et des méthodes publiques :
les signatures



Valeurs de retours et paramêtres
Description textuelle (pré_conditions, post conditions,
objectifs…)
L’ interface de la classe

UTILE pour son usage
Ce qui ne concerne pas l’usage

La partie Implémentation :



Les variables d’instances (statut private)
Les méthodes internes à la classes (statut private)
Le corps de chaque méthode et constructeurs (code
source)
Implémentation de la classe
Elle concerne les développeurs
Autre documentation : conception UML, etc
Comment écrire la Javadoc ?
Usage de votre code



Votre code est destiné à être utilisé
VOUS DEVEZ Documenter votre code
2 documentations :

à destination des usagers de la classe : ils ne doivent
pas connaître l’implémentation.



Livraison des .class
Et Documentation de l’interface de la classe : javadoc
à destination des développeurs qui doivent faire évoluer
votre code: ils doivent connaître l’implémentation.


Livraison des .java
Et Documentation de l’implémentation de la classe : UML,
cahier des charges, spécifications détaillées, commentaires
dans le code
Javadoc et classe

POUR UNE CLASSE

Class comment:
/**
* The Responder class represents a response
* generator object. It is used to generate an
* automatic response.
*
* @author Michael Kölling and David J. Barnes
* @version 1.0 (1.Feb.2002)
*/








JAVADOC et méthode













Commentaire pour une méthode
/**
* Read a line of text from standard input (the text
* terminal), and return it as a set of words.
*
* @param prompt A prompt to print to screen.
* @return A set of Strings, where each String is
* one of the words typed by the user
*/
public HashSet getInput(String prompt)
{
...
}
Comment générer la javadoc : page
HTML

javadoc ClasseATester.java
OPTION -help
 Donne en ligne les différentes options

Génération du fichier ClasseATester.html

pour en savoir plus

http://java.sun.com/j2se/javadoc/writingdoccommen
ts/
Comment faire et utiliser des
packages?
Comment travaille-t-on avec des
packages ?

Les classes d’un package (bibliothèque de classes) doivent
être importées (comme des livres que l’on emprunte…)

Utilisation de la clause import





Pour importer une seule classe : import java.util.ArrayList;
Pour importer toutes les classes d’un package : import java.util.*;
Importation inutile pour les classes de java.lang (tout le
monde a ces livres ).
Une fois importées les classes ont toutes la même visibilité
En cas de conflit, mettre le nom complet de la classe
java.util.ArrayList

Ex : la classe MaClasse existe dans 2 packages :
monnompackage et autrenompackage

On peut les distinguer à l’aide des noms complets :
monnompackage.MaClasse ou autrenompackage.MaClasse
Packaging de votre code

Implication dans chaque classe de cette
bibliothèque

package nompackage;
Instruction à ajouter au début des classes appartenant au
package

Implication sur l’organisation des fichiers

Mettre les classes compilées sous un répertoire de nom
nompackage

Compiler (placé au dessus du répertoire de nom
nompackage)
 javac nompackage/ClassePackagée.Java

Exécuter (placé au dessus du répertoire de nom
nompackage)
 java nompackage.ClassePackagee
Packaging de votre code et compilation
ATTENTION
A LA COMPILATION D’UNE CLASSE
Les classes utilisées doivent être déjà compilées et visibles
ORDRE de Compilation important
VISIBILITE importante
Désignation des répertoires où sont stockés les classes possibles
VARIABLE D’ENVIRONNEMENT : CLASSPATH
OPTION DE COMPILATION ET D’EXECUTION : -cp
AUTRE OPTION PRATIQUE -d
Packaging de votre code

Pour une meilleure livraison

Pour regrouper les classes utilisées dans le
même contexte
Téléchargement