0% ont trouvé ce document utile (0 vote)
310 vues193 pages

Cours Java

Transféré par

FAMFA ILYASSE
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
310 vues193 pages

Cours Java

Transféré par

FAMFA ILYASSE
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
Vous êtes sur la page 1/ 193

JAVA

Abdellah EZZATI
Introduction & Historique
→ Java trouve ses origines dans les années 1990. Les premières
versions se java datent 1995.

→ Java est développé par Sun MicroSystems. Il est fortement


inspiré des langages C et C++.

→Java est multi plates-formes : les programmes tournent sans


modification sur :Windows, Unix et Mac os. Portable grâce à
l’exécution par une machine virtuelle.

→ Java est presque un pure langage Orienté Objet:


• Un programme Java est constitué uniquement de classes
• Les types primitifs : int, float… qui ne sont pas des objets
JAVA 2
Introduction & Historique
→ Java est doté, en standard, de bibliothèques de classes
comprenant la gestion des interfaces graphiques (fenêtres,
boites de dialogue,menus, graphisme), la programmation
multi-threads (multitâches), la gestion des exceptions, les
accès aux fichiers et au réseau …

→ Contrairement au C/C++, le compilateur Java ne génère pas


de fichier exécutable. Il crée pour chacune des classes
(tp.java) d'un fichier Java un fichier .class (tp.class) qui sera
interprété par la Machine Virtuelle Java.

→ Ensemble d’outils (java, javac, jdb, javadoc, jar…)

JAVA 3
Introduction & Historique
→ En Java, tout se trouve dans une classe. Il ne peut y avoir de
déclarations ou de code en dehors du corps d'une classe.
→ La classe elle même ne contient pas directement du code.
Elle contient des déclarations de variables globales, que l'on
appelle des «attributs» et des méthodes.
→ Le code se trouve exclusivement dans le corps des méthodes,
mais ces dernières peuvent aussi contenir des déclarations de
variables locales (visibles uniquement dans le corps de la
méthode).
→ Java développe deux genres de programmes :
• Les applications (programmes ou logiciels classiques).
• Les applets qui sont des programmes java insérés dans un
document HTML.
JAVA 4
Introduction & Historique
→ JRE: Java Runtime Environement. Désigne la machine
virtuelle et l'ensemble des outils nécessaires pour exécuter
une application Java sur votr machine.
→ JDK: Java Development Kit. Ancien terme SDK.
→ SDK: Standard Development Kit➔L’ensemble d’outils
nécessaires au développeur Java. Celui-ci contient:
➔JRE
➔Les bibliothèques de développement
➔Le compilateur
→ IDE:
➔Eclipse ➔ Netbeans
➔Jbuilder ➔ IntelliJ
JAVA 5
Mon premier programme en Java
Soit le programme suivant qui affiche à l’écran :
Bonjour c’est mon premier programme en Java

JAVA 6
Mon premier programme en Java
→Un programme autonome destiné à être exécuté doit contenir
une méthode particulière nommée main() définie de la
manière suivante:
public static void main(String args[]) {
/* corps de la méthode main */
}
→Le paramètre args de la méthode main() est un tableau
d’objets de type String. Il n’est pas utilisé mais, il est exigé
par le compilateur Java.
→La classe contenant la méthode main() doit obligatoirement
être public afin que la machine virtuelle y accès. Notre
premier exemple TP1 est réduit à la définition d’une
méthode main().
JAVA 7
Mon premier programme en Java
→Un fichier source peut contenir plusieurs classes mais une
seule doit être public (Dans notre premier programme par
exemple TP1 est public).

→Le nom du fichier source est identique au nom de la classe


publique qu'il contient, suivi du suffixe .java.

→ Dans l’exemple : TP1.java

JAVA 8
Compilation & Exécution
La compilation d’un programme Java ne traduit pas
directement le code source en fichier exécutable. Elle traduit
d’abord le code source en un code intermédiaire appelé «
bytecode ». C’est le bytecode qui sera ensuite exécuté par
une machine virtuelle (JVM ; Java Virtual Machine). Ceci
permet de rendre le code indépendant de la machine qui va
exécuter le programme.

JAVA 9
Java : Eléments de bases
→ Les identificateurs commencent par une lettre ou par _
→ Les mots-clés et les signes (-, +, @, …) sont interdit dans les
identificateurs que soit des attributs ou des méthodes.
→ Un identificateur ne commence jamais avec un chiffre.
→ Java distingue entre minuscules et majuscules
→ Les instructions terminent par un point-virgule ;
→ Les blocs sont délimités par un couple d'accolades {...}
→ Les caractères // définissent un commentaire s’étend
jusqu’au de fin de ligne.
→ /* commentaires sur plusieurs lignes */

JAVA 10
Identificateurs et mots réservés
abstract continue for new switch
assert default goto package synchronized
boolean do if private this
break double implements protected throw

byte else import public throws


case enum instanceof return transient
catch extends int short try

char final interface static void

class finally long strictfp volatile


const* float native super while

JAVA 11
Eléments de bases : types entiers

Type Taille (oct) Valeur minimale Valeur maximale

byte 1 -128 127

short 2 -32 786 32 767

int 4 -2 147 483 648 2 147 483 647

long 8 -923372036854775808 -923372036854775807

JAVA 12
Types entiers : Exemple

JAVA 13
Eléments de bases : types réels

Type Taille(oct) Précision Valeur minimale Valeur maximale

float 4 7 -1.40239846E-45 3.40282347E38

double 8 15 4.9406564584124654E-324 1.797693134862316E308

f ou d après une valeur numérique spécifier le type.


double a = 3.14d ;
double b = 3.14f ;

JAVA 14
Types réels : Exemple

JAVA 15
Eléments de bases : types caractère
Notation Code Abréviation usuelle Signification
Unicode
\b 0008 BS(BackSpace) Retour arrière
\t 0009 HT(Horizontal Tabulation) Tabulation horizontale
\n 000a LF(LineFeed) Saut de ligne
\f 000c FF(FormFeed) Saut de page
\r 000d CR(CariageReturn) Retour chariot
\’’ 0022
\’ 0027
\\ 005c

Java permet de manipuler des caractères


Java représente les caractères sur 2 octets

JAVA 16
Types caractères: Exemple

JAVA 17
Constante et mot clé final
Java permet de déclarer des variables et des expression dont la
valeur est inchangeable en utilisant le mot clé final.

JAVA 18
Lecture au clavier
L’affichage (Java) ne pose pas de problème on peut toujours
utiliser des instructions telleques :
System.out.println(" valeur = " + a+b); //Concaténation
Ou bien:
System.out.print(" valeur = " + (a+b)); //Calcul
Mais pour la lecture java ne prévoit rien. Mais, il existe deux
solutions (voir www.editions-eyrolles.com) :
➔Clavier.java
➔ Scanner
JAVA 19
Clavier.java
import java.io.* ;
public class Clavier
{ public static String lireString () // lecture d’une chaine
{ String ligne_lue = null ;
try{InputStreamReader lecteur = new InputStreamReader(System.in);
BufferedReader entree = new BufferedReader (lecteur) ;
ligne_lue = entree.readLine() ; }
catch (IOException err)
{ System.exit(0) ; } return ligne_lue ; }
public static float lireFloat () // lecture d’un float
{ float x=0 ; // valeur a lire
try { String ligne_lue = lireString() ;
x = Float.parseFloat(ligne_lue) ; }
catch (NumberFormatException err)
{ System.out.println ("*** Erreur de donnee ***") ;
System.exit(0) ; }
return x ;
}

JAVA 20
Clavier.java (suite)
public static double lireDouble () // lecture d’un double
{ double x=0 ; // valeur a lire
try { String ligne_lue = lireString() ;
x = Double.parseDouble(ligne_lue) ; }
catch (NumberFormatException err)
{ System.out.println ("*** Erreur de donnee ***") ;
System.exit(0) ; }
return x ; }
public static int lireInt () // lecture d’un int
{ int n=0 ; // valeur a lire
try { String ligne_lue = lireString() ;
n = Integer.parseInt(ligne_lue) ; }
catch (NumberFormatException err)
{ System.out.println ("*** Erreur de donnee ***") ;
System.exit(0) ; }
return n ; }
}

JAVA 21
Exemple de lecture (Clavier)

JAVA 22
JAVA 23
Exemple de lecture (Scanner)

JAVA 24
Les opérateurs arithmétiques
symbole description Nombre exemple
d’opérandes
– soustraction 2 a–b
+ addition 2 a+ b
* multiplication 2 a*b
/ div ision 2 a /b
% modulo 2 a%b

En Java l’opérateur d’exponentiation n’existe pas : pour calculer a


pow b en utilise la fonction prédéfinie :
Math.pow(a, b)
Opposé de a est –a.
JAVA 25
JAVA 26
Les opérateurs relationnelles

Opérateur Signification
< Inférieur à

<= inférieur ou égale à

> Supérieur à
>= Supérieur ou égale à

== Égal à

!= différent

JAVA 27
Les opérateurs logiques

Opérateur Signification

! Négation

& Et

^ ou exclusif

| Ou inclusif
&& Et avec court circuit

|| Ou inclusif avec court circuit

JAVA 28
Les opérateurs d’incrémentation / décrémentation

symbole description Nb opérande exemple


++ préincrémentation 1 ++i
++ postincrémentation 1 i+ +
-- prédécrémentation 1 -- i
-- postdécrémentation 1 i --

JAVA 29
Les opérateurs d’affectation élargie

symbole exemple symbole


+= i+ = 4 ^=
-= i-= 4 &=
*= i*= 4 < < = (décalage)
>>=
/= i/= 4 > > > = (décalage)

JAVA 30
Instructions de contrôle
Instruction if

Syntaxe:
if (condition)
bloc_instruction1
else
bloc_instruction2

JAVA 31
Instructions de contrôle
instruction switch
Syntaxe:
switch(expression)
{case constante1 : bloc d’instructions1; break;
case constante2 : bloc d’instructions2; break;
………………………… ………
case constanteN : bloc d’instructionsN; break;
default: bloc d’instructions;
}
JAVA 32
Instructions de contrôle
instruction for
Syntaxe:
for(initialisation; condition; incrémentation)
{ bloc d’instructions;}

Exemple:

for(i=1;i<=3;i++)
system.out.println(i+’’, ’’);

Résultat: 1, 2, 3,

JAVA 33
Instructions de contrôle
instruction while
Syntaxe:
while (condition)
{ bloc d’instructions; }

Exemple
i=1;
while(i<=3)
{ system.out.println(i+’’, ’’);
i++; }

Résultat: 1, 2, 3,

JAVA 34
Instructions de contrôle
instruction do … while
Syntaxe:
do { bloc d’ instructions; } while (condition);
Exemple
i=1;
do
{system.out.println(i+’’, ’’);
i++;
} while(i<=3);

Résultat: 1, 2, 3,

JAVA 35
Exercice

Calcul de N! avec N lu au clavier


1- utiliser for
2- utiliser while
3- utiliser do … while

JAVA 36
Instruction de branchement inconditionnel
Dans une boucle ( while, do…while, for) break sert à interrompre
l’exécution de cette boucle.

JAVA 37
Instruction de branchement inconditionnel
L’instruction continue permet de sauter des instructions en
changeant directement le conteur de la boucle.

JAVA 38
Notion de Classe & d’Objet

JAVA 39
JAVA 40
Attributs →Variable global de la classe
→Accessible depuis toutes les méthodes de la classe
Méthode → Les méthodes ne peuvent être créer que comme des
composante d’une classe.
→ Une méthode ne peut être appelée que pour un objet.
→ L’appel d’une méthode pour un objet se réalise en
nommant l’objet suivi d’un point suivi du nom de la méthode et de
sa liste d’arguments:
nomObjet.nomMethode(arg1, arg2, ….)

JAVA 41
Objet → il n’existe pas de variable de type objet
→ Voiture BM=new Voiture(2, true, 160.0f)
→ Toute chose est un objet.
→ Un objet est une variable améliorée

Classe → Des objets semblables, leur état durant l'exécution du


programme mis à part, sont regroupés ensemble dans des «
classes d'objets ».
→Le mot clef class est utilisé dans la plupart des langages
orienté objet.
JAVA 42
Classe → On utilise les classes exactement de la même manière que
les types de données prédéfinis.
→ On peut créer des variables d’une classe (appelés objets
ou instances) et les manipuler comme des variables d’un type
prédéfini.
→ Les objets d'une même classe partagent des caractéristiques
communes, mais chaque objet a son propre état.

JAVA 43
Constructeurs
→ On peut garantir l’initialisation d’un objet grâce à une méthode
spéciale appelée constructeur qui permet d’automatiser le
mécanisme d’initialisation d’un objet.
→Un constructeur est une méthode appelée au moment de la création
de l’objet.
→La création d’un objet passe par l’application de l’opérateur new sur
les constructeurs de la classe.
Exemple:
Voiture BM=new Voiture(2, false,44.50f);
Voiture Ford;
Ford = new Voiture(3, true, 55.88f);
JAVA 44
Exemple : Constructeurs

JAVA 45
Exemple : Constructeurs

JAVA 46
Exemple : Constructeurs

JAVA 47
Le destructeur
Un destructeur (et un seul) peut être défini, pour être utilisé lors de la
destruction de l'objet. Celui-ci doit forcément se nommer finalize,
il ne prend aucun paramètre et ne renvoie aucun type (void).
Exemple :

JAVA 48
Les modificateurs
Les modificateurs sont des mots-clé spéciaux du langage qui modifient
la définition et le comportement d’une classe, d’une méthode ou
d’une variable. On peut les classer en quatre grandes catégories :
→ les modificateurs permettant de contrôler l’accès à une classe, une
méthode ou une variable : public, private et protected ;
→ le modificateur static utilisé pour les variables et les méthodes de
classe ;
→ le modificateur final permettant de « figer » l’implémentation d’une
classe, d’une méthode ou d’une variable ;
→ le modificateur abstract pour la création de classes ou de
méthodes abstraites.

JAVA 49
Les modificateurs
Il existe d’autres modificateurs que nous allons voir plus tard tels que :
synchronized et volatile (utilisés pour les threads) et native (utilisé
pour la création de méthodes natives).

public → On utilise le mot clé public pour signifier qu’une classe,


une méthode ou une variable sont accessibles n’importe où dans «
l’univers des classes Java » (même dans d’autres packages).
→ Le mot-clé public est le mode par défaut.

JAVA 50
Les modificateurs
private → personne ne peut accéder à ces définitions à part les
méthodes interne (Il limite la visibilité des méthodes et des variables
d’instance à la classe dans laquelle elles sont définies)
→ les sous-classes ne peuvent hériter ni de variables privées, ni
de méthodes privées.

Protected → forme de protection entre classe et sous-classes.


→les méthodes et les variables d’une classe donnée restent
accessibles à toute classe du même package (différence avec C++),
mais ne sont accessibles, en dehors du package, qu‘aux sous-classes
de la classe à laquelle elles appartiennent.

JAVA 51
Les modificateurs
static → est utilisé pour définir des variables ou des méthodes de
classe. Le mot-clé static indique que l’élément est stocké dans la
classe.
final → s’applique aux classes, aux méthodes et aux variables :
• empêche le « sous-classement » de la classe ;
• final signifie que la méthode ne peut pas être redéfinie par les sous-
classes ;
• final indique que la « variable » est constante.
modificateur class NomClass [extends ClassMere] [implemenents
Interfaces]
{// champs et les méthodes }
JAVA 52
Imbrication de classe
Dans java une classe est dite interne lorsque sa définition est située à
l’intérieur de la définition d’une autre classe.
Exemple:

JAVA 53
JAVA 54
Auto-réference : le mot clé this
→ L’objet « courant » est désigné par le mot clé this.

→ permet de désigner l’objet dans lequel on se trouve.

→ désigne une référence particulière qui est un membre caché


utilité de l’objet « courant ».

→ Rendre explicite l’accès aux propres attributs et méthodes


définies dans la classe.

JAVA 55
Auto-réference : le mot clé this → Exemple

JAVA 56
Tableaux
→ Les tableaux sont considérés comme des objets
→ Les éléments d’un tableau peuvent être
➔ Des variables d’un type primitif (int, char, float, double,…)
➔ Des références sur des objets
Création
• Déclaration
• Dimensionnement
• Initialisation
Attention: En java il n'est pas possible de définir des tableaux de taille
statique à la déclaration: float[7] Tab; //erreur de compilation
JAVA 57
Tableaux : Exemple 1

JAVA 58
Tableaux : Exemple 2

JAVA 59
Tableaux à plusieurs indices
→ Tableaux dont les éléments sont eux-mêmes des tableaux
→ Deux cas:
➔ Tableau rectangulaire
➔ Tableau non rectangulaire

Exemple :

JAVA 60
Tableaux à plusieurs indices

JAVA 61
Méthodes
main→ la première méthode exécutée par une application Java lors de
son lancement.
syntaxe→ public static void main (String args[ ]) { ... }
Une application Java peut avoir des arguments, introduits après le nom
de l’application.
La méthode main doit avoir comme paramètres la chaîne
" String [ ] args ", nécessaire pour stocker les arguments introduits.
"args.length" permet de déterminer le nombre d’arguments introduits
après le nom de l’application.

JAVA 62
Méthodes : main

JAVA 63
Méthodes
→Les méthodes implémentent les traitements de la classe
→ N’importe quelle exécution fait intervenir des méthodes
→ Une méthode a deux parties : déclaration & corps
→ Le type retourné peut être élémentaire ou un objet. Si la
méthode ne retourne rien on utilise void.

syntaxe :
modificateurs type_retourné nom_méthode (arg1, ... )
{ // définition des variables locales et du bloc d'instructions }

JAVA 64
Méthodes : Exemple

JAVA 65
Méthodes : surcharge
→La surcharge d'une méthode permet de définir plusieurs fois
une même méthode avec des arguments différents.
→Le compilateur choisi la méthode qui doit être appelée en
fonction du nombre et du type des arguments.
→La signature d'une méthode comprend le nom de la classe, le
nom de la méthode, le nombre et les types des paramètres.
→ Il est possible de donner le même nom à deux méthodes
différentes à condition que les signatures de ces deux
méthodes soient différentes.

JAVA 66
Méthodes : surcharge

JAVA 67
Les paquetages
→ Les classes Java sont regroupées en paquetages (packages en anglais)
comparables aux «bibliothèques» des autres langages comme le
langage C++, ...
→ L’instruction : import MesClasses ; permet l’utilisation de toutes les
classes dont les paquetage MesClasses est engendré.
Exemple:
import nomClasse; // Importe une classe
import nomPack.nomClasse; // Importe une classe de nomPack
import nomPack.*; // Importe toutes les classes de nomPack
→ Le package par défaut : c’est le package qui n’a pas de nom, et auquel
appartiennent toutes les classes d’un même répertoire.
JAVA 68
Les paquetages
Quelques paquetages du SDK (Software Development Kit)
→ java.lang : classes de base de Java
→ java.util : utilitaires
→ java.io : entrées-sorties
→ java.awt : interface graphique
→ javax.swing : interface graphique avancée
→ java.applet : applets
→ java.net : réseau
→ java.rmi : distribution des objets

JAVA 69
Les paquetages : créer un package
→ Pour créer un package, il suffit de commencer le fichier source
contenant les classes à regrouper par l'instruction package suivi du
nom que l'on désire donner au package.

→ Un package portant le nom PaquetageA doit être stocké dans un


répertoire de nom PaquetageA.

→ Par défaut le compilateur (ainsi que la machine virtuelle) recherchent


les classes dans le répertoire courant et le répertoire des classes
standards.

JAVA 70
JAVA 71
HÉRITAGE

→ La notion d’héritage constitue l’un des fondements de la


programmation OO.
→L'héritage est un mécanisme qui permet à une classe d'hériter
l'ensemble du comportement et des attributs d'une autre classe.
→Permet de définir une nouvelle classe, dite classe dérivée, à partir
d’une classe existante dite classe de base (super classe).
→La classe dérivé
– se comporte comme la classe de base mais avec quelques
différences.
– on a seulement besoin du code compilé de la clase de base.

JAVA 72
HÉRITAGE
On peut par exemple:
– ajouter de nouvelles méthodes
– adapter (modifier) certaines méthodes
Syntaxe:
class <ClasseDerivee> extends <ClasseDeBase>
Interprétation:
→Permet de définir un lien d'héritage entre deux classes:
La classe <ClasseDeBase> est le nom de la classe de base. Elle
s'appelle une classe mère, une classe parente ou une super-classe.
La classe <ClasseDerivee> est le nom de la classe dérivée
→Par défaut il n’y a pas de extends dans la définition d’une classe:
toutes les classes héritent de la classe Object.
JAVA 73
JAVA 74
HÉRITAGE : CONSTRUCTEURS
→ Possibilité comme les méthodes de réutiliser le code des
constructeurs de la super-classe.

→L’appel au constructeur de la super-classe doit se faire absolument en


première instruction.

→La première instruction d’un constructeur peut être un appel à un


constructeur de la classe mère : super(...) ou à un autre constructeur
de la classe : this(...)

→ Interdit de placer this() ou super() ailleurs qu’en première


instruction d’un constructeur.

JAVA 75
HÉRITAGE : CONSTRUCTEURS

JAVA 76
HÉRITAGE : CONSTRUCTEURS

JAVA 77
HÉRITAGE
→L'héritage successif de classes permet de définir une hiérarchie de
classe qui se compose de super classes et de sous classes.
→Une classe ne peut avoir qu'une seule classe mère : il n'y a pas
d'héritage multiple en java.

→Object est la classe parente de toutes les classes en java

→Toutes les variables et les méthodes contenues dans Object sont


accessibles à partir de n'importe quelle classe car par héritage
successif toutes les classes héritent de la classe Object.

→ Java ne permet pas l’héritage multiple: chaque classe a une et une


seule classe mère dont elle hérite les variables et les méthodes.
JAVA 78
Polymorphisme

Soit B une classe qui hérite d’une autre classe A.


f( ) une méthode de A qui redéfinie dans B.
g( ) une méthode de A.
h( ) une méthode de B.

JAVA 79
Polymorphisme

JAVA 80
Polymorphisme
→L’appel se fond sur le type effectif de l’objet référencé par ab au
moment de l’appel et non sur le type de la variable ab.
→Il faut noter que la même écriture a.f(); peut correspondre à des
appels différents de la méthode f(). Ceci est réalisé grâce au
polymorphisme.
→Le Polymorphisme veut dire que le même service peut avoir un
comportement différent suivant la classe dans laquelle il est utilisé.
C’est un concept fondamental de la programmation objet,
indispensable pour une utilisation efficace de l’héritage.
→ Pour l’objet ab si f( ) est redéfinie dans B, alors c’est cette méthode
qui sera exécutée sinon, la recherche de f() se poursuit dans la classe
mère de B, puis dans la classe mère de cette classe mère, et ainsi de
suite, jusqu’à trouver f() qui sera alors exécutée.
JAVA 81
Polymorphisme
Le polymorphisme permet d’éviter les codes qui comportent de
nombreux embranchements et tests.

Exemple :

Considérons une classe TerreVéhicule. Supposons que les classes


Voiture et Camion héritent de la super classe TerreVéhicule. Dans
un tableau hétérogène, on ranges des objets de type Voiture ,
Camion . Ensuite on affiche le contenu du tableau :

JAVA 82
JAVA 83
Polymorphisme
instanceof: Voiture instanceof Véhicule retourne true

Inconvénients :
→Si on veut rajouter un Fourgon, on est obliger de:
changer dans le code source aux niveaux définition de la classe
Véhicule (rajouter la méthode public void appelfourgon() {})
→ En exploitant le polymorphisme, on peut :
➔Eviter les tests
➔Rendre le code extensible
Exemple:

JAVA 84
JAVA 85
Cast (transtypage)
→Le « cast » est le fait de forcer le compilateur à considérer un objet
comme étant d’un type qui n’est pas le type déclaré ou réel de l’objet.
→Les seuls casts autorisés entre classes sont les casts entre classe mère
et classes filles.

➔UpCast : classe fille → classe mère ➔implicite


➔DownCast : classe mère → classe fille➔ explicite
Toujours accepté par le compilateur, mais peut provoquer une erreur
à l’exécution ;

JAVA 86
Cast (transtypage)

JAVA 87
Classe et méthodes abstraites
→Une méthode est dite abstraite si on la déclare sans donner son
implémentation: on ne donne que le type de la valeur de retour et la
signature (l’entête de la méthode).
→Les méthodes abstraite sont déclarée avec le mot clè abstract.

→ La méthode abstraite sera implémentée par les classes filles.

→Une classe doit être déclarée abstraite si elle contient une méthode
abstraite : public abstract class NomClasse{...

→Il est interdit de créer une instance d’une classe abstraite.

JAVA 88
Classe abstraites : Intérêt

On peut placer dans une classe abstraite toutes les fonctionnalités


dont on souhaite disposer pour toute ses descendantes, sous forme :

➔d’ implémentation complète de méthodes (non abstraites) et de


champs lorsqu’ils sont communs à toutes ses descendantes.

➔d’interface de méthodes abstraites dont on est alors sûr qu’elles


existeront dans toute classe dérivée instanciable.

JAVA 89
Classe abstraites : Exemple
Soient Etudiant, Mater, Licence et Stocker telles que:
Stocker des noms d’Etudiant de deux niveaux (Mater, Licence) dans
une liste puis les afficher.

JAVA 90
JAVA 91
JAVA 92
JAVA 93
JAVA 94
Interfaces
→Une interface est une "classe" purement abstraite dont toutes les
méthodes sont abstraites et publiques.

→Une interface ne possède pas d’attribut mais elle peut posséder des
constantes.

→Une interface ne peut contenir que des entêtes de méthodes.

→Une classe peut implémentée plusieurs interfaces.

→Les interfaces pourront se dériver.

JAVA 95
Interfaces
Syntaxe et défintion:
public interface Interface1 { ... }
public interface Interface2 { ... }
→Dans la définition d’une classe, on peut préciser qu’elle implémente
une ou plusieurs interfaces donnée(s) en utilisant une fois le mot clé
implements
public class NomClasses implements Interface1,Interface2, ... {
... }
→Une classe hérite d’une autre classe peut également implémenter une
ou plusieurs interfaces
public class NomClasses extends SuperClasse implements Interface1,
Interface1 ... { ... }
JAVA 96
Interfaces : Exemple 1

JAVA 97
Interfaces : Exemple 2

JAVA 98
Les chaînes de caractères

JAVA 99
Les chaînes de caractères
→Comparaisons de chaînes :

➔ == et !=
➔ equals( )
➔ equalsIgnoreCase( ) // sans distinguer les majuscules des minuscules
➔ compareTo( ) // comparaisons lexicographiques

JAVA 100
Les chaînes de caractères

JAVA 101
Les chaînes de caractères
→Modifications de chaînes

➔ toLowerCase( )
➔ toUpperCase( )
➔ replace( ) //remplace toutes les occurrences d’un caractère donné par un autre.
➔ substring( ) //créer une nouvelle chaîne en extrayant de la chaîne courante
➔ trim( ) //crée une nouvelle chaîne en supprimant les éventuels séparateurs

JAVA 102
Les chaînes de caractères

JAVA 103
Les chaînes de caractères

JAVA 104
Les chaînes de caractères
→Les String Java ne peuvent pas être considérées comme des tableaux
de caractères
→ Pour convertir une chaîne en un tableau de caractères, on doit
utiliser la méthode toCharArray
String ch= "settat" ; char [ ] tab1DEcarc; char [ ] tab2DEcarc;
tab1DEcarc = ch.toCharArray( ) ;
tab2DEcarc = "settat".toCharArray( );
→Conversion de type:
➔String.valueOf( ) ➔ Long.parseLong( )
➔Integer.parseInt( ) ➔ Float.parseFloat( )
➔Byte.parseByte( ) ➔ Double.parseDouble( )
➔ Short.parseShort( )
JAVA 105
Les chaînes de caractères

JAVA 106
Gestion des exceptions
→Une exception est un signal indiquant que quelque chose
d’exceptionnelle (comme une erreur, disque plein, division par zéro,
…) s’est produit.
→Elle interrompt le flot d’exécution normal du programme
→Plutôt que de compliquer le code du traitement normal, on traite les
conditions anormales à part.
→Le traitement « normal » apparaît ainsi plus simple et plus lisible.
→Résoudre les problèmes d’exception soit :
➔En envoyant un message
➔ Mettre fin au programme
➔ Revenir en arrière
➔…
JAVA 107
Gestion des exceptions
→Toute exception en Java est un objet instancier d’une sous classe de
la classe Exception
→ Arbre des exceptions

JAVA 108
Gestion des exceptions
→Quelques exceptions prédéfinies :

➔ Division par zéro : ArithmeticException


➔ Référence nulle : NullPointerException
➔ Tentative de forçage de type illégale : ClassCastException
➔ Tableau de taille gative : NegativeArraySizeException
„„➔Dépassement de dimension: ArrayIndexOutOfBoundsException
➔…

JAVA 109
Gestion des exceptions : try et catch

JAVA 110
Gestion des exceptions
Exceptions de type RuntimeException

→Les exceptions de type RuntimeException correspondent à des


erreurs qui peuvent survenir dans toutes les portions du codes:
➔ ArithmeticException : division par zéro (entiers), etc ....
➔ IndexOutOfBoundsException : dépassement d'indice tableau.
➔ NullPointerException : référence null alors qu'on attendait
une référence vers une instance.
➔…

Exemple :

JAVA 111
JAVA 112
Gestion des exceptions : contrôlées
→Pour définir une nouvelle exception, on crée une nouvelle classe sous
la forme suivante :
class NomDeClassEception extends ExceptionDejaDefinie { }
→Lorsque l’on veut lancer une exception, on utilise le mot clé throw
suivi de l’exception à lancer : throw new DivZero( );
→ La clause try s'applique à un bloc d'instructions correspondant au
fonctionnement normal mais pouvant générer des erreurs.
→La clause catch s'applique à un bloc d'instructions dé nissant le
traitement d'un type d'erreur. Ce traitement sera lancé sur une
instance de la classe d'exception passée en paramètre.

JAVA 113
Gestion des exceptions : contrôlées
Le JDK définit de nombreuses exceptions :
→IEOFException : fin de fichier.
→FileNotFoundException : erreur dans l'ouverture d'un fichier.
→ClassNotFoundException : erreur dans le chargement d'une
classe.
→...
Toute exception contrôlée, du JDK, pouvant être émise dans une
méthode doit être :
→soit levée dans cette méthode. Elle est alors lancée dans un
bloc try auquel est associé un catch lui correspondant.
→soit être indiquées dans le prototype de la méthode à l'aide du
mot clé throws.
JAVA 114
Gestion des exceptions : Exemple 1

JAVA 115
Gestion des exceptions : Exemple 2

JAVA 116
Gestion des exceptions : personnalisées
→Les exceptions personnalisées sont des sous-classe de la classe
Exception.
Exemple:

JAVA 117
Gestion des exceptions : personnalisées

JAVA 118
Gestion des exceptions : personnalisées

JAVA 119
Gestion des exceptions : finally
→ La clause finally dé nit un bloc d'instruction qui sera exécuté
même si une exception est lancée dans le bloc d'essai. Elle permet
de forcer la bonne terminaison d'un traitement en présence d'erreur.

→ Un blocs finally est exécutée quelle que soit le résultat du bloc try.

→ finally pour ce qui s’exécute dans tous les cas

Exemple :

JAVA 120
Gestion des exceptions : finally

JAVA 121
Gestion des exceptions : finally

JAVA 122
Interface Graphique: awt & swing
→Java, permet de créer des interfaces graphiques homme machines
(IHM).

→Tous les outils nécessaires pour réaliser des interfaces graphiques


existent dans les deux paquetages suivants : java.awt et javax.swing.

→Les interfaces (IHM) font intervenir de nos jours des éléments que
l'on retrouve dans la majorité des systèmes d'exploitation : les fenêtres,
les listes de choix, les menus déroulants, les boutons, les boutons radios,
etc...

awt =1ère boite à outil de java


awt: aspect change d'une plateforme à une autre.
swing = extension
swing : faire que tout fonctionne de manière identique partout.
JAVA 123
Interface Graphique: awt & swing
→awt (Abstract Window Toolkit) (java.awt):

➔C'est pour construire des IHM que le package awt est inclus
dans toutes les versions de Java.
➔awt s'appuie sur les ressources systèmes

→Catégories de classes :

➔graphique (couleurs, fontes, formes, …)


➔composants (Component) (fenêtres, boutons, menus, …)
➔gestionnaires (position des composants)

JAVA 124
awt

JAVA 125
swing

JAVA 126
Mon premier exemple

JAVA 127
Interface Graphique: Structure

→conteneurs: Japplet, JFrame, Jpanel, JSplitPane, JTabbedPane,...

→composants « atomiques »: JButton, Jlist, JPopupMenu

→gestionnaire de disposition : LayoutManager

→interaction avec l’utilisateur : gestionnaire d’évènements

→Boite de dialogue

JAVA 128
Interface Graphique: conteneurs

JFrame

→Dans une application Swing, on instanciera un cadre JFrame qui


permet d’avoir une fenêtre principale.

→Une JFrame est une fenêtre avec un titre et une bordure.

→La JFrame est un composant qui contient tous les autres.

→La plupart des composants graphiques ont une taille par défaut, qui
peut d'ailleurs être nulle.

JAVA 129
Interface Graphique: conteneurs

JAVA 130
Interface Graphique: conteneurs
→JFrame cadre = new javax.swing.JFrame(" Deuxième exemple ");
on instancie ici la classe JFrame en passant au constructeur une chaîne
de caractères pour le titre de la fenêtre.
→panneau.setPreferredSize(new Dimension(324, 240));
le panneau ait 324pixels de largeur et 240 pixels de hauteur.
→panneau.setBackground(Color.YELLOW);
le panneau ait la couleur jaune pour couleur de fond.
→cadre.setContentPane(panneau); le containeur de la fenêtre soit un
panneau.
→cadre.setLocation(500, 500); : on positionne le cadre.
→cadre.pack(); : la méthode pack: calcule la dimension de la fenêtre en
fonction de ce qui est mis à l'intérieur.
→cadre.setVisible(true); par défaut, une fenêtre est invisible ; on demande
ici à ce que la fenêtre soit visible
JAVA 131
Interface Graphique: conteneurs
→JLabel label = new JLabel("Bonjour"); on
instancie ici un label en
passant au constructeur une chaîne de caractères
→ cadre.add(label); l’ajout de label
→cadre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
par défaut, lorsqu'on ferme une fenêtre, cela ne termine pas
l'application. On demande par cette instruction que
l'application se termine quand on ferme la fenêtre.

JAVA 132
Interface Graphique: conteneurs

JAVA 133
Interface Graphique: conteneurs

JAVA 134
Interface Graphique: conteneurs
JPanel

→ Un JPanel est un conteneur élémentaire destiné à contenir d'autres


composants. Il est muni d'un gestionnaire de placement

→ Il organise les éléments au fur et à mesure qu'ils sont intégrés à


l'interface, de gauche à droite, à la manière des mots d'une phrase.

JAVA 135
Interface Graphique: conteneurs

JAVA 136
Interface Graphique: LES COMPOSANTS GRAPHIQUES

Les panneaux contiennent

→ des étiquettes (JLabel)


→un champ de texte (JTextField)
→une liste (JList) et une combobox (JComboBox)
→des boutons à cocher (JCheckBox)
→des bordures (TitledBorder)
→des boutons radio (JRadioButton)
→des boutons ordinaires (JButton)
→zone de saisie multilignes (JTextArea)
→ JScrollBar

JAVA 137
Interface Graphique: LES COMPOSANTS GRAPHIQUES
Jlabel :
Un Label affiche une seule ligne de texte (étiquette) non modifiable.
En général, les étiquettes ne traitent pas d'événements.

→Pour afficher un texte, on peut utiliser la méthode setText ou une version


surchargée du constructeur.

→Pour afficher une image, on doit utiliser un composant intermédiaire,


l’icone (ImageIcon).

→Le constructeur ImageIcon est capable de charger des images jpeg,


gif et png.

→Le constructeur de JLabel est surchargé pour accepter un objet


ImageIcon en paramètre.
JAVA 138
Interface Graphique: LES COMPOSANTS GRAPHIQUES
Jlabel :

Emplacement :

1. JLabel.BOTTOM
2. JLabel.CENTER
3. JLabel.LEFT
4. JLabel.RIGHT
5. JLabel.TOP

Exmple:

JAVA 139
Interface Graphique: LES COMPOSANTS GRAPHIQUES

JAVA 140
Interface Graphique: LES COMPOSANTS GRAPHIQUES
JTextField :

→Le champ de texte est un dispositif d'entrée de texte sur une seule ligne.
→Il est source d’ActionEvent
→On peut définir un champ de texte comme étant éditable ou non.

Méthodes :
void setText(String text)
String getText() pour mettre ou retirer du texte dans le TextField

Exemple:

JAVA 141
JAVA 142
Interface Graphique: LES COMPOSANTS GRAPHIQUES

JAVA 143
Interface Graphique: LES COMPOSANTS GRAPHIQUES
JList : Constructeurs :
JList() // modèle vide
JList(ListModel dataModel) // cas général
JList(Object[] listData) // tableau
JList(Vector listData) // vecteur

Création d’une liste à partir d’un tableau (liste non modifiable) :

String[] data = {"A", "B", "C", "D"};


JList liste = new JList(data);

Accès au modèle, donc au contenu:

for(int i = 0; i < list.getModel().getSize(); i++) {


System.out.println(list.getModel().getElementAt(i));
JAVA 144
Interface Graphique: LES COMPOSANTS GRAPHIQUES
La classe JComboBox permet la sélection d'une entrée parmis une séquence.
→Le composant est constitué de deux parties :
• un éditeur qui affiche la sélection courante et permet ou non d'entrée des
valeurs et
• une liste déroulante qui affiche les choix possibles.
→ Deux modes de fonctionnement différents :
• Non éditable : ComboBoxModel
• Editable : MutableComboBoxModel

Exemple:

JAVA 145
JAVA 146
Interface Graphique: LES COMPOSANTS GRAPHIQUES
JCheckBox :

→ boîte à cocher qui peut être sélectionnée ou non.


→Il est source d’ActionEvent
→On peut définir un champ de texte comme étant éditable ou non.
Méthodes :
La sélection ou la déselection est notifiée par un ItemEvent à un écouteur
implémentant l’interface ItemListener.

la méthode getStateChange() de ItemEvent retourne une constante :


ItemEvent.DESELECTED ou ItemEvent.SELECTED.

la méthode getItem() de ItemEvent renvoie la chaîne contenant l'étiquette de


la case à cocher considérée
Exemple:
JAVA 147
JAVA 148
Interface Graphique: LES COMPOSANTS GRAPHIQUES

JAVA 149
Interface Graphique: LES COMPOSANTS GRAPHIQUES
TitledBorder :

→Une bordure permettant l'inclusion d’une chaîne de caractères

Exemple:

JAVA 150
JAVA 151
Interface Graphique: LES COMPOSANTS GRAPHIQUES
JRadioButton :

→ possède des méthodes constructeurs dont les arguments et les


fonctionnalités sont les mêmes.

→Pour les organiser en groupe, créer une classe d’objet : ButtonGroup

Exemple:

JAVA 152
JAVA 153
Interface Graphique: LES COMPOSANTS GRAPHIQUES
JButton : Constructeurs :

JButton (String text);


JButton (ImageIcon picture);
JButton (String text, ImageIcon picture);

Méthodes :

void addActionListener (ActionListener object);


void setText (String text);
void setActionCommand (String cmd);
void setIcon (ImageIcon icon);
void requestFocus();

Exemple:
JAVA 154
JAVA 155
Interface Graphique: LES COMPOSANTS GRAPHIQUES

JAVA 156
Interface Graphique: LES COMPOSANTS GRAPHIQUES
JTextArea : zone de texte plusieurs lignes

Constructeurs.
JTextArea() Construit une nouvelle instance de JTextArea. JTextArea(int l, int
c) Construit une nouvelle instance de JTextArea, lignes l et c colonnes.
JTextArea(String texte) Construit un JTextArea avec un texte initial.
JTextArea(String texte, int l, int c)
Méthodes:
String getText() String getText(int d, int l)
String getSelectedText() void setText(String t)
void append(String t) void insert(String t, int pos)
void replaceRange(String t,int d,int f) int getColumns( )
void replaceSlection(String t) void setEditable(boolean)
Exemple:

JAVA 157
JAVA 158
JAVA 159
Interface Graphique: LES COMPOSANTS GRAPHIQUES
JScrollBar : barre de défilement

JAVA 160
JAVA 161
Interface Graphique: Menu
Menu :
Pour créer un menu déroulant, il y a essentiellement 3 opérations :
→création de la barre menu :
JMenuBar menuBar=new JMenuBar();
→création des menus :
JMenu couleur=new JMenu("couleur"); menuBar.add(couleur);
JMenu taille=new JMenu("taille"); menuBar.add(taille);
→création des options :
rouge=new JMenuItem("rouge");
rouge.addActionListener(this);couleur.add(rouge);
bleu=new JMenuItem("bleu");
bleu.addActionListener(this);couleur.add(bleu);
Naturellement, il faudra ajouter la barre des menus à la fenêtre, et adjoindre
aux diférentes options comme indiqué ci-dessus.
Exemple 1:

JAVA 162
JAVA 163
JAVA 164
Interface Graphique: Menu →Exemple 2

JAVA 165
JAVA 166
Interface Graphique: JFileChooser
Un JFileChooser permet de sélectionner un fichier en parcourant
l’arborescence du système de fichier.
Exemple :

JAVA 167
JAVA 168
Interface Graphique: JColorChooser
Un JColoChooser permet de choisir une couleur.
Exemple :

JAVA 169
JAVA 170
Interface Graphique: gestionnaire de disposition

→ Layout est une technique qui permet de placer des composants dans
un container.
→Layout place les composants les uns par rapport aux autres.
→Layout organise les composants lorsque la taille du container varie.
→Layout gère le positionnement.

Gestionnaires les plus courants :

BorderLayout, BoxLayout, CardLayout, FlowLayout,


GridLayout, GridBagLayout.

JAVA 171
Interface Graphique: BorderLayout
→Le BorderLayout sépare un container en cinq zones: nord, sud,
ouest, est, et centre.
→"nord" et "sud" occupent toute la largeur,
→"ouest" et "est" occupent la hauteur qui reste,
→"centre" occupe la place restante.
→Lorsque l’on agrandit le container, le centre s'agrandit. Les autres
zone prennent uniquement l’espace qui leur est nécessaire.
Exemple:

JAVA 172
JAVA 173
Interface Graphique: BoxLayout
→Un BoxLayout permet d’empiler les composants du container
( verticalement ou horizontalement)
→ BoxLayout donne à chaque composant la place qu’il demande
→En utilisant ce layout on peut rajouter des blocs invisible.
Exemple:

JAVA 174
JAVA 175
Interface Graphique: CardLayout
→ CardLayout aide à construire des boîtes de dialogue composées de
plusieurs onglets.
→Un onglet se compose généralement de plusieurs contrôles : on
insère des panneaux dans la fenêtre utilisée par le CardLayout.
Exemple:

JAVA 176
JAVA 177
Interface Graphique: FlowLayout
→ Par défaut le gestionnaire de présentation d'un panel est de type
FlowLayout.
→Un FlowLayout permet de ranger les composants dans une ligne.
→Si l’espace est trop petit FlowLayout ajoute une ligne de plus.
Exemple:

JAVA 178
JAVA 179
JAVA 180
Interface Graphique: GridLayout
→ GridLayout établit un réseau de cellules identiques qui forment une
sorte de quadrillage invisible : les composants sont organisés en
lignes et en colonnes.
→Les éléments insérés dans la grille ont tous la même taille.
→Les cellules du quadrillage se remplissent de droite à gauche ou de
haut en bas.

Exemple:

JAVA 181
JAVA 182
Interface Graphique: GridBagLayout
→ GridBagLayout (grille étendue) est le plus riche en fonctionnalités : le
conteneur est divisé en cellules égales mais un composant peut occuper
plusieurs cellules de la grille et il est possible de faire une distribution
dans des cellules distinctes.
→ Un objet de la classe GridBagConstraints permet de donner les
indications de positionnement et de dimension à l'objet GridBagLayout.
Exemple:

JAVA 183
JAVA 184
Interface Graphique: Gestion des évènements
→ Il est possible d’affecter un évènement à un objet grâce à des classes
spéciales appelées listeners. Ces classes nous permettent d’écouter les
actions effectuées sur un objet swing et de lancer la fonction adéquat à
l’action produite.
→Les deux classes : java.awt.event.MouseMotionAdapter et
java.awt.event.ActionListener nous permettent l’écoute des actions.
→Lorsqu'un événement se produit :
➔il est reçu par le composant avec lequel l'utilisateur interagit (un
bouton, un curseur, un champ de texte, ...).
➔Ce composant transmet cet événement à un autre objet, un
écouteur qui possède une méthode pour traiter l’événement.

JAVA 185
Interface Graphique: Gestion des évènements
→ Les événements utilisateurs sont gérés par plusieurs interfaces
EventListener.
→Les interfaces EventListener permettent à un composant de générer
des événements utilisateurs. Une classe doit contenir une interface
auditeur pour chaque type de composant :

ActionListener : clic de souris ou enfoncement de la touche Enter


ItemListener : utilisation d'une liste ou d'une case à cocher
MouseMotionListener : evénément de souris, …
WindowListener : événement de fenêtre
TextListener : Changement de valeur dans une zone de texte

JAVA 186
Interface Graphique: Gestion des évènements
AdjustmentListener :Déplacement d'une échelle
ComponentListener :Savoir si un composant a été caché, affiché …
ContainerListener : Ajout d'un composant dans un Container
FocusListener : Pour savoir si un élément a le "focus"
KeyListener : Pour la gestion des événements clavier

JAVA 187
Interface Graphique: Gestion des évènements
Interface ActionListener
void actionPerformed(ActionEvent e)

Interface MouseListener

void mousePressed(MouseEvent e)
void mouseReleased(MouseEvent e)
void mouseClicked(MouseEvent e)
void mouseEntered(MouseEvent e)
void mouseExited(MouseEvent e)
void actionPerformed(ActionEvent e)

JAVA 188
Interface Graphique: Gestion des évènements
ActionListener : Exemple 1

JAVA 189
Interface Graphique: Gestion des évènements
ActionListener : Exemple 2

JAVA 190
JAVA 191
Interface Graphique: Gestion des évènements
ItemListener : Exemple

JAVA 192
JAVA 193

Vous aimerez peut-être aussi