Cours Programmation JAVA en PDF
Cours Programmation JAVA en PDF
Cours Programmation JAVA en PDF
Programmation JAVA
Programmation JAVA
Programmation JAVA
Programmation JAVA
Réf. Sun : Réf. Sun : Réf. Sun : Réf. Sun : Réf. Sun :
SL210 SL210 SL210 SL210 SL210
Révision : E-beta Révision : E-beta Révision : E-beta Révision : E-beta Révision : E-beta
Date : 24/12/99 Date : 24/12/99 Date : 24/12/99 Date : 24/12/99 Date : 24/12/99
Programmation JAVA
AVERTISSEMENT
Ce produit ou document est protégé par un copyright et distribué avec des licences qui en restreignent l’utilisation, la
copie, la distribution, et la décompilation. Aucune partie de ce produit ou de sa documentation associée ne peut être
reproduite sous aucune forme, par quelque moyen que ce soit, sans l’autorisation préalable et écrite de Sun et de ses
bailleurs de licence, s’il y en a.
Des parties de ce produit pourront être dérivées du système UNIX® licencié par Novell, Inc. et du système Berkeley 4.3
BSD licencié par l’Université de Californie. UNIX est une marque enregistrée aux Etats-Unis et dans d’autres pays et
licenciée exclusivement par X/Open Company Ltd. Le logiciel détenu par des tiers, et qui comprend la technologie
relative aux polices de caractères, est protégé par un copyright et licencié par des fournisseurs de Sun.
Sun, Sun Microsystems, le logo Sun, sont des marques déposées ou enregistrées de Sun Microsystems, Inc. aux Etats-Unis et
dans d’autres pays. Toutes les marques SPARC, utilisées sous licence, sont des marques déposées ou enregistrées de SPARC
International, Inc. aux Etats-Unis et dans d’autres pays. Les produits portant les marques SPARC sont basés sur une
architecture développée par Sun Microsystems, Inc.
Les interfaces d’utilisation graphique OPEN LOOK® et Sun™ ont été développées par Sun Microsystems, Inc. pour ses
utilisateurs et licenciés. Sun reconnaît les efforts de pionniers de Xerox pour la recherche et le développement du concept
des interfaces d’utilisation visuelle ou graphique pour l’industrie de l’informatique. Sun détient une licence non exclusive
de Xerox sur l’interface d’utilisation graphique Xerox, cette licence couvrant aussi les licenciés de Sun qui mettent en
place l’interface d’utilisation graphique OPEN LOOK et qui en outre se conforment aux licences écrites de Sun.
Le système X Window est un produit de X Consortium, Inc.
CETTE PUBLICATION EST FOURNIE “EN L’ETAT” SANS GARANTIE D’AUCUNE SORTE, NI EXPRESSE NI
IMPLICITE, Y COMPRIS, ET SANS QUE CETTE LISTE NE SOIT LIMITATIVE, DES GARANTIES CONCERNANT LA
VALEUR MARCHANDE, L’APTITUDE DES PRODUITS A RÉPONDRE A UNE UTILISATION PARTICULIERE, OU LE
FAIT QU’ILS NE SOIENT PAS CONTREFAISANTS DE PRODUITS DE TIERS.
Protections Juridiques 7
Intutilé Cours : Programmation JAVA
Copyright Sun Service Formation Révision : E-beta
Réf. Sun : SL210 Date : 24/12/99
Table des Matières
/9
Intitulé Cours: Programmation JAVA
Copyright Sun Service Formation Révision : E-beta
Réf. Sun : SL210 Date : 24/12/99
Mot-clef super pour l’invocation d’un constructeur ...........................................................106
Spécialisations courantes: toString, equals, clone ..............................................................107
packages..............................................................................................................................111
Organisation pratique des répertoires .................................................................................113
Déclaration de visibilité (import)........................................................................................115
Contrôles d’accès ................................................................................................................116
Modificateurs final..............................................................................................................117
Modificateur static (rappel).................................................................................................119
Applets ................................................................................................................................149
Applets: restrictions de sécurité ..........................................................................................151
Hiérarchie de la classe Applet.............................................................................................153
/10
Intitulé Cours: Programmation JAVA
Copyright Sun Service Formation Révision : E-beta
Réf. Sun : SL210 Date : 24/12/99
Applets: groupes de méthodes ............................................................................................154
H.T.M.L.: la balise Applet ..................................................................................................155
Méthodes du système graphique de bas niveau ..................................................................157
Méthodes d’accès aux ressources de l’environnement .......................................................159
Méthodes du cycle de vie....................................................................................................161
Les événements...................................................................................................................191
Modèle d’événements ........................................................................................................192
Catégories d’événements ....................................................................................................195
Tableau des interfaces de veille ..........................................................................................196
Evénements générés par les composants AWT ..................................................................197
Détails sur les mécanismes .................................................................................................198
Adaptateurs d’événements ..................................................................................................199
/11
Intitulé Cours: Programmation JAVA
Copyright Sun Service Formation Révision : E-beta
Réf. Sun : SL210 Date : 24/12/99
Classes et interfaces membres statiques .............................................................................207
Classes membres d’instance ...............................................................................................209
Classes dans un bloc ...........................................................................................................211
Classes anonymes ...............................................................................................................212
Récapitulation: architecture d’une déclaration de classe ....................................................213
java.lang ..............................................................................................................................217
java.util................................................................................................................................219
Internationalisation (i18n)...................................................................................................221
Numeriques divers ..............................................................................................................222
Interactions graphiques portables : AWT, SWING ............................................................223
Entrées/sorties .....................................................................................................................225
java.net ................................................................................................................................226
R.M.I ...................................................................................................................................227
J.D.B.C................................................................................................................................228
Beans...................................................................................................................................229
Button..................................................................................................................................233
Checkbox ............................................................................................................................234
CheckboxGroup ..................................................................................................................235
Choice .................................................................................................................................236
List ......................................................................................................................................237
Label ...................................................................................................................................238
TextField .............................................................................................................................239
TextArea .............................................................................................................................240
Frame ..................................................................................................................................241
Dialog..................................................................................................................................242
FileDialog ...........................................................................................................................243
Panel....................................................................................................................................244
ScrollPane ...........................................................................................................................245
Canvas.................................................................................................................................246
Menus..................................................................................................................................247
MenuBar .............................................................................................................................248
Menu ...................................................................................................................................249
MenuItem............................................................................................................................250
CheckboxMenuItem............................................................................................................251
PopupMenu .........................................................................................................................253
Contrôle des aspects visuels................................................................................................255
/12
Intitulé Cours: Programmation JAVA
Copyright Sun Service Formation Révision : E-beta
Réf. Sun : SL210 Date : 24/12/99
Impression...........................................................................................................................257
/13
Intitulé Cours: Programmation JAVA
Copyright Sun Service Formation Révision : E-beta
Réf. Sun : SL210 Date : 24/12/99
Présentation de Java 1
Points essentiels
Une introduction aux mécanismes fondamentaux de la technologie Java:
• La machine virtuelle
Une Applet est un programme qui s’exécute au sein d’une page HTML
Un tel programme est chargé dynamiquement par le navigateur qui
trouve sa référence dans le code HTML et qui demande le chargement de
ce code depuis le serveur HTTP.
navigateur HOTJAVA
(programme Java)
• Le serveur HTTP envoie le même code à tous ses clients, (il ne sait
pas s’il s’agit d’un PC, d’un macintosh, d’une station unix, etc.)
Le code exécutable Java est un code portable : il est capable de
s’exécuter sur des machines ayant des architectures et des
systèmes d’exploitation différents.
• ...
• Un environnement de développement
• Un environnement d’exécution
• Un environnement de déploiement
✏
Dans la suite de ce document chaque fois que nous utiliserons le mot
“Java” sans préciser le contexte on devra comprendre “langage de
programmation Java”.
Dans les pages qui suivent nous allons introduire les mécanismes de
fonctionnement de Java.
Ce qui est exécuté par une application autonome (ou par un navigateur
dans le cas d’une Applet) c’est un code binaire obtenu par compilation
d’un programme source.
JVM JVM
(interpréteur librairies (interpréteur librairies
spécifique) java spécifique) java
système de système de
OS fenêtrage OS fenêtrage
interprétation compilation
en back-up optimisée
• vérifie si une variable locale risque d’être utilisée avant d’avoir été
initialisée, vérifie si certaines variables (blank final) ne sont bien
initialisées qu’une et une seule fois,...
Les exceptions :
Dans le cas où le système d’exécution détecte une erreur au runtime, il
génère un objet particulier appelé exception. Cet objet contient des
informations sur l’incident et le système remonte la pile d’exécution à la
recherche d’un code spécifique chargé de traiter l’incident. Si un tel code
n’existe pas la machine virtuelle recherche une action par défaut (comme
l’affichage d’un message) avant de terminer la tâche concernée
La gestion de mémoire :
Dans de nombreux langages comme C/C++ la gestion dynamique des
objets en mémoire est une source constante de bugs très subtils et très
coûteux en maintenance. Les “fuites mémoire” peuvent passer au travers
des tests de validation et nécessitent des outils spécifiques de recherche et
de validation.
Cette gestion est facilitée par le fait que le programmeur n’a aucun moyen
d’accéder directement à la mémoire (pas de pointeurs).
Comme nous l’avons vu une classe constitue une unité de modularité qui
permet de regrouper un certain nombre de fonctionnalités. Le Kit de
développement logiciel Java 2 (SDK) offre un ensemble de classes
standard (les librairies “noyau”) qui implantent des services pour les
tâches courantes de programmation. Toute JVM doit avoir accès
localement à ces classes.
• ....
Bien que cela ne soit pas strictement obligatoire il est très vivement
conseillé de développer des classes Java comme faisant partie d’un
package. Dans ces conditions l’architecture générale d’un fichier source
Java se présente obligatoirement de la manière suivante (abstraction faite
des commentaires) :
Exercice * :
Exercice ** :
A ce stade vous aurez les plus grandes difficultés pour exécuter votre
programme. Pourquoi? Parceque l’exécuteur tente de faire correspondre
une hiérarchie de répertoires à la hiérarchie des packages. En d’autres
termes il s’attend à trouver les classes du package “chap1” dans un
répertoire de nom “chap1”.
Points essentiels
• Identificateurs, mots-clefs
• Types primitifs
• Types tableaux
• Conventions de codage
Les délimitations :
if (variable < 0) {
variable=0;// un commentaire est-il nécessaire?
}
✏
Les règles de description et de formatage de cette documentation, ainsi
que l’utilisation de l’outil javadoc se trouvent dans le document
./docs/tooldocs/javadoc/index.html (sous répertoire
d’installation du SDK JAVA 2)
if ( ix < iy ) {
ix = iy ;
} // plus aéré
Identificateurs valides:
• identificateur
• fenêtre
• nomUtilisateur
• MaClasse
• _var_sys
• $picsou
✏
Consulter en fin de chapitre les conventions usuelles de nommage. Eviter
autant que possible les caractères “$” dans les noms
✏
Les littéraux true, false et null sont en minuscules (et non en
majuscules comme en C++). Au sens strict il ne s’agit pas de mots-clés.
Le langage Java distingue les types scalaires primitifs des autres types
(objets). La déclaration d’un type scalaire primitif, comme boolean, int,
float, alloue un emplacement pour stocker une valeur du type
considéré.
{
int valeur ;
valeur = 6 ;
PILE 6
String nom;
nom = new String(“Dupond”) ;
Dupond
MEMOIRE (TAS)
Les valeurs logiques ont deux états : vrai ou faux. En Java une telle valeur
est représentée par une variable de type boolean. Deux littéraux
seulement peuvent être employés pour représenter une valeur booléenne :
true et false.
✏
Attention! Il n’y pas d’équivalences entre les types entiers (comme int) et
les booléens. Certains langages comme C ou C++ permettent d’interpréter
une expression numérique comme représentant une valeur logique
Ceci est interdit en langage Java: lorsqu’une expression booléenne est
requise, rien d’autre ne peut la remplacer.
Une valeur de type char représente un caractère UNICODE (16 bits, non
signé) qui permet de représenter des caractères très divers (langues
orientales, symboles).
Le type String n’est pas un type scalaire primitif mais un type prédéfini
représenté par une classe. Cette classe a la particularité d’avoir une
notation pour les constantes littérales :
String titre = ”MENU DU JOUR” ;
String platRecommandé = ”Rôti de b\u0153uf\t 10 \u20AC”;
// 10 Euros pour un Rôti de boeuf !
// chaînes dans le pool de constantes
✏
Attention: contrairement à C/C++ il n’y a pas de terminateur \0 en fin de
chaîne.
Il existe quatre types entiers dans le langage Java : byte, short, int, et
long.
Taille
Type Plage valeurs
implantation
Les expressions concernant des nombres entiers sont de type int sauf si
on précise explicitement une valeur long au moyen d’un suffixe “L”. Les
“L” minuscules et majuscules sont acceptés, mais il est préférable de ne
pas utiliser la minuscule qui peut être confondue avec le chiffre 1.
98L // valeur décimale de type long
32 bits float
64 bits double
Une expression littérale numérique est un flottant si elle contient un point, une
partie exponentielle (lettre E ou e) ou si elle est suivie de la lettre F ou D (f ou d).
3.14 //notation simple, valeur double -par défaut-
123.4E-300D // D redondant
2.718F // un float
✏
(Pour les spécialistes) Java reconnait valeurs infinies, zeros signés et NaN :
System.out.println(-1d/0d);
-Infinity
Après cette déclaration Java permet l’accès aux membres de l’objet ainsi
créé. Ceci se fait à l’aide de l’opérateur “.” :
quidam.salaire = 10000.f ;
quidam.age = 24 ;
quidam.nom = ”Dupond” ;
Individu quidam;
nom : null
age : 0
salaire : 0.F
quidam.nom = “Dupond”;
quidam.age = 24 ;
quidam.salaire = 10000.f ;
“Dupond”
nom :
age : 24
salaire:10000.f
✏
Les déclarations : char tChars[]; ou String tNoms[]; sont
possibles, on notera toutefois que le type ne précise pas le nombre
d’éléments du tableau.
Comme pour les autres objets ces déclarations ne créent pas d’instance, il
faut donc allouer ces objets (en précisant leur dimension):
tChars = new char[20] ; // le tableau existe
// avec 20 caractères ‘\0’
Ici l’allocation ne précise pas le nombre d’éléments qui est fixé par la
description littérale qui suit.
Individu[] candidats = {
new Individu() ,
new Individu(),
new Individu() ,
};
Color[] palette = {
Color.blue ,
Color.red ,
Color.white,
} ; // ces objets couleurs sont des constantes
✏
Une déclaration comme : new int[][3]; ne serait pas légale, par
contre une notation synthétique comme : new int[3][5];est possible.
Dans le langage Java, les indices des tableaux sont des entiers
commençant à zero (pas d’index négatif!).
Dans ce cas le premier tableau alloué est effectivement perdu (sauf s’il
existe une autre référence active qui le désigne).
✏
System.arraycopy() copie des références pas des objets lorsqu’on opère
sur des tableaux d’objets. Les objets eux-même ne changent pas.
//OBJETS
String nom ;
nom = ”roméo” ;
Individu roméo ; //déclaration
roméo = new Individu(); // allocation
roméo.nom = nom ; //initialisation
System.out.println(roméo.age) ; // 0 !
Individu juliette = new Individu() ;
Placez une instruction par ligne et utilisez une indentation pour que le
code soit plus lisible.
✏
voir
http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.
html. Pour les commentaires de documentation lire par exemple :“The
Design of Distributed Hyperlinked Programming Documentation.”
http://www.javasoft.com/doc/api_documentation.html
Points essentiels
• Notion de méthode
• Opérateurs
• Conversions
• Structures de contrôle
Méthodes de classe :
Exemple: pour calculer un sinus en Java on pourra faire appel à
double res = Math.sin(x)
Passage de paramètres
En Java les paramètres des méthodes sont toujours passés par valeur.
public void modificationIneffective (int val) {val = 55;}
“val” étant une copie d’une valeur dans le programme appelant cette
méthode n’aura aucun effet sur la valeur d’origine.
public void modificationSansEffet (Position pt) {
pt = new Position() ;// ne modifiera pas la ref originale
}
Dans les deux cas le paramètre est une copie d’une référence, la
modification de la référence n’aura aucun effet sur le programme
appelant, par contre une modification du contenu de la référence est
possible.
A quelques nuances près les opérateurs Java sont proches de ceux C/C++.
La table suivante liste les opérateurs de Java par ordre de préséance . Les indications
“G a D” et “D a G” donne le sens de l’associativité (Gauche à Droite et Droite à
Gauche)
Séparateur . [] () ; ,
D aG ++ -- + unaire - unaire ~ !
(transtypage)
GaD * / %
GaD + -
GaD << >> >>>
GaD < > <= >= instanceof
GaD == !=
GaD &
GaD ^
GaD |
GaD &&
GaD ||
D aG ?:
D aG = *= /= %= += -= <<=
>>= >>>= &= ^= |=
L’expression logique testée par le “if” est légale et, surtout, protégée
contre les incidents. En effet si la première partie de l’expression (unJour
!= null) est fausse, la seconde partie (unJour.numeroDansMois ..)
n’est pas évaluée -ce qui est une bonne chose étant donné que l’expression
déclencherait alors une erreur d’évaluation de la JVM (recherche de
contenu à partir d’une référence nulle)-.
En fait les bits sont décalés à droite et le bit de signe est conservé.
✏
Les opérandes droits sont évalués modulo 32 pour les opérandes gauches
de type int et modulo 64 pour ceux de type long. Ainsi :
int x; ... x >>>32 ; donnera une valeur inchangée pour x (et non
0 comme on pourrait s’y attendre).
L’opérateur >>> n’est effectif que sur des types int et long.
Le fait d’assigner une valeur d’un type donné à une variable d’un autre
type suppose une conversion. Dans certains cas, si les deux types sont
compatibles, Java effectuera la conversion automatiquement : par exemple
une valeur de type int peut toujours être affectée à une variable de type
long. Dans ce dernier cas on a une promotion : le type long étant plus
“grand” que le type int il n’y a pas de risque de perte d’information.
✏
Dans le cas d’expressions complexes il est vivement conseillé de mettre
l’ensemble de l’expression à convertir entre parenthèses pour éviter des
problèmes dus à la précédence de l’opérateur de transtypage.
Le type char demande également des précautions : bien qu’il soit
assimilable à un type numérique sa plage de valeurs va de 0 à 216 -1 alors
que la plage des valeurs de short va de -215 à 215 -1 une conversion
explicite est donc toujours nécessaire.
Exemple :
double salaire = employé.getSalaire();
if (salaire < PLAFOND ) {
salaire *= tauxAugmentation ;
} else {
salaire += petitePrime ;
}
// préférer les blocs dans tous les cas
if (x != 0) { //
✏
La partie else est optionnelle et peut être omise s’il n’y a pas d’action à
effectuer lorsque la condition est fausse.
✏
Le résultat de expression_choix doit pouvoir être affecté sans restriction à
un entier int. Les types byte, short ou char sont possibles (ainsi que
int!), par contre les types flottants, long ou les références d’objets ne
sont pas possibles.
switch (codecouleur) {
case 0: // permet d’avoir fond bleu et tracés rouges
fenêtre.setBackground(Color.blue) ;
case 1: // tracés rouges
fenêtre.setForeground(Color.red);
break;
case 2: // tracés verts seulement
fenêtre.setForeground(Color.green);
break;
default: // quoiqu’il arrive
fenêtre.setForeground(Color.black);
}
Bien entendu pour rentrer dans la boucle le test doit être vrai, par ailleurs
la valeur testée doit évoluer dans le corps de la boucle.
while (maPosition.estDansPremierQuadrant()) {
maPosition.posX -= 10 ;
maPosition.posY -= 10 ;
}
Exemple :
for (int incr= 1 ;
maPosition.estDansPremierQuadrant() ;
incr *= 2) {
maPosition.posX += incr ;
maPosition.posY += incr ;
}
✏
* Chacun des 3 arguments du for peut être vide (un test vide s’évalue à
true).
* Dans l’initialisation on peut déclarer des variables dont la portée est
celle de la boucle
* On peut utiliser le séparateur “,” dans l’initialisation ou dans les
opérations d’itération qui sont exécutées en bas de boucle.
Déroutements étiquetés
A l’intérieur d’un bloc de programme il est possible d’étiqueter une
boucle (par un label) pour servir de cible à une directive break ou
continue enfouie dans une des sous-structures -ceci permet d’éviter
l’emploi d’une directive goto qui n’existe pas en Java (bien que ce soit un
mot réservé)-
bye : while (true) {
for (int ix = 0; ix <tb.length; ix ++) {
int lu = System.in.read() ; //
switch (lu){
case -1 :
break bye ; //saut en dehors du while
case ’\n’ : case ’\r’ :
tb[ix] = ’|’;
continue ;
case ’\t’ :
tb[ix] = ’ ’;
break ;
default :
tb[ix] = lu
}
/* nota: toute etiquette dans un switch doit
* être “affectable” au type du sélecteur
*/
...; // du code
}
....; // encore du code !
}
variables locales
Une variable automatique est allouée sur la pile; elle est créée quand
l’exécution entre dans le bloc et sa valeur est abandonée quand on sort du
bloc. La portée de la variable (sa “visibilité”) est celle du bloc -et des sous-
blocs-
utilisation :
System.out.println(System.out); // bizarre mais essayez!
exemple de définition :
public class Contexte {
public static String nomOS =
System.getProperty(”os.name”) ;
Initialisations implicites
byte 0
short 0
int 0
long 0L
float 0.0F
double 0.0D
char '\u0000' (NULL)
boolean false
toutes références null
Exercice * (suite):
Exercice * :
Points essentiels
Introduction à la programmation Objet en Java:
• Classes et instances
• Encapsulation
• Constructeurs
• Référence this
Le langage Java permet une association plus étroite, ces “fonctions” sont
décrites dans le corps de la classe. De plus les méthodes d’instance sont
décrites de manière à opérer sur l’instance sur laquelle on les invoque.
public class UneDate {
public int jour, mois, année ;
...// autres champs
Utilisation:
UneDate ceJour = new UneDate() ;
...// initialisations
UneDate lendemain = ceJour.leLendemain() ;
Méthodes de classe
Selon un point de vue différent de celui des méthodes d’instance une
méthode de classe ressemble plus aux fonctions d’un langage de
programmation comme C.
public class UneDate {
....
public static UneDate lendemainDe(UneDate jour{
....
}
Utilisation:
UneDate lendemain = UneDate.lendemainDe(ceJour) ;
Utilisation:
UneDate jourCourant .....
.....
jourCourant.passeAuLendemain() ;
//”jourCourant” est modifié
//l’instance ne contient plus les mêmes valeurs
Le fait de forcer l’utilisateur d’une classe à passer par une vision abstraite
d’une classe permet de découpler l’utilisation et la réalisation et permet
même d’anticiper sur des évolutions possibles.
public class Client {
... //champs divers
private double solde ;
public double getSolde () {
return solde ;
}
public void setSolde(double valeur) {
// operations diverses
solde = valeur ;
}
Utilisation:
UneDate ceJour = new UneDate(1,1,2000) ;
✏
Un constructeur doit avoir exactement le même nom que sa classe.
Attention: ce n’est pas une méthode (pas de résultat par exemple) et, de
plus, on ne le considère pas comme un membre de la classe (comme le sont
les champs et les méthodes)
public UneDate() {
GregorianCalendar cl = new GregorianCalendar();
// contructeur met à la date du jour
jour = cl.get(GregorianCalendar.DAY_OF_MONTH) ;
.... // autres initialisations
}
}
Exemple:
System.out.println(”jour=” + new UneDate().getJour()) ;
Opérations d’initialisations
Il est possible de faire en sorte que certaines variables membres soient
initialisées au moment de la création de l’instance :
import java.math.BigDecimal ;
import java.util.ArrayList ;
// déclarations “import”
import zzz ;
import ppp.* ;
....
// MEMBRES d’INSTANCE
champs (avec initialisations éventuelles)
méthodes
...
// MEMBRES de CLASSE (static)
champs (avec initialisations éventuelles)
méthodes
// public static void main(String[] x): cas particulier
...
// CONSTRUCTEURS
constructeur(s)
}
Exercice * :
Exercice * (suite):
Exercice * (suite):
Points essentiels
Principes fondamentaux de la programmation Objet en Java (suite):
• Héritage
• Spécialisation de méthodes
• Polymorphisme
• Opérateur instanceof
Ainsi en supposant que l’on ait défini une classe “Adresse” on pourrait
définir:
public class Salarie{
private String nom;
private String id ; // clef
private Adresse adresse ;
private Salarie supérieurHiérarchique ;
...
public String toString() {
// permet d’afficher les informations contenues
}
// ACCESSEURS
public String getID() { return id;}
...
// Autres méthodes
public double coûtHoraire() {
....
}
}
Bien entendu on peut définir des méthodes d’instance qui utilisent des
méthodes des instances “contenues”.
Par exemple, dans l’exemple précédent, la définition de la méthode
toString() pourrait faire appel à une méthode toString() du champ
“adresse”.
Ici on constate que l’on est en train de reprendre les éléments principaux
de la classe “Salarié” pour les recopier dans cette nouvelle classe.
✏
Dans la documentation de l’API du SDK la description d’une classe ne
comprend que ces définitions spécifiques. Lorsqu’on recherche un certain
membre d’une classe il peut être nécessaire de rechercher sa description
parmi les ancêtres de la classe courante.
Les objets ont un type effectif, mais les variables qui les désignent sont
polymorphes: c’est à dire qu’elles peuvent être utilisées pour des objets
sous différentes formes (ayant éventuellement des types effectifs
différents). Il s’ensuit que le typage des variables a des conséquences
différenciées au run-time et au compile-time:
Evaluation dynamique:
Soit le programme :
for(int ix = 0; ix < équipe1.length; ix++){
System.out.println(équipe1[ix].toString());
}
Exemple:
for(int ix = 0; ix < équipe1.length; ix++){
System.out.println(équipe1[ix].getSubordonnés().length);
// ERREUR DE COMPILATION
}
✏
ATTENTION: le test ne donne pas forcément le type effectif de l’objet!
Ainsi dans l’exemple précédent l’expression “instanceof Salarie”
appliquée à un objet de type effectif Manager rendrait un résultat positif:
un Manager est un Salarié!
Notons que :
permet :
Executant exécutant = new Executant(new Manager());
✏
ATTENTION: le cas du constructeur par défaut (sans argument) conduit à
une situation particulière:
On sait que le fait de définir un constructeur avec arguments fait
disparaître ce constructeur implicite (sauf si on donne une définition
explicite du constructeur sans argument).
Or, lors de l’opération de construction d’une instance, les opérations de
construction des instances des classes mères doivent être successivement
appelées.
Si la classe mère a “perdu” son constructeur par défaut, le compilateur ne
nous permettra pas de disposer d’un constructeur par défaut pour la
classe courante.
Dans l’exemple courant il devient impossible d’invoquer:
new Manager(); // ERREUR COMPILATION
car on ne peut faire :
new Salarie(); // constructeur inexistant
✏
Ordre des évaluations au moment de la construction de l’instance (précise
les informations données au chapitre précédent):
** 1) allocation de l’instance
** 2) initialisations des super-classes (evt. au travers de super())
** 3) évaluations des initialisations explicites de variables membres
(l’ordre est important)
** 4) exécution du reste du code du constructeur.
on a en fait:
public class MaClasse extends Object {
...
On peut donc utiliser la classe Object chaque fois que l’on veut gérer des
collections c’est à dire des ensembles d’objets pour lesquels le type des
instances est générique:
Object[] tableauDeNimporteQuoi;//utilisé aussi par les collections
// du package java.util (par ex. ArrayList)
Par ailleurs toute classe hérite des méthodes de la classe Object (voir
documentation) et en particulier de:
Exercice ** :
poids jusqu’à 20g 50g 100g 250g 500g 1000g 2000g 3000g
tarifs 3,00FF 4,50FF 6,70FF 11,50FF 16,00FF 21,00FF 28,00FF 33,00FF
taux R1 R2 R3
prix suppl. 15,50FF 19,00FF 24,00FF
Points essentiels
La modularité en Java:
• Les paquetages
• Modificateur final
✏
De manière standard le package constitue l’élément de granularité des
versions de logiciel Java. Un programmeur utilisant les services d’un
package peut avoir besoin de connaître dynamiquement sa version (voir
classe java.lang.Package)
Lors d’une exécution locale les fichiers .class à exécuter par la J.V.M.
doivent se trouver dans une ressource. Cette ressource peut être un
répertoire ou une archive java (fichier .jar). Dans les deux cas le fichier
.class se trouve dans une hiérarchie correspondant à la hiérarchie des
packages.
✏
Voir également le mécanisme d’extension dans la documentation
docs/guide/extensions/extensions.html
Pour le développement :
src
fr
gibis classes
p1 p2 utils fr
gibis
C2.java Classe1.java
p1 p2 utils
C2.class Classe1.class
Pour utliser les services d’une classe dans un code on peut donner son
“vrai” nom:
new fr.gibis.utils.Chapeau(java.awt.Color.blue) ;
Sous-classe
Modificateur Même Classe Même Package Ailleurs
(hors pack.)
✏
L’accès protected permet en règle générale aux sous-classes situées
dans un autre package d’accéder au contenu de la classe courante.
Toutefois dans certains cas très particuliers cet accès n’est pas autorisé et
est refusé par le compilateur (voir JLS 6.6.2; ces détails sortent du
périmètre de ce cours).
variables partagées
Les variables liées à une classe (et non à une instance) sont marquées
static.
public class Contexte {
public static boolean surDoze =
System.getProperty(”os.name”).startsWith(“Win”);
...
}
// autre exemple
public class Client {
private static int compteur ; // variable de classe
public final int id = compteur++; // var d’instance
...
}
méthodes de classe
On a parfois besoin de créer du code qui n’est pas lié à l’état d’une
instance particulière. Dans ce cas on définit une méthode de classe
(marquée static). Exemples de méthodes de classe:
Math.sin(x) ...
Integer.parseInt(s) ...
System.getProperty(s)...
Points essentiels
Le traitement des erreurs en Java:
• Propager ou traiter?
f() P2 P3
code de message +
récupération fin de la
tâche P3
g() f()
h() g()
exception
incident (Throwable)
h()
runtime
incident exception
Soit le programme:
public class Addition{
public static void main (String[] args) {
int somme = 0 ;
for (int ix = 0 ; ix < args.length; ix++) {
somme += Integer.parseInt(args[ix]) ;
}
System.out.println(“somme=“ +somme);
}// main
}
✏
En standard sur le SDK java 2 les exécutions se font avec un compilateur
à la volée. Pour obtenir des informations sur les numéros de ligne des
méthodes dans la pile exécuter java avec une variable d’environnement ;
JAVA_COMPILER=NONE
Le résultat de l’exécution (ici 100 est écrit avec deux lettres ‘o’
majuscules):
java Addition 1 2 douze 1OO
java.lang.NumberFormatException: douze
java.lang.NumberFormatException: 1OO
AWTError
Throwable ArithmeticException
RuntimeException NullPointerException
IndexOutOfBoundsException
Exception
EOFException
IOException
FileNotFoundException
• RuntimeException :
• exceptions contrôlées:
• java.beans.PropertyVetoException: la modification
d’une propriété est refusée par une instance chargée de donner
son avis.
• ...
Un autre exemple:
public class ExceptionSauvegarde extends java.io.IOException {
public Exception detail;
Exemple :
if (totalHoraire > TOTAL_HORAIRE_MAX) {
throw new ExceptionAffectationHoraire(
“dépassement maximum légal “ ,
exécutantCourant, tâcheCourante) ;
}
Autre Exemple:
import java.io.* ;
....
try {
....
} catch (IOException exc) {
.... // code éventuel
throw new ExceptionSauvegarde(
opérationCourante + “ non réalisée” , exc) ;
}
fin transaction
Un bloc finally accolé à un bloc try englobe du code qui sera toujours
exécuté quelque soit la façon dont on sort du bloc try : exception, return,
déroutement étiqueté, ... (sauf si on invoque System.exit(...)).
try {
... //ouverture transaction
...// exécution de code
...
} finally {
/* fermeture transaction (code compatible avec un
* échec de l’ouverture !)
*/
Pour encourager l’écriture de code robuste le langage Java exige que pour
tout emploi de code susceptible de lever une Exception qui ne soit pas
une erreur d’exécution liée au run-time (classes Error et classes
RuntimeException), il soit garanti qu’il y ait du code de traitement
récupérant ces exceptions.
De cette manière tout code utlisant la méthode saura qu’il doit à son tour
traiter ou propager les exceptions impliquées.
Ce programme liste les fichiers contenus dans les répertoires dont les
noms sont passés dans les paramètres d’appel.
Pour réaliser ce programme pensez à définir une classe que vous pourrez
réutiliser à d’autres occasions.
Points essentiels
Java dispose d’un modèle d’entrée/sortie portable entre plate-formes:
• Certains autres sont des filtres c’est à dire des flots qui
transforment la manière dont opère l’entrée/sortie.
• des flots qui diffèrent par la manière dont ils opèrent ces
lectures/écritures. On pourra, par exemple, avoir des lectures qui
opèrent avec bufferisation, compression, cryptage, traduction de
types de données, etc..
Ces flots sont appelés des filtres (filter) et peuvent être combinés
entre eux pour lire/écrire de/vers des ressources (node streams).
java.io.OutputStream
void write(int octet) throws IOException
// écriture d’un byte passé comme int
// + autres write(...) de bas niveau
java.io.Writer
void write(int carac) throws IOException
// écriture d’un caractère passé comme int
// + autres write(...) de bas niveau
// dont write(string s)
FileReader
fichiers FileInputStream
InputStreamReader
java.lang.Process getInputStream()
flots fabriqués par d’autres java.net.Socket getInputStream()
classes java.net.URL openStream()
...
Il existe également des constructeurs pour ces deux classes dans lesquels
on ne précise pas le mode de codage: c’est le mode de codage de la plate-
forme locale qui est pris par défaut.
Les filtres sont des dispositifs qui transforment la manière dont un flot
opère: bufferisation, conversion des octets en données Java, compressions,
etc.
• Les filtres sont des flots dont les constructeurs utilisent toujours un
autre flot:
public BufferedInputStream(InputStream in) ...
public DataInputStream(InputStream in)...
InputStream/OutputStream
• Buffered* : la bufferisation permet de réaliser des E/S plus
efficaces (en particulier sur le réseau).
Reader/Writer
• Buffered* : bufferisation pour des caractères. Permet de lire un
texte ligne à ligne.
Il vous est donné le code d’une Classe. Cette classe représente le "moteur"
d’une calculette en notation polonaise inverse.
/**
* code d’une calculette en notation polonaise inverse
* <P>
* L’interface (ses méthodes publiques)
opère sur des chaînes de caractères
les calculs internes se font sur des flottants
<P> attention aux exceptions runtime
*/
/**
* depile et rend un représentation chaîne de l’objet dépilé
*/
public String popAsString() {
return stack.pop().toString() ;
}
/**
* rend un représentation chaîne de l’objet sur sommet de la pile
*/
public String peekAsString() {
return stack.peek().toString() ;
}
/**
* empile un objet correspondant à sa description par la chaîne
*/
public void pushAsString(String str) {
stack.push( new Double(str)) ;
}
/**
* depile tout!
*/
public void clear() {
stack.clear() ;
}
switch(opChar) {
case ‘+’ :
res = new
Double(arg1.doubleValue() + arg2.doubleValue()) ;
break;
case ‘-’ :
res = new
Double(arg1.doubleValue() - arg2.doubleValue()) ;
break;
case ‘*’ :
res = new
Double(arg1.doubleValue() * arg2.doubleValue()) ;
break;
case ‘/’ :
res = new
Double(arg1.doubleValue() / arg2.doubleValue()) ;
break;
}
if (res != null) {
stack.push(res) ;
}
return res == null? ““ : res.toString() ;
}
Points essentiels
• Les codes qui s’exécutent au sein d’une Applet sont soumis à des
restrictions de sécurité.
Une Appliquette (Applet) est une portion de code Java qui s’exécute dans
l’environnement d’un navigateur au sein d’une page HTML. Elle diffère
d’une application par son mode de lancement et son contexte d’exécution.
<HTML>
fichier HTML: :
2. charge un document HTML.
<APPLET CODE = ...>
</APPLET>
Navigateur
Location: http://unserveur/page.html
Loading...
<APPLET code=”fr.gibis.applets.MonApplet.class”
width=100 height=100>
</APPLET>
Bien entendu un code d’Applet ne peut pas contenir de code “natif” (par
essence non portable).
✏
Le modèle de sécurité Java 2 s’applique dès qu’un SecurityManager est
présent et ce aussi bien pour du code téléchargé que pour du code local
Une Applet étant un Container graphique, elle hérite des méthodes qui
permettent de disposer des composants graphiques dans la zone gérée
par la classe. Ce point sera vu dans des chapitres ultérieurs, et, pour
l’instant, nous allons nous attacher à trois groupes de méthodes:
Exemple :
<APPLET
code=fr.acme.MonApplet.class
width=300 height=400
>
</APPLET>
✏
Les arguments numériques de la méthode drawString() sont les
coordonnées x et y du début du texte. Ces coordonnées font référence à la
“ligne de base” de la police. Mettre la coordonnée y à zero aurait fait
disparaître la majeure partie du texte en haut de l’affichage (à l’exception
des parties descendantes des lettres comme “p”, “q” etc.)
En utilisant une de ces URLs comme point de base on peut demander des
ressources comme des images ou des sons :
✏
Les désignations de ressource par rapport à une URL de base peuvent
comprendre des cheminoms relatifs (par ex: “../../images/truc.gif”).
Attention toutefois : certaines configurations n’autorisent pas des
remontées dans la hiérarchie des répertoires.
Le moteur son de la plateforme Java2 sait traiter des fichiers .wav, .aiff et
.au ainsi que des ressources MIDI. Une nouvelle méthode
newAudioClip(URL) permet de charger un AudioClip.
✏
Les méthodes de chargement de media comme getImage() sont des
méthodes asynchrones. On revient de l’appel de la méthode alors que le
chargement est en cours (et, possiblement, non terminé). Il est possible
que paint() soit appelé plusieurs fois au fur et à mesure que l’image
devient complètement disponible.
La méthode start() est appelée pour indiquer que l’applet doit être
"activée". Cette situation se produit au démarrage de l’applet, une fois la
méthode init() terminée. Elle se produit également lorsque le
navigateur est restauré après avoir été iconisé ou lorsque la page qui
l’héberge redevient la page courante du navigateur. Cela signifie que
l’applet peut utiliser cette méthode pour effectuer des tâches comme
démarrer une animation ou jouer des sons.
public void start() {
musicClip.play();
}
Les méthodes start() et stop() forment en fait une paire, de sorte que
start() peut servir à déclencher un comportement dans l’applet et
stop() à désactiver ce comportement.
destroy() : Cette méthode est appelée avant que l’objet applet ne soit
détruit c.a.d enlevé du cache du navigateur.
import java.awt.Graphics;
import java.applet.*;
En règle générale une Applet est exécutée au sein d’un navigateur comme
Netscape Navigator. Néanmoins pour simplifier et accélérer le
développement votre SDK est fourni avec un outil simple conçu pour ne
visualiser que les Applets.
Points essentiels
La manière dont cette portabilité est assurée doit être mentionnée: pour
un composant graphique comme Button, il existe dans la librairie locale
de la JVM une classe de correspondance (peer class) qui s’appuie sur les
caractéristiques du système de fenêtrage local. Ainsi quand on utilisera un
Button Java on obtiendra un bouton Motif sous Motif, un bouton
Windows sous Win*, un bouton Mac sur Apple, etc. Une implantation
locale de la classe Toolkit assure la liaison entre les composants Java et
les composants “natifs”.
Exemple d’utilisation:
import java.awt.* ;
protected Component[] tb ;
redimensionnement
de la fenêtre
Exemple d’utilisation:
import java.awt.* ;
public BorderTest() {
// initialisations
fen = new Frame("BorderLayout") ;
nord = new Button("Froid") ;
sud = new Button("Chaud") ;
est = new Button("Terre") ;
ouest = new Button("Mer") ;
centre = new Button("Canton") ;
// dispositions
fen.add(nord, BorderLayout.NORTH) ;
fen.add(sud, BorderLayout.SOUTH) ;
fen.add(est, BorderLayout.EAST) ;
fen.add(ouest, BorderLayout.WEST) ;
fen.add(centre, BorderLayout.CENTER) ;
}
redimensionnement
de la fenêtre
• Les add sont qualifiés: il faut préciser dans quelle zone on met le
composant (par défaut un add simple met le composant dans la
zone centrale).
Exemple d’utilisation:
import java.awt.* ;
redimensionnement
de la fenêtre
• On utilise ici un add non qualifié: l’ordre des appels est important
pour déterminer la position dans la grille.
On notera, par ailleurs, que, dans l’exemple, la disposition s’est faite dans
un Panel qui a été lui même ajouté à un Frame. Comme le gestionnaire
de Frame est un BorderLayout et qu’on a utilisé un add non qualifié, le
Panel occupe toute la zone centrale et fait office de “fond” sur la fenêtre
principale.
Points essentiels
Notions avancés de programmation Objet en Java: les types abstraits
• Interfaces
Nous avons vu qu’un type “objet” de Java pouvait être considéré comme
un “contrat”. Lorsqu’une référence est déclarée on s’intéresse à un
ensemble de propriétés de l’objet désigné, mais pas nécessairement à
toutes les propriétés effectives de l’objet. Ainsi il n’est pas choquant
d’écrire:
Reader ir = new InputStreamReader(fis,"ISO8859_1") ;
• des types définis par ce qu’il font et non par ce qu’il sont.
• des types tels que le “contrat” de type puisse être réalisé par des
objets n’ayant aucune relation de parenté (c’est dire des objets qui
appartiennent à des hiérarchies d’héritage différentes).
Selon les clients ces dispositifs peuvent être: un simple courrier, un fax, ou
un courrier électronique. On aura donc un service qui pourra être rendu
par des objets de nature très différente. Et pourtant le “service” est le
même partout, on a besoin d’un objet qui sache répondre au “contrat”
décrit par :
public void envoiMessage(String message)
•
public class Fax extends Telephone implements Messager {
public void envoiMessage(String message) {
...
•
public class EMail extends AgentReseau implements Messager {
public void envoiMessage(String message) {
...
•
public class Courrier extends Imprime implements Messager {
public void envoiMessage(String message) {
...
Une interface est un type qui se déclare d’une manière analogue à une
classe:
• Une interface publique par fichier source. Une interface fait partie
d’un package.
Exemple:
package fr.gibi.util ;
Autre Exemple :
public static void envoiEtArchivage(
String message,
Messager messager) {
....
}
...
Utils.envoiEtArchivage(“Tout va très bien!”, faxCourant) ;
accès/ réseau
.
IHM
Base de Données
requêtes texte
serveur intermédiaire
R
U
RVE
SE
CE
R FA pseudo-base (tests)
T E
IN
Dans cet exemple le service défini par “interface serveur” peut être rendu
par un programme simulant le comportement d’une base de données
(important pour les tests de la partie “cliente” du service) puis par une
vraie base ou par un serveur intermédiaire (dans une architecture à trois
parties).
Supposons maintenant que l’on veuille obtenir tous les objets d’une
collection sans s’intéresser à la réalisation effective de cette collection. On
demandera alors à la collection de nous fournir un itérateur de type
Iterator :
Iterator iter = maCollection.iterator() ;
while(iter.hasNext()){
System.out.println(iter.next());
}
Bien qu’on ne puisse créer d’instance dont le type effectif soit une classe
abstraite on peut utiliser une classe abstraite pour typer une référence:
public class MonApplet extends Applet {
Figure[] tbFig = { new UnOvale(0,0, 12, 12),
new UnLosange(20,40,33,33),
...
} ;
....
public void paint(Graphics gr) {
...
for (int ix = 0 ; ix <tbFig.length ; ix++) {
tbFig[ix].paint(gr) ;
}
}
}
Dans le cadre des exercices sur les entrées/sorties on a utilisé une classe
utilisant une pile de Double et pouvant être utilisée comme "moteur de
calculette en notation polonaise inverse" et on avait mis en place un
testeur pour cette classe.
Points essentiels
Le traitement des événements permet d’associer des comportements à des
présentations AWT :
Sources d’événements
Un événement (au niveau de l’interface utilisateur) est le résultat d’une
action utilisateur sur un composant AWT source. A titre d’exemple, un
clic de la souris sur un composant bouton génère un ActionEvent.
L’ActionEvent est un objet contenant des informations sur le statut de
l’événement par exemple:
Handlers d’événements
Un “handler” d’événement est une méthode qui reçoit un objet Event ,
l’analyse et traite l’interaction utilisateur.
action
Applet
Panel
instance de veilleur
génération ActionEvent
Les événements sont des objets qui ne sont envoyés qu’aux veilleurs
enregistrés. A chaque type d’événement est associé une interface d’écoute
correspondante.
Pour chaque catégorie d’événements, il existe une interface qui doit être
“implémentée” par toute classe souhaitant recevoir ces événements. Cette
interface exige qu’une ou plusieurs méthodes soient définies dans les
classes de réalisation. Ces méthodes sont appelées lorsque des
événements particuliers surviennent. Le tableau de la page suivante liste
les catégories et indique le nom de l’interface correspondante ainsi que les
méthodes associées. Les noms de méthodes sont des mnémoniques
indiquant les conditions générant l’appel de la méthode
java.util.EventObject
java.awt.AWTEvent
java.beans.beancontext
BeanContextEvent
...
On remarquera qu’il existe des événements de bas niveau (une touche est
pressée, on clique la souris) et des événements abstraits de haut niveau
(Action = sur un bouton on a cliqué, sur un TextField on a fait un <retour
chariot>, ...)
Action
adjust.
Composant AWT compnt cont focs item key mse mtn text win
Button ● ● ● ● ● ●
Canvas ● ● ● ● ●
Checkbox ● ● ● ● ● ●
CheckboxMenuItem ●
Choice ● ● ● ● ● ●
Component ● ● ● ● ●
Container ● ● ● ● ● ●
Dialog ● ● ● ● ● ● ●
Frame ● ● ● ● ● ● ●
Label ● ● ● ● ●
List ● ● ● ● ● ● ●
MenuItem ●
Panel ● ● ● ● ● ●
Scrollbar ● ● ● ● ● ●
ScrollPane ● ● ● ● ● ●
TextArea ● ● ● ● ● ●
TextComponent ● ● ● ● ● ●
TextField ● ● ● ● ● ● ●
Window ● ● ● ● ● ● ●
Récepteurs multiples
La structure d’écoute des événements AWT permet actuellement
d’associer plusieurs veilleurs au même composant. En général, si on veut
écrire un programme qui effectue plusieurs actions basées sur un même
événement, il est préférable de coder ce comportement dans la méthode
de traitement.
✏
L’ordre d’appel des méthodes de traitement n’est pas défini. En général, si
cet ordre a une importance, les méthodes de traitement ne sont pas liées et
on ne doit pas utiliser cette fonction pour les appeler. Au lieu de cela, il
faut enregistrer simplement le premier écouteur et faire en sorte qu’il
appelle directement les autres. C’est ce qu’on appelle un multiplexeur
d’événements
• mouseClicked (MouseEvent)
• mouseEntered (MouseEvent)
• mouseExited (MouseEvent)
• mousePressed (MouseEvent)
• mouseReleased(MouseEvent)
Pour des raisons pratiques, Java fournit une classe d’adaptateurs pour
pratiquement chaque interface de veille, cette classe implante l’interface
appropriée, mais ne définit pas les actions associées à chaque méthode.
De cette façon, la routine d’écoute que l’on définit peut hériter de la classe
d’adaptateurs et ne surcharger que des méthodes choisies.
Par exemple :
import java.awt.*;
import.awt.event.*;
✏
Attention à la spécialisation de méthodes: une déclaration comme
public void mouseclicked(MouseEvent evt)
est légale et crée simplement une nouvelle méthode par contre le veilleur
construit ne réagira pas au moment de la mise en oeuvre.
Points essentiels
Aspects avancés de la programmation en Java: définition de classes “à
l’intérieur” d’une autre classe.
frame.add(txt,BorderLayout.SOUTH) ;
.....
}// constructeur
L’objectif est ici d’avoir une zone centrale (dans un BorderLayout) dans
laquelle on puisse suivre le déplacement d’une souris qu’on “tire”. Un
message informatif doit être affiché dans un autre composant (“txt”).
Dans un cas on crée une classe générale ad hoc pour répondre à un besoin
très particulier. Dans l’autre cas on a un code bavard qui peut, en plus,
devenir extraordinairement compliqué s’il faut gérer différents suivis de
souris en fonction des composants sur lesquels on “tire”.
frame.add(txt,BorderLayout.SOUTH) ;
frame.addMouseMotionListener( new MouseMotionAdapter() {
public void mouseDragged(MouseEvent evt) {
txt.setText("On tire en x=" + evt.getX()
+ " y=" + evt.getY()) ;
}
});
}// constructeur
On a ici utilisé une classe locale anonyme pour répondre à des besoins
très locaux.
Analysons le code :
Ici on a une classe interne liée à une instance. Depuis une autre classe la
classe interne est de type MyFrame.ButtonListener. Par contre un
constructeur de ButtonListener a besoin d’une instance de MyFrame.
Ainsi , par exemple, depuis le “main”(statique) de MyFrame:
MyFrame fen = new MyFrame() ;
MyFrame.ButtonListener bl = fen.new ButtonListener();
Une telle classe peut accéder soit à des variables d’instance, soit à des
variables locales (ou des paramètres de la méthode).
public class MyFrame extends Frame {
protected TexField messager = new TextField(30) ;
....
public Button createButton(String nom,final String mess){
Button res = new Button(nom) ;
class BListener implements ActionListener{
public void
actionPerformed(ActionEvent evt) {
messager.setText(mess) ;
}
}
Blistener list = new BListener() ;
...
res.addActionListener(list) ;
return res;
}
...
}
new ActionListener(){...}
class XX {
// ordre indifférent sauf pour les expressions
// d’initialisation de premier niveau
//MEMBRES STATIQUES
variables statiques
var. statiques initialisées
constantes de classe
méthodes statiques
classes ou interfaces statiques
//MEMBRES D’INSTANCE
variables d’instance
var.d’instance initialisées
var d’instance “blank final”
méthodes d’instance
“patrons” de méthodes d’instance (abstract,...)
classes d’instance
classes avec accès instance englobante
// CONSTRUCTEURS
constructeurs
Points essentiels
• Les “packages” standard constituent les librairies qui doivent
accompagner toute JVM.
• services communs
• entrée/sorties,
• accès réseau
• sécurité
• internationalisation
• composants beans
Classes d’encapsulation
Dans certaines situations (collections d’objets, paramètres génériques,...)
on ne peut pas utiliser une valeur primitive scalaire mais on peut utiliser
une instance d’une classe d’encapsulation (Integer, Float,
Character, etc.)
StringBuffer
Les objets de type String étant également immuables il peut être
préférable, lorsqu’on doit faire des opérations de transformation de chaîne
de caractères, d’utiliser des objets StringBuffer.
StringBuffer buf = new StringBuffer("Nacho");
buf.insert(2,"bu").append(new
StringBuffer("sonid").reverse()).append("aure ").append(6) ;
String res = buf.toString() ;
• “patterns” : Observer/Observable
• .....
Modèle Observer/Observable
(2)
Observer
notification
Observable
37.2
Observer
(1)
événement
37.5
• java.math.BigInteger:
permet de réaliser des opérations sur des entiers de taille illimitée
• java.math.BigDecimal:
permet de réaliser des calculs avec des nombres décimaux. La
taille des nombres n’est pas limitée et on peut spécifier la précision
et la manière de réaliser des arrondis. Convient bien pour
représenter des valeurs financières.
• java.util.Random:
permet de générer des séries de nombres aléatoires.
• AWT de base :
JLabel
JOptionPane
JButton
JSlider
JScrollPane JToolTip
La librairie permet de réaliser des échanges entre des sites distant sur le
réseau.
SERVEUR
port
CLIENT
demand
e de con
nexion
Flots E/S
SOCKET
rmiregistry
Le serveur crée une instance
et l’enregistre auprès du “registry”
enregistrement (bind)
rmiregistry
client
interface F
talon (stub)
échanges réseau
Le package java.sql
Définit essentiellement des interfaces d’accès à des bases de données SQL.
Des produits spécifiques (hors JDK) sont chargés d’implanter ces
interfaces (drivers JDBC).
APPLICATION JAVA
JDBC (java.sql)
S.G.B.D. A S.G.B.D. B
JAVA STUDIO
un ex. de “bean builder”
assemblage
résultant
Contenu
Cette annexe donne un aperçu sur les composants AWT courants et sur
leur manipulation.
✏
Pour des besoins de repérage programmatique une chaîne symbolique
peut-être rattachée à tout composant pour l’identifier: utiliser setName()
et getName().
On peut créer des cases à cocher à l’aide d’un constructeur spécial qui
utilise un argument supplémentaire de type CheckboxGroup. Si on
procéde ainsi, l’aspect des cases à cocher est modifié et toutes les cases à
cocher liées au même groupe adoptent un comportement de "bouton
radio".
CheckboxGroup cbg = new CheckboxGroup();
Checkbox one = new Checkbox("One", cbg, false);
Checkbox two = new Checkbox("Two", cbg, false);
Checkbox three = new Checkbox("Three", cbg, true);
Lorsqu’un composant Choice est activé il affiche la liste des éléments qui
lui ont été ajoutés. Notez que les éléments ajoutés sont des objets de type
chaîne (String).
MaFrame
TextComponent
La classe TextComponent dont dérivent TextField et TextArea fourni
un grand nombre de méthodes.On a vu que les constructeurs des classes
TextArea et TextField permettent de définir un nombre de colonnes
pour l’affichage. Le nombre de colonnes est interprété en fonction de la
largeur moyenne des caractères dans la police utilisée. Le nombre de
caractères effectivement affichés peut varier radicalement en cas
d’utilisation d’une police à chasse proportionnellel.
C’est la fenêtre générale de "plus haut niveau". Elle possède des attributs
tels que : barre de titre et zones de contrôle du redimensionnement.
Frame fr = new Frame(“Frame”);
Un Dialog est une fenêtre (qui, comme Frame, hérite de Window) elle
diffère toutefois d’un Frame :
Les boîtes de dialogue ne sont pas visibles lors de leur création (utiliser
setVisible(true)). Elles s’affichent plutôt en réponse à une autre
action au sein de l’interface utilisateur, comme le fait d’appuyer sur un
bouton.
✏
Il est recommandé de considérer une boîte de dialogue comme un
dispositif réutilisable. Ainsi, vous ne devez pas détruire l’objet individuel
lorsqu’il est effacé de l’écran, mais le conserver pour une réutilisation
ultérieure.
Les Panels peuvent gérer les événements (rappel : le focus clavier doit
être demandé explicitement).
Cet espace peut être utilisé pour dessiner, recevoir du texte ou des saisies
en provenance du clavier ou de la souris.
L’exception est le menu PopUpMenu qui peut être ajouté à n’importe quel
composant, mais dans ce cas précis, il n’est pas question de disposition à
proprement parler.
Menu Aide
Une caractéristique particulière de la barre de menus est que l’on peut
désigner un menu comme le menu Aide. Cette opération s’effectue par
l’intermédiaire de la méthode setHelpMenu(Menu). Le menu à considérer
comme le menu Aide doit avoir été ajouté à la barre de menus, et il sera
ensuite traité de la façon appropriée pour un menu Aide sur la plate-
forme locale. Pour les systèmes de type X/Motif, cela consiste à décaler
l’entrée de menu à l’extrémité droite de la barre de menus.
MenuBar
Menu Menu
MenuItem MenuItem
La classe Menu fournit le menu déroulant de base. Elle peut être ajoutée à
une barre de menus ou à un autre menu.
MenuBar mb = new MenuBar();
Menu m1 = new Menu("File");
Menu m2 = new Menu("Edit");
Menu m3 = new Menu("Help");
mb.add(m1);
mb.add(m2);
mb.add(m3);
mb.setHelpMenu(m3);
✏
Les menus présentés ici sont vides ce qui explique l’aspect du menu File.
sit.addActionListener(...);
lit.addActionListener(...);
fr.add("Center", bt);
pp.add(sit);
pp.add(lit);
fr.add(pp);
✏
Le menu PopUp doit être ajouté à un composant "parent". Cette opération
diffère de l’ajout de composants ordinaires à des conteneurs. Dans
l’exemple suivant, le menu instantané a été ajouté au Frame englobant.
Coordonnées % composantes
d’origines
✏
Le composant d’origine doit être sous (ou contenu dans) le composant
parent dans la hiérarchie des composants.
Couleurs
Deux méthodes permettent de définir les couleurs d’un composant :
• setForeground(...)
• setBackground(...)
Ces deux méthodes utilisent un argument qui est une instance de la classe
java.awt.Color. On peut utiliser des couleurs de constante désignées
par Color.red Color.blue etc. La gamme complète de couleurs
prédéfinies est documentée dans la page relative à la classe Color.
Qui plus est, on peut créer une couleur spécifique de la façon suivante :
int r = 255, g = 255, b = 0;
Color c = new Color(r, g, b);
Un tel constructeur crée une couleur d’après les intensités de rouge, vert
et bleu spécifiées sur une échelle allant de 0 à 255 pour chacune.
Polices
La police utilisée pour afficher du texte dans un composant peut être
définie à l’aide de la méthode setFont(). L’argument utilisé pour cette
méthode doit être une instance de la classe java.awt.Font.
Aucune constante n’est définie pour les polices, mais on peut créer une
police en indiquant son nom, son style et sa taille en points.
Font f = new Font(“TimesRoman”, Font.PLAIN, 14);
• Dialog, DialogInput
• Symbol
Les constantes de style de police sont en réalité des valeurs entières (int),
parmi celles citées ci-après :
• Font.BOLD
• Font.ITALIC
• Font.PLAIN
• Font.BOLD + Font.ITALIC
Les tailles en points doivent être définies avec une valeur entière.
Numerics
2D ......................................................................................................................................... 223
A
abstract ........................................................................................................................... 41, 188
accès par défaut
modificateur acces ................................................................................................. 116
AccessControler ..................................................................................................................... 26
accesseurs/mutateurs .............................................................................................................. 86
accessibility
package java.awt.accessibility ............................................................................. 223
ActionEvent ......................................................................................................................... 194
ActionListener .............................................................................................................. 194, 196
actionPerformed ................................................................................................................... 194
adaptateur d’événement ....................................................................................................... 199
add ................................................................................................................................ 170, 172
addActionListener ................................................................................................................ 194
AdjustmentListener .............................................................................................................. 196
affectation .............................................................................................................................. 61
agrégation ............................................................................................................................... 95
Applet ..................................................................................................................................... 15
balise HTML .......................................................................................................... 155
classe ....................................................................................................................... 153
appletviewer ......................................................................................................................... 163
appliquette ............................................................................................................................ 149
ArithmeticException ............................................................................................................ 128
ArrayIndexOutOfBoundsException .................................................................................... 128
ArrayList .............................................................................................................................. 219
Arrays ................................................................................................................................... 219
association .............................................................................................................................. 95
associativité ............................................................................................................................ 62
AudioClip ............................................................................................................................. 159
B
beancontext
package java.beans.beancontext ......................................................................... 230
beans .................................................................................................................................... 229
BigDecimal .......................................................................................................................... 222
BigInteger ............................................................................................................................ 222
bloc ......................................................................................................................................... 39
Boolean ................................................................................................................................ 217
boolean ............................................................................................................................. 41, 43
BorderLayout ....................................................................................................................... 171
break ........................................................................................................................... 41, 70, 73
etiquete ..................................................................................................................... 74
BufferedInputStream ............................................................................................................ 143
Button ................................................................................................................................... 233
evenements ............................................................................................................ 197
Byte ...................................................................................................................................... 217
byte ................................................................................................................................... 41, 45
ByteArrayInputStream ......................................................................................................... 141
bytecode ................................................................................................................................. 22
C
Calendar ............................................................................................................................... 219
Canvas .................................................................................................................................. 246
evenements ............................................................................................................ 197
CardLayout .......................................................................................................................... 177
case ................................................................................................................................... 41, 70
cast ....................................................................................................................................... 104
catch ....................................................................................................................................... 41
champ ..................................................................................................................................... 50
char ................................................................................................................................... 41, 44
Character ...................................................................................................................... 217, 218
CharArrayReader ................................................................................................................. 141
Checkbox ............................................................................................................................. 234
evenements ............................................................................................................ 197
CheckboxGroup ................................................................................................................... 235
CheckboxMenuItem ............................................................................................................. 251
evenements ............................................................................................................ 197
Choice .................................................................................................................................. 236
evenements ............................................................................................................ 197
Class ..................................................................................................................................... 217
class ........................................................................................................................................ 41
ClassCastException ...................................................................................................... 104, 128
classe ...................................................................................................................................... 48
/259
Intitulé Cours: Programmation JAVA
Copyright Sun Service Formation Révision : E-beta
Réf. Sun : SL210 Date : 24/12/99
abstraite .................................................................................................................. 187
anonyme ................................................................................................................. 212
convention de codage ............................................................................................. 56
d’encapsulation ..................................................................................................... 218
interne ..................................................................................................................... 207
locale ....................................................................................................................... 211
membre d’instance ................................................................................................ 209
membre statique d’une autre classe ................................................................... 207
terminologie ............................................................................................................. 50
ClassLoader .................................................................................................... 26, 120, 151, 217
ClassNotFoundException .................................................................................................... 128
CLASSPATH ......................................................................................................................... 30
clone ..................................................................................................................................... 107
Cloneable ............................................................................................................................. 217
collection .............................................................................................................................. 186
Collections ........................................................................................................................... 219
commentaires ......................................................................................................................... 38
Comparable .................................................................................................................. 217, 219
Comparator .......................................................................................................................... 219
compilateur ............................................................................................................................ 20
à la volée ................................................................................................................... 24
Component ................................................................................................................... 166, 246
evenements ............................................................................................................ 197
taille preferee ......................................................................................................... 169
ComponentListener .............................................................................................................. 196
Concaténation ........................................................................................................................ 65
constante .............................................................................................................................. 118
conventions de codage ........................................................................................... 56
constructeur ............................................................................................................................ 87
par defaut ................................................................................................................. 89
Container ...................................................................................................................... 166, 246
evenements ............................................................................................................ 197
ContainerListener ................................................................................................................. 196
continue ............................................................................................................................ 41, 73
etiquete ..................................................................................................................... 74
conventions de codage ........................................................................................................... 56
conversions ............................................................................................................................ 67
couleurs ................................................................................................................................ 255
coupé/collé ........................................................................................................................... 223
Cp1252
codage Windows ................................................................................................... 142
D
DataInput .............................................................................................................................. 225
DataInputStream .................................................................................................................. 143
/260
Intitulé Cours: Programmation JAVA
Copyright Sun Service Formation Révision : E-beta
Réf. Sun : SL210 Date : 24/12/99
DataOuputStream ................................................................................................................. 143
DataOutput ........................................................................................................................... 225
datatransfer
package java.awt.datatransfer ............................................................................. 223
Date ...................................................................................................................................... 219
décalage à droite
arithmétique ............................................................................................................. 66
logique ...................................................................................................................... 66
déclarer ou traiter
(regles concernant les exceptions) ...................................................................... 133
découplage ........................................................................................................................... 185
default .............................................................................................................................. 41, 70
délégation ............................................................................................................................... 96
destroy .................................................................................................................................. 161
Dialog ................................................................................................................................... 242
evenements ............................................................................................................ 197
DigestInputStream ............................................................................................................... 144
dnd
package java.awt.dnd ........................................................................................... 223
do ............................................................................................................................................ 41
do ... while .............................................................................................................................. 71
Double .................................................................................................................................. 217
double ............................................................................................................................... 41, 47
E
else ......................................................................................................................................... 41
encapsulation .......................................................................................................................... 85
Enumeration ......................................................................................................................... 219
equals ................................................................................................................................... 107
Error ..................................................................................................................................... 127
espacements ........................................................................................................................... 39
ET logique .............................................................................................................................. 63
événements AWT ................................................................................................................. 191
categories ................................................................................................................ 195
exceptions
mecanisme general ................................................................................................ 124
exécuteur Java ........................................................................................................................ 20
extends ............................................................................................................................. 41, 98
F
false .................................................................................................................................. 41, 43
FileDialog ............................................................................................................................ 243
FileInputStream .................................................................................................................... 141
FileNotFoundException ....................................................................................................... 128
FileReader ............................................................................................................................ 141
/261
Intitulé Cours: Programmation JAVA
Copyright Sun Service Formation Révision : E-beta
Réf. Sun : SL210 Date : 24/12/99
filtre
d’E/S ............................................................................................................... 143, 144
final ................................................................................................................................ 41, 117
variables "blank final" ........................................................................................... 118
finally ............................................................................................................................. 41, 132
Float ............................................................................................................................. 217, 218
float .................................................................................................................................. 41, 47
flot ........................................................................................................................................ 138
FlowLayout .......................................................................................................................... 169
FocusListener ....................................................................................................................... 196
fonction .................................................................................................................................. 59
Font ...................................................................................................................................... 255
for ..................................................................................................................................... 41, 72
Frame ................................................................................................................................... 241
evenements ............................................................................................................ 197
G
garbage collector .................................................................................................................... 28
geom
package java.awt.geom ........................................................................................ 223
gestionnaire de disposition (LayoutManager) ..................................................................... 167
getActionCommand ..................................................................................................... 191, 233
getAudioClip ........................................................................................................................ 159
getCodeBase ........................................................................................................................ 159
getDocumentBase ................................................................................................................ 159
getImage ............................................................................................................................... 159
getModifiers ......................................................................................................................... 191
getName ............................................................................................................................... 233
getParameter ........................................................................................................................ 159
getParent .............................................................................................................................. 175
getSelectedIndex .................................................................................................................. 236
getSelectedItems .................................................................................................................. 237
getSelectedObjects ............................................................................................................... 237
getStateChange .................................................................................................................... 234
glaneur de mémoire ................................................................................................................ 28
graphique .............................................................................................................................. 223
GregorianCalendar ............................................................................................................... 219
GridBagLayout .................................................................................................................... 177
GridLayout ........................................................................................................................... 173
H
handler
d’evenement ........................................................................................................... 191
HashMap .............................................................................................................................. 219
HashSet ................................................................................................................................ 219
/262
Intitulé Cours: Programmation JAVA
Copyright Sun Service Formation Révision : E-beta
Réf. Sun : SL210 Date : 24/12/99
HashTable ............................................................................................................................ 219
héritage ................................................................................................................................... 97
constructeurs .......................................................................................................... 105
simple/multiple .................................................................................................... 100
hexadécimal
representation des nombres .................................................................................. 46
HotJava .................................................................................................................................. 16
HotSpot .................................................................................................................................. 24
HTML .................................................................................................................................. 149
I
I.E.E.E 754 ............................................................................................................................. 47
i18n ...................................................................................................................................... 221
identificateur .......................................................................................................................... 40
syntaxe ...................................................................................................................... 40
if ............................................................................................................................................. 41
if-else ...................................................................................................................................... 69
image
package java.awt.image ....................................................................................... 223
implements ..................................................................................................................... 41, 184
import ............................................................................................................................. 41, 115
impression ............................................................................................................................ 257
incrémentation/décrémentation .............................................................................................. 61
index
de tableau ................................................................................................................. 51
init ........................................................................................................................................ 161
InputStream .......................................................................................................................... 139
InputStreamReader .............................................................................................................. 141
instance .................................................................................................................................. 50
instanceof ....................................................................................................................... 41, 103
instruction .............................................................................................................................. 39
int ..................................................................................................................................... 41, 45
Integer .......................................................................................................................... 217, 218
interface .................................................................................................................... 27, 41, 183
membre statique d’une autre classe ................................................................... 207
internationalisation ............................................................................................................... 221
interpréteur de pseudo-code ................................................................................................... 24
InterruptedException ............................................................................................................ 128
introspection ................................................................................................................. 217, 230
ISO8859-1 ............................................................................................................................ 142
ItemListener ......................................................................................................................... 196
Iterator .......................................................................................................................... 186, 219
J
java
/263
Intitulé Cours: Programmation JAVA
Copyright Sun Service Formation Révision : E-beta
Réf. Sun : SL210 Date : 24/12/99
commande
organisation pratique ........................................................................................113
javac ....................................................................................................................................... 20
javadoc ................................................................................................................................... 38
JDBC .................................................................................................................................... 228
JIT .......................................................................................................................................... 24
JLS ......................................................................................................................................... 18
JVM ........................................................................................................................................ 22
K
KeyListener .................................................................................................................. 196, 240
L
Label .................................................................................................................................... 238
evenements ............................................................................................................ 197
langage de programmation Java ............................................................................................. 18
LayoutManager .................................................................................................................... 167
length
champ de tableau .................................................................................................... 54
LineNumberReader .............................................................................................................. 144
LinkedList ............................................................................................................................ 219
List
collection ................................................................................................................. 219
composant AWT .................................................................................................... 237
evenements ............................................................................................................ 197
Listener ................................................................................................................................ 192
Locale ................................................................................................................................... 221
long .................................................................................................................................. 41, 45
M
machine virtuelle .................................................................................................................... 22
MalformedURLException ................................................................................................... 128
Map ...................................................................................................................................... 219
Math ..................................................................................................................................... 217
membre .................................................................................................................................. 50
Menu .................................................................................................................................... 249
MenuBar .............................................................................................................................. 248
MenuItem ............................................................................................................................. 250
evenements ............................................................................................................ 197
message
envoi de .................................................................................................................... 82
méthode .................................................................................................................................. 59
asynchrones (chargement media) ....................................................................... 160
d’instance ........................................................................................................... 60, 82
/264
Intitulé Cours: Programmation JAVA
Copyright Sun Service Formation Révision : E-beta
Réf. Sun : SL210 Date : 24/12/99
de classe ...................................................................................................... 59, 83, 119
modele general ...................................................................................................... 134
specialisation ............................................................................................................ 99
mots-clés ................................................................................................................................ 41
MouseListener ...................................................................................................................... 196
MouseMotionListener .......................................................................................................... 196
N
NaN ........................................................................................................................................ 47
native ...................................................................................................................................... 41
net (package java.net) .......................................................................................................... 226
new ......................................................................................................................................... 41
newAudioClip ...................................................................................................................... 159
null ......................................................................................................................................... 41
NullPointerException ........................................................................................................... 128
Number ................................................................................................................................ 217
O
Object ........................................................................................................................... 107, 217
ObjectInputStream ............................................................................................................... 225
ObjectOutputStream ............................................................................................................ 225
objet .................................................................................................................................. 48, 50
allocation .................................................................................................................. 49
Observer/Observable ............................................................................................................ 219
obsolescences ......................................................................................................................... 27
octal
representation des nombres .................................................................................. 46
Opérateurs .............................................................................................................................. 61
opérations
arithmétiques ........................................................................................................... 61
bit-à-bit sur entiers .................................................................................................. 61
logiques ............................................................................................................... 61, 63
evaluation ...........................................................................................................64
logiques sur valeurs numériques .......................................................................... 61
OU EXCLUSIF logique ......................................................................................................... 63
OU logique ............................................................................................................................. 63
OutputStream ....................................................................................................................... 139
OutputStreamWriter ............................................................................................................. 142
P
pack ...................................................................................................................................... 170
Package
classe java.lang.Package ....................................................................................... 111
package .......................................................................................................................... 41, 111
/265
Intitulé Cours: Programmation JAVA
Copyright Sun Service Formation Révision : E-beta
Réf. Sun : SL210 Date : 24/12/99
convention de codage ............................................................................................. 56
paint ...................................................................................................................................... 157
Panel ..................................................................................................................................... 244
evenements ............................................................................................................ 197
passage de paramètres ............................................................................................................ 60
patterns ................................................................................................................................. 219
peer class .............................................................................................................................. 165
PipedInputStream ................................................................................................................. 141
PipedReader ......................................................................................................................... 141
polices de caracteres ............................................................................................................ 255
politique de sécurité ............................................................................................................... 26
polymorphisme .................................................................................................................... 101
PopupMenu .......................................................................................................................... 253
PrintWriter ........................................................................................................................... 144
private ...................................................................................................................... 41, 85, 116
Process ................................................................................................................................. 217
getInputStream() ................................................................................................... 141
promotions ............................................................................................................................. 67
Properties ............................................................................................................................. 219
PropertyVetoException ........................................................................................................ 128
protected ......................................................................................................................... 41, 116
Protection Domain ............................................................................................................... 151
pseudo-code ........................................................................................................................... 22
public .............................................................................................................................. 41, 116
PushBackInputStream .......................................................................................................... 144
R
R.M.I .................................................................................................................................... 227
ramasse-miettes ...................................................................................................................... 28
Random ................................................................................................................................ 222
RandomAccessFile .............................................................................................................. 144
Reader .................................................................................................................................. 140
record (agregat Pascal) ........................................................................................................... 48
référence ........................................................................................................................... 42, 50
references faibles
package java.lang.ref ............................................................................................ 217
reflect
package java.lang.reflect ...................................................................................... 217
repaint .................................................................................................................................. 157
ResourceBundle ................................................................................................................... 221
return ...................................................................................................................................... 41
rmid ...................................................................................................................................... 227
rmiregistry ............................................................................................................................ 227
Runnable .............................................................................................................................. 217
Runtime ................................................................................................................................ 217
/266
Intitulé Cours: Programmation JAVA
Copyright Sun Service Formation Révision : E-beta
Réf. Sun : SL210 Date : 24/12/99
RuntimeException ................................................................................................................ 127
S
sandbox security policy ........................................................................................................ 151
scalaires
types scalaires .......................................................................................................... 42
Scrollbar
evenements ............................................................................................................ 197
ScrollPane ............................................................................................................................ 245
evenements ............................................................................................................ 197
SDK ........................................................................................................................................ 31
installation ................................................................................................................ 34
sécurité ................................................................................................................................. 151
SecurityException ................................................................................................................ 128
SecurityManager .................................................................................................... 26, 152, 217
SequenceInputStream .......................................................................................................... 144
Serializable ........................................................................................................................... 225
serveur HTTP ......................................................................................................................... 15
Set ........................................................................................................................................ 219
setActionCommand .............................................................................................................. 233
setBackground ...................................................................................................................... 255
setForeground ...................................................................................................................... 255
setHelpMenu ........................................................................................................................ 247
setMenuBar .......................................................................................................................... 247
setName ................................................................................................................................ 233
Short ..................................................................................................................................... 217
short .................................................................................................................................. 41, 45
Socket ................................................................................................................................... 226
getInputStream() ................................................................................................... 141
source ..................................................................................................................................... 20
source d’evenement ............................................................................................................. 191
sql (package java.sql) ........................................................................................................... 228
Stack ..................................................................................................................................... 219
start ....................................................................................................................................... 161
static ......................................................................................................................... 41, 76, 119
bloc .......................................................................................................................... 120
stop ....................................................................................................................................... 161
stream ................................................................................................................................... 138
StreamTokenizer .................................................................................................................. 144
strictfp .................................................................................................................................... 41
String .............................................................................................................................. 44, 217
StringBuffer ................................................................................................................. 217, 218
StringReader ........................................................................................................................ 141
struct ....................................................................................................................................... 48
super ....................................................................................................................... 41, 100, 106
/267
Intitulé Cours: Programmation JAVA
Copyright Sun Service Formation Révision : E-beta
Réf. Sun : SL210 Date : 24/12/99
surcharge
de methodes ............................................................................................................. 68
des constructeurs .................................................................................................... 88
swing .................................................................................................................................... 223
switch ............................................................................................................................... 41, 70
synchronized .......................................................................................................................... 41
syntaxe ................................................................................................................................... 37
System .................................................................................................................................. 217
T
tableau .................................................................................................................................... 51
multidimensionnel .................................................................................................. 53
notation simplifiee allocation+initialisation ....................................................... 52
tableau anonyme ..................................................................................................... 52
technologie Java ..................................................................................................................... 18
text
package java.text ................................................................................................... 221
TextArea .............................................................................................................................. 240
evenements ............................................................................................................ 197
TextComponent .................................................................................................................... 240
evenements ............................................................................................................ 197
TextField .............................................................................................................................. 239
evenements ............................................................................................................ 197
TextListener ......................................................................................................................... 196
this .................................................................................................................................... 41, 90
Thread .................................................................................................................................. 217
ThreadGroup ........................................................................................................................ 217
ThreadLocal ......................................................................................................................... 217
throw .............................................................................................................................. 41, 130
Throwable .................................................................................................................... 124, 217
throws ............................................................................................................................. 41, 133
TimeZone ............................................................................................................................. 219
Toolkit .......................................................................................................................... 165, 256
toString ................................................................................................................................. 107
transient .................................................................................................................................. 41
transtypage ........................................................................................................................... 104
TreeMap ............................................................................................................................... 219
TreeSet ................................................................................................................................. 219
true ................................................................................................................................... 41, 43
try ........................................................................................................................................... 41
try-catch ............................................................................................................................... 131
type effectif .......................................................................................................................... 101
types abstraits ....................................................................................................................... 181
/268
Intitulé Cours: Programmation JAVA
Copyright Sun Service Formation Révision : E-beta
Réf. Sun : SL210 Date : 24/12/99
U
UNICODE .............................................................................................................................. 44
update ................................................................................................................................... 157
URL
openStream() .......................................................................................................... 141
syntaxe .................................................................................................................... 149
UTF8 .................................................................................................................................... 142
V
variable
automatique ............................................................................................................. 75
d’instance ................................................................................................................. 76
de classe .................................................................................................................... 76
membre ..................................................................................................................... 50
conventions de codage .......................................................................................56
Vector ................................................................................................................................... 219
veilleur (evenement) ............................................................................................................ 192
vérificateur de ByteCode ....................................................................................................... 26
version
classe Package ........................................................................................................ 217
Virtual Machine Specification ............................................................................................... 22
virtual method invocation .................................................................................................... 101
Void ...................................................................................................................................... 217
void ........................................................................................................................................ 41
volatile .................................................................................................................................... 41
W
while ................................................................................................................................. 41, 71
Window
evenements ............................................................................................................ 197
WindowListener ................................................................................................................... 196
Writer ................................................................................................................................... 140
Z
ZipInputStream .................................................................................................................... 144
/269
Intitulé Cours: Programmation JAVA
Copyright Sun Service Formation Révision : E-beta
Réf. Sun : SL210 Date : 24/12/99
Sun Microsystems France