Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
APPLICATIVES II
Programme du cours
Cours de conception et Adaptation des Solutions Applicatives II
SOMMAIRE
CHAPITRE 0 PRINCIPE DE LA PROGRAMMATION ORIENTEE OBJET .......................................... 1
I Introduction ............................................................................................................................. 1
II Objet et classe .......................................................................................................................... 1
III Encapsulation des données ..................................................................................................... 2
IV L’HERITAGE .............................................................................................................................. 2
V Le polymorphisme ................................................................................................................... 3
VI Le Langage JAVA ...................................................................................................................... 3
VII Eléments de syntaxe du langage Java ................................................................................ 4
VII.1 Types primitifs ............................................................................................................... 4
VII.2 Déclaration des variables et objets .............................................................................. 5
VII.3 Les opérateurs Java ...................................................................................................... 6
VII.4 Commentaires ............................................................................................................... 7
VIII Les structures de contrôles ................................................................................................. 7
VIII.1 La structure if (Si).......................................................................................................... 7
VIII.2 Les choix multiples........................................................................................................ 7
VIII.3 La structure for ( pour) ................................................................................................. 8
VIII.4 La structure While (tant que) ....................................................................................... 9
VIII.5 La structure do..while (Repeter).................................................................................. 9
IX Les sous programmes .......................................................................................................... 9
CHAPITRE 1 CLASSES / PAQUETAGES .............................................................................................. 11
I Notion générale ...................................................................................................................... 11
I.1 Introduction ..................................................................................................................... 11
I.2 Encapsulation ................................................................................................................... 11
II Constructeurs ..........................................................................................................................12
III Accesseurs et mutateurs ........................................................................................................13
IV Application ..............................................................................................................................13
V Attributs final et static ........................................................................................................... 14
VI Conversion des objets en chaîne de caractères ................................................................... 14
VII Destructeurs ........................................................................................................................15
VIII Paquetages ..........................................................................................................................15
IX Classes internes ...................................................................................................................15
CHAPITRE 2 Héritage, classes abstraites et interfaces ...............................................................17
I Héritage ...................................................................................................................................17
I.1 Introduction .....................................................................................................................17
I.2 La classe Object ...............................................................................................................17
II Méthodes et classes abstraites ............................................................................................. 18
III Interfaces ................................................................................................................................ 19
IV Héritage multiple d’interface ................................................................................................ 19
CHAPITRE 3 COLLECTION ET GESTION DES EXCEPTIONS ......................................................... 20
I Les collections d’objets ......................................................................................................... 20
I.1 La classe ArrayList............................................................................................................21
I.2 La classe HashTable ........................................................................................................ 22
I.3 La classe Vector .............................................................................................................. 22
II Les Exceptions........................................................................................................................ 23
II.1 Définition ......................................................................................................................... 23
II.2 Capturer une exception.................................................................................................. 24
II.3 Définir de nouveaux types d’exceptions ....................................................................... 25
I Introduction
La programmation Orientée Objet est un paradigme (style) de programmation consistant à
assembler des briques logicielles (objets). Elle est aujourd'hui plébiscitée par un grand nombre de
développeurs !
En effet, ce type de programmation possède de nombreux avantages :
o Réutilisation du code, donc gain de temps
o Code mieux structuré, maintenance plus aisée structuration du code
La programmation orientée objet est apparue avec, pour objectifs principaux :
1) de concevoir l’organisation de grands projets informatiques autour d’entités
précisément structurés, mêlant données et fonctions (les objets) facilitant la
modélisation de concepts sophistiqués ;
2) d’améliorer la sûreté des logiciels en proposant un mécanisme simple et flexible des
données sensibles de chaque objet en ne les rendant accessibles que par le truchement
de certaines fonctions associées à l’objet (encapsulation) afin que celles-ci ne soient
pas accessibles à un programmeur inattentif ou malveillant.
3) de simplifier la réutilisation de code en permettant l’extensibilité des objets existants
(héritage) qui peuvent alors être manipulés avec les mêmes fonctions
(polymorphisme).
Les concepts fondamentaux de la POO regroupent celles de :
o Objet
o Encapsulation des données
o Classe
o Héritage
o Polymorphisme
II Objet et classe
Un objet est une entité cohérente rassemblant des données et du code travaillant sur ses
données.
o Son Identité : C'est ce qui permet d'identifier un objet parmi d'autres. Dans le code,
le nom de variable remplit cette fonction.
o Ses Propriétés (ou attributs) : Les propriétés sont les données intrinsèques de l'objet
que l'on souhaite gérer. En prenant l'exemple d'un objet Rectangle, il faudra au
minimum gérer sa longueur et sa largeur.
o Ses Méthodes : Les méthodes sont des fonctions applicables à un objet.
Une classe peut être considérée comme un moule à partir duquel on peut créer des objets.
Une classe est une structure informatique regroupant les caractéristiques et les modes de
fonctionnements d’une famille d’objets, appelés instances de la classe.
Exemple :
IV L’HERITAGE
Il est chargé de traduire le principe naturel de Généralisation / Spécialisation. En effet, la
plupart des systèmes réels se prêtent à merveille à une classification hiérarchique des éléments
qui les composent. Il est basé sur l'idée qu'un objet spécialisé bénéficie ou hérite des
caractéristiques de l'objet le plus général auquel il rajoute ses éléments propres.
En termes de concepts objets cela se traduit de la manière suivante :
V Le polymorphisme
Le polymorphisme est le troisième des trois grands principes sur lequel repose le paradigme
objet. C'est assurément son aspect à la fois le plus puissant et le plus troublant. Comme son nom
l'indique le polymorphisme permet à une méthode d'adopter plusieurs formes sur des classes
différentes.
VI Le Langage JAVA
Le langage JAVA est un projet de Sun Microsystems(1991) rachetée par Oracle. La première
version apparait en 1995. Aujourd’hui, JAVA est un langage permettant de gérer :
La connectivité aux bases de données et les objets distribués
Les évènements, l’internationalisation
Le graphisme, la sécurité.
JAVA est un langage qui possède de nombreux avantages. Les principaux sont
interruptible : il dispose d’un gestionnaire d’exceptions améliorant la robustesse et la
lisibilité des programmes ;
à ramasse-miette : la mémoire est gérée automatiquement par le langage ;
sécurisé: de nombreux garde-fous (encapsulation, exceptions, gestionnaire de
sécurité,…) contribuent à la robustesse des programmes, tant à la compilation qu’à
l’exécution ;
multithread : des processus légers peuvent s’exécuter en parallèle, ce qui est
particulièrement utile dans le cas de la programmation de serveurs ou de la
parallélisassions multiprocesseurs ;
surchargeable : les fonctions peuvent avoir le même nom et des arguments de type
différent, ce qui permet de rapprocher la conception abstraite de l’implémentation ;
portable : grâce à l’existence d’une machine virtuelle et à une conception globale
propice à la programmation graphique et événementielle utilisable sur toute
plateforme et à l’existence d’une multitude de bibliothèques standard ;
proche de C et C++ : la syntaxe de Java ne désoriente pas les programmeurs habitués à
ces langages ; l’interfaçage des programmes étant, par ailleurs, possible ;
international : les programmes Java supportent les normes internationales Unicode
pour le codage des caractères de toutes les langues ;
riche : il existe de nombreuses bibliothèques dans tous les domaines ; celles-ci ont
l’avantage considérable d’être standardisées ;
interconnectable: certains programmes Java (les applets) peuvent être directement
intégrées dans les pages Web afin de les rendre dynamiques ; de nombreuses
bibliothèques standard permettent de travailler en réseau ;
populaire : en particulier en entreprise, le langage Java est un investissement pour celui
qui l’apprend.
Java souffre toutefois d’un certain nombre d’inconvénients, en particulier :
lent : même lors de l’utilisation d’un compilateur natif ;
Opérateur ternaire :
Cond ?a :b
Si cond est vrai alors a sinon b.
Exemple :
x=(a>b ?a :b) permet de calculer le plus grand entre a et b.
VII.4 Commentaires
Sous Java, il existe deux types de commentaires. Les commentaires servant à expliquer le
code ainsi que les commentaires utilisés dans le cadre de la documentation du code (JAVADOC).
Les commentaires servant à expliquer le code sont placés après « // » si le commentaire tient
sur une ligne, et entre « /* */ » si celui-ci tient sur plusieurs lignes.
Ex :
// ceci est un commentaire sur une ligne
/* Ceci est le début du commentaire qui commence sur cette ligne
Continue sur celle-ci
Et se termine ici */
Pour la génération de la JavaDoc, le commentaire est placé entre « /**…*/ ».
Ex:
/** ici se trouve le code de la JavaDoc*/
Une méthode particulière, la méthode main est utilisée par la machine virtuelle pour
lancer l’exécution d’une classe. Sa syntaxe est :
}
Ici args représente les arguments qui seront passé au moment du lancement de la classe
contenant le main.
I Notion générale
I.1 Introduction
La notion de classe généralise la notion de type. La classe comporte des champs
(données) et des fonctions appelées méthodes.
L’accès à ces attributs est limité par un certain nombre de mot-clé dont le principal est la
visibilité. Ces éléments sont définis dans une zone délimitée par des accolades, précédée par le
mot class.
Pour éviter les ambiguïtés, on peut préciser qu’on fait référence à l’instance courante en
déréférençant les attributs à partir de this.
La syntaxe minimale de création d’une classe est :
[public |public] class nomClasse{
//définition des attributs
//définition des méthodes
}
La syntaxe minimale de déclaration d’un attribut est la suivante :
[visibilite] typeattribut[=valeurDefaut] [,typeattribut[=valeurDefaut]]
La syntaxe minimale de déclaration d’une méthode est :
[visibilite] typeRetour nomMethode( listeParametre)
I.2 Encapsulation
La visibilité permet de définir le niveau d’encapsulation et l’intégrité des éléments d’une
classe. Divers mots-clés paramètrent le niveau d’encapsulation des attributs :
1. private : accès depuis la classe uniquement ;
Pour un champ : c’est un choix restrictif car il empêche aux classes héritières
de l’utiliser directement ; l’accès, toujours possible par des accesseurs et des
mutateurs, est plus sûr mais moins efficace (c’est le niveau conseillé);
Pour une méthode : c’est une pratique courante, par exemple, pour des
méthodes auxiliaires qui n’ont pas vocation à être visibles de l’extérieur de la
classe, ni même par les héritières qui utiliseront une autre méthode qui leur
sera accessible ;
2. package : accès depuis les classes du package uniquement (valeur par défaut) ;
pour un champ : c’est un choix pratique, à condition de bien délimiter ses
packages ;
pour une méthode : idem;
3. protected : accès depuis toutes les classes du package et des héritières,
uniquement ;
pour un champ : c’est un choix pratique qui va dans le sens de l’efficacité mais
qui peut poser des problèmes de sécurités i un utilisateur de la classe détruit sa
cohérence interne en agissant directement sur les champs sans passer par les
accesseurs et les mutateurs ;
pour une méthode : c’est un paramétrage minimal pour que les classes
héritières puissent en bénéficier directement ;
Dans une classe, plusieurs méthodes peuvent avoir le même nom à condition d’avoir des
signatures différentes.
Lors de la création d’une classe X, JAVA ajoute un constructeur par défaut permettant de
créer les instances de cette classe. La création d’une instance se fait en utilisant le bout de code
X x=new X() ;
Les champs c et les méthodes f d’un objet m sont identifiés par l’expression m.c et
m.f(…). Ces méthodes sont à utiliser en fonction de leurs visibilité.
Application :
Considérons un point en dimension 2. Chaque point est caractérisé par son abscisse et
son ordonné et une méthode distance qui permet de calculer la distance entre deux points.
class Point{
// abscisse et ordonnée entières, privées:
private int x,y;
// Méthode qui calcule ladistance
Public double distance(Point p){
double dx=
double dz=
return
}
}
int a,b;
Du fait que x et y sont des champs private de point, de l’extérieur de la classe Point on ne
peut écrire
int a,b;
a = p.x; // provoque une erreur à la compilation
b = p.y; // provoque une erreur à la compilation
II Constructeurs
Un constructeur est une méthode dont le nom est identique à celui de la classe et qui n’a
pas de type de retour (même pas void). Cette méthode est utilisée pour créer les instances
d’une classe.
Lors de la création d’une classe, JAVA ajoute par défaut un constructeur par défaut. Vous
pouvez y ajouter de nouveaux constructeurs. Toutefois, l’ajout d’un nouveau constructeur,
annule automatiquement le constructeur par défaut.
IV Application
Considérons un point en dimension 2. Chaque point est caractérisé par son abscisse et
son ordonné.
class Point{
// abscisse et ordonnée entières, privées:
private int x,y;
// accesseurs et mutateurs publics (voir la note ci-dessous pour le ‘‘final’’):
public final int getX(){return x;}
public final int getYy(){return y;}
public final void setX(int x){this.x=x;}
public final void setY(int y){this.y=y;}
// constructeurs (this désigne un autre constructeur):
point(int x, int y){setX(x); setY(y);}
point(){this(0,0);} // constructeur par défaut
point(point p){this(p.getX(),p.getY())} // constructeur de copie
}
Les champs c et les méthodes f d’un objet M sont identifiés par l’expression M.c et
M.f(…). Dans l’exemple précédent, si l’on a une instance p de la classe point, on peut écrire :
int a,b;
a = p.getX();
b = p.getY();
NB :
Par convention :
Le nom d’une propriété ou d’une méthode doit commencer par une minuscule ;
Le nom d’une classe commence par une majuscule.
VII Destructeurs
Le destructeur est une méthode particulière permettant de libérer la zone mémoire
utilisé par l’objet une fois que celle-ci n’est plus référencée. En C++ le destructeur doit être
défini de manière explicite. La définition du destructeur est très généralement necessaire pour
les éléments définies avec un new.
Sous Java l’opération est assuré par le ramasse miettes. Il est lancé automatiquement (il
n’est pas nécessaire de l’invoquer dans votre programme, sauf situations exceptionnelles) par
la méthode baptisée System.gc(). Chaque objet devenu inutile car plus référencé invoque alors
son destructeur appelé finalize() qui va provoquer son élimination de la mémoire. Cette
méthode n’a pas à être définie explicitement (car elle est héritée d’Object, que nous verrons
lors de l’héritage) mais peut, si nécessaire, être redéfinie pour effectuer une opération de
nettoyage (effacement de fichiers temporaires par exemple) avant que l’objet soit
définitivement détruit. L’exemple suivant contient pourra être relu après avoir lu les sections
sur l’héritage et les exceptions.
VIII Paquetages
Certaines applications manipulent un nombre assez élevé de classe au point où le
programmeur arrive à s’arracher les cheveux. Pour mettre de l’ordre dans cette montagne de
composants (classes) les classes sont organisé par groupe de même logique dans un espace de
nom correspondant à un package en Java.
Les packages permettent en outre de résoudre les conflits de nom de classe.
Lors de la création d’une classe, un paquetage est défini en mettant la commande
package, suivi du nom du package. Celui-ci est composé d’une succession de noms de
répertoires séparés par un point.
package mypackage;
public class MyClass {
// . . .
}
Maintenant, si quelqu'un veut utiliser MyClass ou, aussi bien, une des autres classes public
de mypackage, il doit utiliser le mot-clé import pour avoir à sa disposition le ou les noms définis
dans mypackage. L'autre solution est de donner le nom complet. Soit:
mypackage.MyClass m = new mypackage.MyClass();
ou
import mypackage.*;
// . . .
MyClass m = new MyClass();
Java dispose d’un nombre de classe dont java.lang, javax.swing…. Les classes du package
java.lang sont importés par défaut dans toute classe java.
IX Classes internes
Une classe peut être définie à l’intérieur d’une autre classe. Elle est alors dite interne.
Cette classe connaît tous les attributs de la classe dans laquelle elle est définie (y compris les
privés). Si la classe interne est déclarée private, par exemple, sa définition n’est, en revanche,
pas visible par les autres classes du paquetage.
public class Parcel {
class Destination {
private String label;
Destination(String whereTo) { label = whereTo;}
I Héritage
I.1 Introduction
L’héritage est le mécanisme central de la programmation orientée objet. Il permet de
d’enrichir une classe C en une classe C′en ne redéfinissant que les attributs spécifiques à C′ou en
redéfinissant dans la définition de C′, des méthodes déjà définies dans C. Comme on pouvait
faire référence à l’objet courant ou à ses constructeurs avec le mot-clé this, on peut faire
référence à la classe mère ou à ses constructeurs avec le mot-clé super.
Notons que les constructeurs ne s’héritent pas et que les classes héritières peuvent
diminuer l’encapsulation mais pas l’augmenter.
Pour indiquer qu’une A hérite d’une classe B, on utilise le bout de code :
class A extends B{
A titre d’exemple, supposons qu’un pixel soit un point disposant d’une couleur. Il suffit
alors d’ajouter aux propriétés d’un point une nouvelle propriété appelé couleur. Ceci se fait
assez simplement par héritage de la manière suivante.
III Interfaces
Une interface est une classe abstraite pure (qui ne possède que des méthodes
abstraites). Elle permet en Java de contourner l’absence d’héritage multiple. Tout champ d’une
interface est supposée public final et toutes ses méthodes sont supposées public abstract. On
définit une interface I en déclarant interface I comme on l’aurait fait pour une classe.
La définition est alors de la forme :
public interface I public interface I
{ {
public abstract void methode1(); void methode1 ();
public abstract void methode2(); void methode1 ();
} }
Une classe implémente une interface en utilisant le mot clé implements. Elle est utilisée
pour indiquer que la nouvelle classe satisfait aux conditions de l’interface. On obtient alors
class A implements I
{
// Redéfinition de methode1();
// Redéfinition de methode2();
}
Application : Figure2D, Rectangle, Carré, Losange.
public interface I2
{
void methode2();
}
Les interfaces à utiliser par des objets qui gèrent des collections sont :
Collection : interface qui est implémentée par la plupart des objets qui gèrent des
collections
Ex:
ArrayList listeComplexe = new ArrayList();
//Ajout des éléments
listeComplexe.add(new Complexe(3,9));
listeComplexe.add(new Complexe(9));
//nombre de valeurs dans la liste
int nombreComplexe = listeComplexe.size();
//Parcours de la liste
Complexe leComplexe ;
for (int i = 0; i < nombreComplexe; i++) {
leComplexe = (Complexe) listeComplexe.get(i);
System.out.println("Attrapé le complexe " +leComplexe) ;
}
Il est possible de créer des collections d’objets typés. Ceci est possible pour la majorité
des classes gérant les collections. En typant une collection, cela permet de se passer de
l’opération de cast lors de la récupération
Exemple :
Déclarons et construisons une liste de tableau qui contient des objets Complexe :
Exemple :
import java.util.*;
class test9 {
public static void main (String args[]) {
Hashtable h = new Hashtable();
Vector v = new Vector();
v.add("chaine 1");
v.add("chaine 2");
v.add("chaine 3");
h.put("jour", new Date());
h.put(new Integer(1),"premier");
h.put(new Integer(2),"deuxième");
System.out.println("Contenu du vector");
for (Enumeration e = v.elements() ; e.hasMoreElements() ; ) {
System.out.println(e.nextElement());
}
System.out.println("\nContenu de la hashtable");
II Les Exceptions
Dans un programme, il faut soigner la gestion des erreurs. Ce n’est pas toujours facile
avec les langages classiques. Java propose une approche très différente des approches
traditionnelles, à travers le mécanisme des exceptions. Une exception est une sorte de signal
indiquant qu’une erreur ou une situation anormale a eu lieu. On dit qu’une méthode ayant
détecté une situation anormale déclenche (throws) une exception. Cette exception pourra être
capturée (catch) par le code.
On peut distinguer deux types de situations anormales : les exceptions et les erreurs. Les
erreurs sont en principe des erreurs fatales et le programme s’arrête à la suite de ce type de
situation (classe java.lang.Error). Les exceptions ne sont pas uniquement des erreurs système.
Le programmeur peut définir des erreurs (non fatales) pour assurer que son programme est
robuste (classe java.lang.Exception).
Lorsqu’une méthode déclenche une exception la JVM remonte la suite des invocations
des méthodes jusqu’`a atteindre une méthode qui capture cette exception. Si une telle
méthode n’est pas rencontrée, l’exécution est arrêtée.
L’utilisation des exceptions permet de :
séparer le code correspondant au fonctionnement normal d’un programme, du code
concernant la gestion des erreurs,
propager de proche en proche les exceptions d’une méthode `a la méthode
appelante jusqu’`a atteindre une méthode capable de gérer l’exception. Il n’est donc
pas nécessaire que la gestion d’une exception figure dans la méthode qui est
susceptible de déclencher cette exception. Une méthode peut ignorer la gestion
d’une exception `a condition qu’elle transmette l’exception à la méthode appelante,
regrouper par types la gestion des exceptions.
II.1 Définition
C’est un objet de la classe java.lang.Throwable qui est la classe mère de toutes les erreurs
et exceptions du langage Java. Seuls les objets qui sont des instances de cette classe (ou d’une
classe dérivée) sont déclenchés par la JVM et apparaissent comme arguments d’une clause
catch. Nous allons voir ci-après les sous-classes principales de la classe java.lang.Throwable.
java.lang.Error est la classe des erreurs, qui indiquent un problème grave qui doit
conduire à l’arrêt de l’application en cours. Elle n’est pas susceptible d’être capturée. Un
// bloc de code
CHAPITRE 4 LA PERSISTENCE
import java.io.*;
BufferedReader console = new BufferedReader(new FileReader("toto.txt"));
String ligne = null;
try{
while((ligne = in.readLine()) != null){
System.out.println(ligne);
}catch(IOException){ // Pas d’erreur en théorie...
} finaly{
L’écriture dans un fichier texte se fait via :
in.close();
} import java.io.*;
File f = new File("toto.txt");
PrintWriter out = new PrintWriter(new FileWriter(f));
try{
out.println("Coucou");
}catch(IOException){ // Pas d’erreur en th´eorie...
}finaly{ out.close();
L’écriture} dans un fichier à accès aléatoire se fait via :
try{
RandomAccessFile fichier = new RandomAccessFile("foo.txt","rw");
fichier.writeUTF("Coucou!");
}catch(Exception e){
System.out.println(e);
}
I Introduction
Il n’est pas question dans ce chapitre de faire un tour de la conception des interfaces
graphiques, mais de présenter les classes essentielles. L’essentiel des éléments de conceptions
des interfaces graphiques est contenue dans les package AWT (Abstract Windows Toolkit) et
SWING. Ces deux bibliothèques constitue la bibliothèque officielle JFC(Java Foundation
Classes).
AWT est une bibliothèque graphique originale et pratique, qui a beaucoup contribué au
succès de Java, mais elle a deux inconvénients : puisque ses composants sont censés exister
sur tous les environnements visés, leur nombre est forcément réduit ; d’autre part, même
réputés identiques, des composants appartenant à des systèmes différents présentent malgré
tout des différences de fonctionnement qui finissent par limiter la portabilité des programmes
qui les utilisent.
C’est la raison pour laquelle AWT a été complétée par une bibliothèque plus puissante,
permettant de coder en Pur Java les composants dépendant du système. Au final, Swing va
plus loin que AWT mais ne la remplace pas ; au contraire, les principes de base et un grand
nombre d’éléments de Swing sont ceux de AWT.
Tu peux aussi créer des menus (JMenu et JPopupMenu), des fenêtres à la demande
(popup), des cadres imbriqués dans d'autres cadres (JInternalFrame) et utiliser les fenêtres
standard de manipulation d'informations : JFileChooser (choix de fichier), JColorChooser
(choix de couleur) et JOptionPane (choix d'option).
} catch(Exception e) {}
On peut initialiser le look and feel à celui d’une classe chargé en utilisant le code
try{
//ici le look and feel est celui du système
UIManager.setLookAndFeel(“nom du look and feel “);
} catch(Exception e) {}
ActionListener
Cette interface concerne des actions (avec la souris ou le clavier) sur un composant qui
les traduit en une commande de plus haut niveau, comme un choix dans une liste ou un menu,
une pression sur un bouton,
etc. L’interface se compose d’une seule méthode :
void actionPerformed(ActionEvent e) Appelée lorsqu’une action a été faite (ce que
action veut dire dépend du composant : presser un bouton, cocher ou décocher une case à
cocher, faire un choix dans un menu, etc.). On peut utiliser e.getActionCommand() pour
identifier l’action en question.
FocusListener
Les événements qui nous intéressent ici concernent l’acquisition ou la perte du focus par
un composant. Les méthodes de cette interface sont :
void focusGained(FocusEvent e) Appelée lorsque le composant en question acquiert le
focus (c’est-`a-dire que les actions sur le clavier lui seront désormais adressées).
void focusLost(FocusEvent e) Appelée lorsque le composant perd le focus (un autre
composant l’a pris).
KeyListener
Il se produit un événement clavier chaque fois qu’une touche est pressée ou relâchée.
Tous les composants peuvent être sources de tels événements, il suffit qu’ils aient le focus.
Cette interface se compose de trois méthodes :
void keyPressed(KeyEvent e) Appelée lorsqu’une touche a été pressée.
void keyReleased(KeyEvent e) Appelée lorsqu’une touche a été relâchée.
void keyTyped(KeyEvent e) Appelée lorsqu’un caractère a été saisi au clavier.
Les événements keyPressed et keyReleased sont de bas niveau. Chacun correspond `a une
touche unique, et fournit un code numérique (le code de touche virtuelle, ou VK code). En
particulier, keyPressed est le seul moyen de détecter la pression d’une touche ne produisant
pas de caractère (comme «Shift», «Ctrl »,etc.).
L’événement keyTyped, au contraire, est assez élaboré, puisqu’il est capable d’agréger
plusieurs touches pressées ensemble pour former un unique caractère : A majuscule, Control-C,
etc.
MouseListener
L’interface MouseListener concerne les événements isolés générés à l’aide de la souris.
Les méthodes de cette interface sont :
Autres interfaces
Les autres interfaces sont
MouseMotionListener : Cette interface concerne les mouvements de la souris.
WindowListener : Les événements que cette interface concerne sont les actions sur une
fenêtre : ouverture et fermeture et, dans le cas d’un cadre ou d’un dialogue, les actions sur les
éléments de la barre de titre. Ce qui donne les méthodes :
Consulter la documentation pour plus amples informations
Exemple :
class Chaines{
public static void main(String [] arg){
String a="Coucou";
String b=new String(", c’est moi !\n");
String c=a+b;
System.out.println(c);
System.out.println("longueur de a : "+a.length()); //6
System.out.println("caractere en position 2 : "+a.charAt(2)); //u
System.out.println("a est Coucou : "+a.equals("Coucou")); //true
System.out.println("a est b : "+a.equals(b)); //false
System.out.println("position de o dans a? "+a.indexOf(’o’)); //1
System.out.println("position du dernier o dans a? "+a.lastIndexOf(’o’)); //4
IX La classe java.lang.Math
C’est la bibliothèque mathématique de Java. Toutes ses méthodes sont publiques et
statiques. Voici quelques méthodes des plus utilisées.
public static final double E
public static final double PI
public static native double sin(double a)
public static native double cos(double a)
public static native double tan(double a)
public static native double asin(double a)
public static native double acos(double a)
public static native double atan(double a)
public static native double exp(double a)
public static native double log(double a)
public static native double sqrt(double a)
public static native double ceil(double a) // partie entiere sup
public static native double floor(double a) // partie entiere inf
public static native double pow(double a,double b) Throws: ArithmeticException
// a puissance b
public static int round(float a)
public static synchronized double random()
public static int abs(int a)
....... et les surcharges de abs .......
public static int max(int a,int b)
....... et les surcharges de max .......
public static int min(int a,int b)
....... et les surcharges de min .......
Exemple
import java.util.*;
import java.text.SimpleDateFormat;