Académique Documents
Professionnel Documents
Culture Documents
- p. 1
Fonctionnement
1 ou 2 projets faire en TP
- p. 2
Prsentation de JAVA
http://java.sun.com
http://penserenjava.free.fr
- p. 3
Java est
Objet
Simple
efficace
complet
gratuit
portable
- p. 4
Java est fortement objet : Tout est objet except certains types primitifs
Plus proche de SmallTalk que de C++
- p. 5
OUF : Syntaxe TRES similaire celle de C/C++ qui a fait ses preuves
- p. 6
- p. 7
Tutorial, API...
- p. 8
INTEL
Linux
Source
INTEL
INTEL
Linux
Linux
Linux
MAC
MAC
MAC
SPARC
SPARC
SPARC
Compilateur
Executable
Classique
INTEL
Source
Compilateur
JAVAC
Indpendant
de
larchi
MAC
SPARC
Pseudo Code
(Byte Code)
Interprteur
JAVA
Machine Virtuelle Java (JVM)
- p. 9
Tout fichier .class peut tre export vers une autre machine
- p. 10
Le futur de Java
Lutilisation du rseau
Problme de compatibilit
- p. 11
Rappels
- p. 12
Conventions de nommage
Si le nom est compos de plusieurs mots, les suivants commencent par une
majuscule
Documentation disponibles :
http://java.sun.com/docs/codeconv/
- p. 13
Amlioration de la lisibilit
- p. 14
Types Primitifs
Les types primitifs sont : boolean, char, byte, short, int, long, float, double
- p. 15
Pas de portabilit
- p. 16
Il est ncessaire dtre trs prudent avec les valeurs relles lorsquelles sont
utilises au niveau de condition de structures de contrles
double a = 1.0 ;
double b = 1.0 ;
while (((a + 1.0) - a) - 1.0 == 0.0) a = 2*a ;
while ((((a + b) - a) - b) != 0.0) b = b + 1.0 ;
return b ;
Que vaut b ? ?
LAPI java fournit une fonction pour comparer des doubles ! !
La connaissance de lAPI et la recherche dinformation est essentielle
- p. 17
Le transtypage
(typeCast) expression
- p. 18
Le transtypage implicite
Lors dune affectation, une opration de upcasting implicite peut avoir lieu.
Exemple
double x = 15 ;
- p. 19
Le transtypage explicite
Exemple
int x = 3, y = 2 ;
double z = x/y ; /* z = 1.0 */
- p. 20
Oprateurs
- p. 21
Les oprateurs
Oprateurs unaires
- p. 22
Les oprateurs
Oprateurs de dcalage : ,
- p. 23
Les oprateurs
Oprateurs daffectation =
- p. 24
Les instructions
- p. 25
Les instructions
de cration dobjets
{
int x = 12 ;
// Seul x est accessible
{
int q = 96 ;
// x et q sont accessibles
...
}
// seul x est accessible
// q est hors de porte
...
- p. 27
Variables homonymes
- p. 28
- p. 29
...
if(1 2) return a ;
a = a + 1;
...
Erreur de compilation
- p. 30
Conception Procdurale
vs
Conception Objet
- p. 31
Machine
Assembleur
Procdural
Objet
- p. 32
Programmation Procdurale
- p. 33
Programmation Objet
- p. 34
Pourquoi ?
Code robuste
- p. 35
Un petit problme
- p. 36
Programmation procdurale
allerEnClasseSuivante(Eleve e,Chemin c)
- p. 37
e.allerEnClasseSuivante()
- p. 38
Dlgation de responsabilit
- p. 39
Une modification
Supposons que certains lves (les 2emes annes) doivent passer par le
secrtariat. Quels changements cela impose t il ?
- p. 40
Points importants
- p. 41
Les objets
- p. 42
Mthodes
- p. 43
Interface
Afin dassumer leurs responsabilits, les objets doivent disposer dun moyen
de communication
- p. 44
Un peu de terminologie
- p. 45
Conception Objet
Diagrammes UML
Designs patterns
- p. 46
Apart
- p. 47
Apart
- p. 47
- p. 48
- p. 49
La rfrence null
- p. 50
Reprsentation
class Test {
public static void main(String[] s) {
Objet monObjet ; // La rfrence
monObjet = new Objet() ; // On cre linstance
Objet autre = new Objet() ; // Autre faon
Objet encore = autre ;
}
Objet
monObjet
int champ1
champ1 = 10
mthode1
mthode1
autre
champ1 = 123
mthode1
encore
- p. 51
Class Toto {
int champ1 ;
void incChamp1() {
champ1++ ;
}
...
}
- p. 52
Les autres classes accdent gnralement aux membres dun objet par
lintermdiaire dune rfrence
Toto monObjet ;
monObjet = new Toto() ;
monObjet.champ1 = 2 ;
char c = monObjet.incChamp1() ;
- p. 53
Lencapsulation
- p. 54
Exemple
class Date {
int j,m,a ;
void afficher() {
System.out.print(j+.+m+.+a) ;
}
}
- p. 55
- p. 56
Exemple II - Le retour
class Date {
int jm ;
int a ;
void afficher() {
System.out.print((jm16)+.
+((jm16) 16)+.+a) ;
}
}
- p. 57
Solution Catastrophique
- p. 58
Remarques
Les utilisateurs dune bibliothque doivent tre sur quils nauront pas
- p. 59
Lencapsulation
Meilleure structuration
- p. 60
Les spcificateurs
- p. 61
Visibilit
class Vision {
prvate int a;
private int b;
private int f() {
...
}
public void visible1() {
....
}
public int visible2(int c) {
....
}
}
- p. 62
Visibilit
111111111
000000000
000000000
111111111
000000000
111111111
000000000
111111111
000000000
111111111
000000000
111111111
class Vision {
prvate int a;
private int b;
- p. 62
On cre une dernire version, qui change la date comme un triplet et vrifie
la cohrence
- p. 63
- p. 64
- p. 65
La surcharge
- p. 66
Introduction la surcharge
POURQUOI ? ?
- p. 67
La surcharge
- p. 68
Exemple
class Surcharge {
void testons() {
System.out.print(Aucun) ;}
}
void testons(int i) {
System.out.print(Un int + i) ;}
}
void testons(double i) {
System.out.print(Un double + i) ;}
}
void testons(int i,double a) {
System.out.print(Deux + i + a) ;}
}
- p. 69
Exemple
- p. 70
Exemple II - Le retour
class Surcharge {
void testons() {
System.out.print(Aucun) ;}
}
void testons(int i) {
System.out.print(Un int + i) ;}
}
void testons(int i,double a) {
System.out.print(Deux + i + a) ;}
}
- p. 71
Exemple II - Le retour
- p. 72
Encore un exemple
- p. 73
class SurchargeType{
int f() {...} ;
void f() {...} ;
...
...
x = f() ; // OK
f() ; // ? ?
Interdit en JAVA
- p. 74
Interdit en Java
- p. 75
- p. 76
Initialisation
La solution : Le constructeur
- p. 77
Les constructeurs
- p. 78
Les constructeurs II
- p. 79
Exemples
class Date {
private int j,m,a ;
Date() {
setDate(1,1,2002) ;
System.out.println("Le constructeur Date()
est appel") ;
}
}
Date inst = new Date() ;
Intressant ! ! !
- p. 80
Exemples
class Date {
private int j,m,a ;
Date(int cj,int cm,int ca) {
setDate(cj,cm,ca) ;
System.out.println("Le constructeur Date(...)
est appel") ;
}
}
Test inst = new Test(16,9,2002) ;
- p. 81
Surcharge et constructeur
- p. 83
- p. 84
Rgle de programmation
Servez vous en
TOUTES les initialisations dun objet doivent tre faites dans un constructeur
- p. 85
Suppression dobjet
GC est un charognard ! !
- p. 86
Exemple
- p. 87
La documentation
- p. 88
Pourquoi commenter
La documentation de java
- p. 89
Commentaires
- p. 90
Commentaires de documentation
Une classe
Un attribut
- p. 91
Commentaires de documentation
des tags
Liste des tags
@version
@author
@param
@return
@see <class-name>
@see <class-name>#<method-name>
- p. 92
Un exemple
- p. 93
this
- p. 94
Le mot cl this
- p. 95
this rfrence
Elle dsigne lobjet ayant reu le message traiter et donc pour lequel on
doit excuter la mthode
- p. 96
this implicite
class Cuisinier{
void choisirMenu() { ... }
void faireCourse() { ... }
...
void travailler {
choisirmenu() ; /* this.choisirMenu() ; */
faireCourse() ; /* this.faireCourse() ; */
...
- p. 97
Autre exemple
Un peu de partout...
- p. 98
this explicite
class Nombre {
private double x ;
Nombre(double x) {
this.x = x ; Differencier les x */
...
}
}
- p. 99
Attention
- p. 100
this constructeur
Restrictions
- p. 101
this constructeur
class Date {
private int j,m,a ;
Date() {
this(1,1,2002) ; /* Appel constructeur avec args */
System.out.println("Le constructeur Date()
est appel") ;
}
Date(int cj,int cm,int ca) {
setDate(cj,cm,ca) ; /* On vrifie la cohrence */
System.out.println("Le constructeur Date(...)
est appel") ;
}
}
- p. 102
- p. 103
Les tableaux
- p. 104
Les tableaux
- p. 105
Cration de tableaux
et ainsi de suite...
- p. 106
Instanciation
- p. 107
Lorsque lon cre des tableaux avec des objets non primitifs, il faut instancier
les rfrences
String tabString = new String[4] ;
tabString[0]
tabString
tabString[1]
tabString[2]
tabString[3]
null
null
null
null
tabString
tabString[0]
bonjour
tabString[1]
Hello
tabString[2]
tabString[3]
null
- p. 108
Plusieurs dimensions
t2[0]
t2[1]
t2
t2[2]
t[3][1]
t2[3]
t2[4]
- p. 109
Statique
- p. 110
Exemple
- p. 111
Exemple
- p. 112
il peut tre intressant davoir une zone de stockage pour les donnes
spcifiques qui soit indpendant du nombre dinstances cres (de 0 ...)
le mot-cl static
- p. 113
Exemple
- p. 114
Remarque
Etant donn quune variable statique existe mme sans instance de la classe
o elle est dfinie
Comment faire ? ?
De cette manire, on sait que lon est en prsence dune variable statique
- p. 115
Mthodes statiques
De la mme manire que lon peut vouloir une variable statique, on peut
avoir besoin dune mthode statique
Elle sert souvent pour des mthodes gnrales (calcul de racine carr dun
double...)
- p. 116
Exemple II
class StaticTest {
static int stI= 8 ;
double d = 12 ;
static void stIncr() {stI++ ;}
...
}
public static void main(String arg[]) {
monObjet = new StaticTest() ;
autre = new StaticTest() ;
autre.stlIncr() ;
}
- p. 117
static : Exemple
stI = 10
StaticTest
monObjet
d = 123.2
d = 34.2
- p. 118
Mthodes et static
- p. 119
Pourquoi ?
Vis vis de certaines classes, il nest pas possible de crer directement des
objets (avec new)
Image img = toolkit.getImage(image.jpg)
- p. 120
La mthode main
statique : aucune instance nest encore cre lorsque main commence son
execution
- p. 121
package
- p. 122
Les Classes
- p. 123
Les Packages
- p. 124
java.io : Entres-Sorties
- p. 125
Exemple : java.util.Date
java.util.Date d = new java.util.Date()
- p. 126
- p. 127
- p. 128
- p. 129
Appartenance un package
- p. 130
- p. 131
sous bibliothque
Les classes qui sont dans le rpertoire base appartiennent alors au package
mabiblio.base
- p. 132
Visibilit
protected
Package
Sous Classe
private
package
protected
public
monde
- p. 133
Devoir surveill
- p. 134
- p. 135
Redondance de code
- p. 136
Rutilisation de code
au passage de paramtres
la composition
lhritage
- p. 137
Passage de paramtres
Fondamental en programmation
- p. 138
Composition
Date
setJour
affiche
- p. 139
Exemple
- p. 140
Introduction lhritage
Les mamifres
Disant cela, je rends implicite certains critres concernant les hommes et les
baleines
- p. 141
Introduction lhritage II
Humain
Baleine
- p. 142
Intrt de lhritage
Rutilisation du code
Sans toucher aux classes existantes (Pas de dtrioration)
Dveloppement incrmental
Trs intressant
- p. 143
Exemple
Object
Animal
Mamifre
Poisson
Oiseau
Truite
Pie
- p. 144
Exemple... Suite
- p. 145
Dautres dfinitions
La nouvelle classe est dite sous classe, classe drive ou classe enfant. On
dit aussi quelle hrite ou tend ou quelle est une spcialisation de la classe
de dpart
Possibilit de lhritage
des champs
des mthodes
des constructeurs
- p. 147
Redfinition
Lorsque lon dfinit une nouvelle classe par hritage, il est possible de
redfinir des mthodes
Il sagit de placer dans cette classe une mthode de mme en-tte quune
mthode existante dans la super classe.
- p. 148
Exemple
Vehicule
int maxVitesse
int poids
void demarrer()
void arreter()
void tourner()
- p. 149
Exemple
Vehicule
int maxVitesse
int poids
void demarrer()
void arreter()
void tourner()
VehTerrestre
- p. 149
Exemple
Vehicule
int maxVitesse
int poids
void demarrer()
void arreter()
void tourner()
VehTerrestre
int nbroues
- p. 149
Exemple
Vehicule
int maxVitesse
int poids
void demarrer()
void arreter()
void tourner()
VehTerrestre
VehMaritime
int nbroues
- p. 149
Exemple
Vehicule
int maxVitesse
int poids
void demarrer()
void arreter()
void tourner()
VehTerrestre
VehMaritime
int nbroues
void QuitterPort()
void ArriverPort()
- p. 149
Exemple
Vehicule
int maxVitesse
int poids
void demarrer()
void arreter()
void tourner()
VehTerrestre
VehMaritime
VehAerien
int nbroues
void QuitterPort()
void ArriverPort()
void atterir()
void decoller()
- p. 149
Exemple
Vehicule
int maxVitesse
int poids
void demarrer()
void arreter()
void tourner()
VehTerrestre
VehMaritime
VehAerien
int nbroues
void QuitterPort()
void ArriverPort()
void atterir()
void decoller()
Voiture
- p. 149
Exemple
Vehicule
int maxVitesse
int poids
void demarrer()
void arreter()
void tourner()
VehTerrestre
VehMaritime
VehAerien
int nbroues
void QuitterPort()
void ArriverPort()
void atterir()
void decoller()
Voiture
void demarrer()
void arreter()
- p. 149
Exemple
Vehicule
int maxVitesse
int poids
void demarrer()
void arreter()
void tourner()
Voiture
VehTerrestre
VehMaritime
VehAerien
int nbroues
void QuitterPort()
void ArriverPort()
void atterir()
void decoller()
Avion
void demarrer()
void arreter()
- p. 149
Exemple
Vehicule
int maxVitesse
int poids
void demarrer()
void arreter()
void tourner()
Voiture
void demarrer()
void arreter()
VehTerrestre
VehMaritime
VehAerien
int nbroues
void QuitterPort()
void ArriverPort()
void atterir()
void decoller()
Avion
void atterir()
void decoller()
- p. 149
Exemple
Vehicule
int maxVitesse
int poids
void demarrer()
void arreter()
void tourner()
Voiture
void demarrer()
void arreter()
VehTerrestre
VehMaritime
VehAerien
int nbroues
void QuitterPort()
void ArriverPort()
void atterir()
void decoller()
Avion
Helico
void atterir()
void decoller()
- p. 149
Exemple
Vehicule
int maxVitesse
int poids
void demarrer()
void arreter()
void tourner()
Voiture
void demarrer()
void arreter()
VehTerrestre
VehMaritime
VehAerien
int nbroues
void QuitterPort()
void ArriverPort()
void atterir()
void decoller()
Avion
Helico
void atterir()
void decoller()
void atterir()
void decoller()
- p. 149
Exemple
class TestA {
public void f() {System.out.println(f de testA) ;}
public void g() {System.out.println(g de testA) ;}
}
class TestB extends TestA{
public void f() {System.out.println(f de testB) ;}
public void h() {System.out.println(h de testB) ;}
}
TestA ta = new TestA() ;
TestB tb = new TestB() ;
ta.f() ; /* OK */
ta.g() ; /* OK */
ta.h() ; /* ERREUR */
tb.f() ; /* OK */
tb.g() ; /* OK */
tb.h() ; /* OK */
f de testA
g de testA
f de testB
g de testA
h de testB
- p. 150
Contraintes
Sur la signature
- p. 151
Surcharge vs Redfinition
surcharge : Il sagit dune mthode qui possde le mme nom mais pas la
mme signature quune mthode de classe ou de super classe
- p. 152
Exemple
class TestA {
public void f() {System.out.println(f de testA) ;}
public void g() {System.out.println(g de testA) ;}
}
class TestB extends TestA{
public void f(int a) {System.out.println(f de testB + a) ;}
public void h() {System.out.println(h de testB) ;}
}
TestA ta = new TestA() ;
TestB tb = new TestB() ;
ta.f() ; /* OK */
ta.g() ; /* OK */
tb.f() ; /* OK */
tb.f(1) /* OK */
tb.g() ; /* OK */
tb.h() ; /* OK */
f de testA
g de testA
f de testA
f de testB 1
g de testA
h de testB
- p. 153
Introduction lhritage II
Humain
Baleine
- p. 154
Possibilit de lhritage
des champs
des mthodes
des constructeurs
- p. 155
Exemple
Vehicule
int maxVitesse
int poids
void demarrer()
void arreter()
void tourner()
Voiture
void demarrer()
void arreter()
VehTerrestre
VehMaritime
VehAerien
int nbroues
void QuitterPort()
void ArriverPort()
void atterir()
void decoller()
Avion
Helico
void atterir()
void decoller()
void atterir()
void decoller()
- p. 156
La classe Object
- p. 157
Introduction
- p. 158
Object
Animal
Mamifre
Poisson
Oiseau
Truite
Pie
- p. 159
Particularit
Par contre, elle possde des mthodes intressantes quil est possible de
redfinir
- p. 161
La mthode toString
La mthode toSring() est dfinie dans la classe Object. Elle renvoie une
description de lobjet sous forme de chane de caractres.
Cest pour cela que la mthode toString est presque toujours redfinie.
- p. 162
Un autre Exemple
class Date {
private int j,m,a ;
public String toString() { return j + . + m + . + a ; }
}
...
d = new Date(12,5,2001) ;
System.out.println(la date est + d) ;
- p. 163
Comparaison dobjets
- p. 164
La mthode equals
Elle renvoie true si lobjet recevant lappel est identique celui pass en
paramtre de la mthode
La version initiale renvoie true si les deux objets ont la mme adresse. Elle
doit donc tre redfinie
- p. 165
- p. 166
Autres mthodes
- p. 167
Hritage multiple
- p. 168
Introduction
- p. 169
Hritage multiple
Soit dune classe dont le nom est prcis aprs le mot-cl extends
- p. 170
Hritage et constructeurs
- p. 171
Introduction
La classe mre
La classe enfant
Un petit exemple...
- p. 172
Exemple
class Vehicule {
Vehicule() {System.out.println(Constructeur de Vehicule) ; }
}
class VehTerrestre extends Vehicule{
VehTerrestre() {System.out.println(Constructeur de Terrestre) ; }
}
class Voiture extends VehTerrestre{
Voiture() {System.out.println(Constructeur de Voiture) ; }
}
- p. 173
Constructeur
- p. 174
Le mot cl super
Vehicule et compagnie
- p. 175
- p. 176
- p. 177
Exemple
class VehTerrestre {
VehTerrestre() { System.out.println(Ter 0 arguments) ; }
VehTerrestre(int n) { System.out.println(Ter 1 arguments) ; }
}
class Moto extends VehTerrestre {
Moto() {
super(2) ;
System.out.println(Moto 0 arguments) ;
}
Moto(String nom) {
System.out.println(Moto 1 arguments) ;
}
Moto(String nom,int n) {
this(nom) ;
System.out.println(Moto 2 arguments) ;
}
}
- p. 178
Et la redondance alors ! !
super peut tre utilis pour appeler une fonction de la classe mre
class Animal {
void manger(Nourriture f) { ... }
}
class Herbivore extends Animal {
void manger(Nourriture f) {
/*Verification si f est vert !*/
if(...)
super.mange(f)
}
}
Sans cela, redondance de code ! ! !
- p. 179
Limites
On ne peut pas remonter plus haut que la classe mre pour appeler une
fonction redfinie
pas de (classeAnctre.m())
pas de super.super.m()
- p. 180
Hritage et Tanstypage
- p. 181
Le transtypage implicite
Exemple
double x = 15 ;
- p. 182
Le transtypage explicite
Exemple
int x = 3, y = 2 ;
double z = x/y ; /* z = 1.0 */
- p. 183
Une variable rfrence dclare dune certaine classe peut parfois contenir
un lien vers un objet dune classe diffrente
on peut faire du transtypage sur les classes uniquement si lune est anctre
de lautre et vice versa.
- p. 184
Upcasting
Les champs et les mthodes dune classe sont en effet valides pour la
classe drive.
- p. 185
DownCasting
Ncessairement explicite
d.decoller() ; /* Erreur */
((Avion)d).decoller() ; /* OK */
- p. 186
Visibilit
String toString()
...
- p. 187
Visibilit
String toString()
...
void demarrer()
...
- p. 187
Visibilit
String toString()
...
void demarrer()
...
void decoller()
- p. 187
Intrt
- p. 188
- p. 190
Introduction
- p. 191
Mthodes abstraites
Le mot-cl abstract
- p. 192
Mthodes abstraites
Toute mthode abstraite doit tre implment dans au moins une classe
descendante
- p. 193
Classes abstraites
Toute classe comportant au moins une mthode abstraite doit tre dclare
abstraite
- p. 194
But
Factoriser le code
Permettre le polymorphisme
- p. 195
Exemple
Notre classe Vhicule est le type mme de classe que lon doit dclarer
abstraite
public abstract class Vehicule {
private int maxVitesse ;
private int poinds ;
public abstract void dmarrer() ;
public abstract void arreter() ;
public void tourner() { /* Non abstraite : corps ...*/ }
}
On ne peut pas crer dinstances de la classe Vehicule
- p. 196
Exemple 2
- p. 197
Exemple 3
- p. 198
Remarque
- p. 199
Le mot cl final
Variable finale
Les variables finales ne peuvent pas tre modifies : ce sont des
constantes. Souvent utilises avec static
static final double PI = 3.14
la valeur d une variable finale ne peut pas tre change aprs initialisation
final int i = (int)(Math.random()) ;
final int j = i/2 ;
Rfrence finale
- p. 200
Mthode finale
Classe finale
- p. 201
Le Polymorphisme
- p. 202
Introduction
- p. 203
Introduction 2
Elle est une des caractristiques essentielles dun langage orient objet
- p. 204
- p. 205
Premire mthode
- p. 206
Deuxime mthode
- p. 207
Troisime tentative
- p. 208
Quatrime tentative
Voir Usine4
- p. 209
Cinquime tentative
Voir Usine5
- p. 210
Retour au polymorphisme
- p. 211
Liaison tardive
par la classe de cet objet (et non celle de la variable rfrence dsignant
cet objet)
- p. 212
- p. 213
Intrt du polymorphisme
Lextension est facilite : On peut rajouter des sous classes sans toucher au
code existant
- p. 214
- p. 215
Un autre exemple
- p. 216
Interfaces
- p. 217
Introduction
Une interface peut donc tre utilise pour tablir des protocoles entre les
classes
Une interface ne peut contenir que
des mthodes qui seront toujours par dfaut : public abstract
des champs qui seront toujours par dfaut public static final
- p. 218
Exemple
interface Figure {
public abstract void dessiner() ;
public abstract void rotation(double angle) ;
}
- p. 219
Exemple
interface ConstantesPhysiques {
public static final double AVOGADRO = 6.02214e23 ;
public static final double MASSE_ELECTRON = 9.109e-31 ;
}
- p. 220
- p. 221
Implmentation et Hritage
Bien entendu, une classe peut hriter dune autre classe et en mme temps
implmenter une interface
class carre extends Rectangle {
/* ici, les mthodes dessiner et rotation existent, elles peuvent tre redfinies*/
}
- p. 222
Remarques
- p. 223
Interface et Transtypage
Il suffit de penser quune interface est une classe particulire (et abstraite)
pour grer le transtypage
- p. 224
Exemple dutilisation
On veut crer un algorithme de tri qui puisse tre utilis par tout type dobjet
- p. 225
Exemple dutilisation 2
La partie variable va tre code sous la forme dune interface dclarant une
mthode de comparaison dobjet
interface Comparable {
int compareTo(Object o) ;
}
obj1.compareTo(obj2)
retourne
0 si mme valeur
- p. 226
Exemple dutilisation 3
- p. 227
Exemple dutilisation 4
Exemple dutilisation 5
La mthode triBulle existe dans lapi de java : voir classe Arrays et les
diverses mthodes quelle contient(sort....)
- p. 229
Une classe abstraite reprsente la description dun objet quil est possible de
crer
- p. 230
Interface et constantes
interface ConstantesPhysiques {
public static final double AVOGADRO = 6.02214e23 ;
public static final double MASSE_ELECTRON = 9.109e-31 ;
}
On prfrera
- p. 231
- p. 232
Introduction
Cest un programme relativement simple que celui qui ne manipule que des
objets dont le nombre et la dure de vie sont connues lavance
On va voir :
La classe Arrays
Les collections
- p. 233
Classe Arrays
Remplissage
comparaison
tri
recherche
Remplissage de tableaux
- p. 235
Comparaison de 2 tableaux
Cette mthode possde diverses signatures suivant que le tableau est bas
sur des types primitifs ou sur des objets
Les lements sont gaux (au sens de la mthode equals de leur classe)
- p. 236
Comparaison de 2 tableaux
True
False
False
- p. 237
Comparaison de 2 tableaux
- p. 238
Trier un tableau
Si le tableau est bas sur des types primitifs alors le tri est bas sur lordre
naturel
interface Comparable {
int compareTo(Object o) ;
}
- p. 239
Exemple
Arrays.sort(d1) ;
- p. 240
- p. 241
Copie de tableau
static void
arraycopy(source,debut,destination,debut,longueur)
On a un tableau noms et on veut doubler sa taille
- p. 242
Les conteneurs
- p. 243
Conteneurs : Introduction
Question : Doit on implmenter une file chaque fois que lon en a besoin ?
des ensembles
de tables de hachage
Le mot cl : Rutilisation
- p. 244
Conteneurs et interfaces
Linterface Map est la mre des interfaces associs aux tables de hachage
Map
Collection
Set
List
SortedMap
SortedSet
- p. 245
Interface Collection
void clear()
void contains(Object)
boolean isEmpty()
Iterator iterator()
boolean remove(Object)
int size()
Object[] toArray()
- p. 246
Interface Set
Elle rajoute une rgle interdisant la duplication dobjets. add renvoie false si
on essaie de mettre deux fois le mme objet
- p. 247
Interface SortedSet
- p. 248
Interface List
Reprsente une collection dont les lments sont rangs dans un ordre
particulier
- p. 249
Interface Map
Elle stocke un lement de type objet et lassocie une cl (de type Object)
Les oprations de bases sont les suivantes
public Set keySet() renvoie une Set contenant toutes les cls de la carte
- p. 250
Interface SortedMap
Cette interface entretient les paires cl/valeurs en ordre tri sur les cls
- p. 251
Implmentations
Implementation
Set
HashSet
SortedSet
TreeSet
List
ArrayList, LinkedList,Vector
Map
HashMap,HashTable
SortedMap
TreeMap
Collection
HashSet
Set
TreeSet
SortedSet
List
ArrayList
LinkedList
Map
HashMap
SortedMap
TreeMap
HashTable
Vector
- p. 252
Implmentations ... 2
- p. 253
Les itrateurs
Comment faire ?
- p. 254
Et maintenant
- p. 255
Parcours de listes...
- p. 256
Petit Problme
Lorsque lon insre des objets dans des collections on les transtype vers un
type plus gnral (Object)
Lorsque lon voudra rcuprer lobjet de la collection il faudra surement
prvoir un cast explicite pour rcuperer le vrai type de lobjet
- p. 257
Petit problme... 2
- p. 258
Les exceptions
- p. 259
Introduction
- p. 260
- p. 261
- p. 262
- p. 263
Gestion dexceptions
Si un problme survient, une exception est leve,
une exception est un objet spcialement cr pour grer les erreurs
Toute exception peut/doit tre leve
Les comportements anormaux sont grs avec les exceptions
il est important de distinguer une condition exceptionnelle dun problme
normal
Avec une condition exceptionnelle vous ne pouvez pas continuer
lexcution car vous navez pas suffisamment dinformations pour la traiter
dans le contexte courant
- p. 264
Les exceptions
- p. 265
Exemple
- p. 266
Une mthode qui utilise une mthode levant une exception peut attraper
celle ci
- p. 267
Exemple
int lireAscii() {
int x = 0 ;
try { x=System.in.read() ; }
catch(IOException e) {
System.out.println("Erreur : " + e) ;
}
System.out.println("toto" + x) ;
return x ;
}
En cas derreur
Erreur : java.io.IOException : ...
toto 0
Comportement normal
toto ?
- p. 268
Exemple
try {
readFromFile("nomFile") ;
...
}
catch(FileNotFoundException) {
/* Gestion du cas : fichier introuvable */
}
catch(IOException) {
/* Gestion du cas : erreur de lecture */
}
catch(Exception) {
/* Gestion du cas : Toute autre erreur */
}
- p. 269
Exemple
- p. 270
- p. 271
Exemple
- p. 272
et finally
- p. 273
Mcanisme de traitement
- p. 274
- p. 275
1. Si une des instructions du bloc try provoque une exception, les instructions
suivantes du bloc try ne sont pas excutes et,
- p. 276
Dans les cas o l excution des instructions de la clause try ne provoque pas
d erreur/exception,
1. le droulement du bloc de la clause try se droule comme s il n y avait
pas de bloc trycatch
2. le programme se poursuit aprs le bloc trycatch
- p. 277
Exemples de traitement
- p. 278
- p. 279
Exemple
Si x = 0
naffiche rien
Si x6= 0
x =??
- p. 280
Les classes lies aux erreurs/exceptions sont des classes places dans l
arborescence d hritage de la classe Throwable
- p. 281
Throwable
Exception
Error
RunTimeExcepion
Paquet JDK
Excptions Controles
Dfinies par le
programmeur
- p. 282
Throwable
Exception
Error
RunTimeExcepion
Paquet JDK
Excptions Controles
Dfinies par le
programmeur
- p. 282
Throwable
Exception
Error
RunTimeExcepion
Excptions Controles
Paquet JDK
Dfinies par le
programmeur
- p. 282
Throwable
Exception
Error
RunTimeExcepion
Excptions Controles
Paquet JDK
Dfinies par le
programmeur
- p. 282
Classe Error
Assez rare
- p. 283
Types derreurs
ClassCircularityError
ClassFormatError
Object
LinkageError
ExecptionInIniatilizerError
AbstractMethodError
IncompatibleClassChangeError
IllegalAccessError
NoClassDefFoundError
InstantiationError
Throwable
UnsatisfiedLinkError
NoSuchFieldError
VerifyError
NoSuchMethodError
ThreadDeath
Error
VirtualMachineError
InternalError
OutOfMemoryError
StackOverflowError
UnknownError
- p. 284
- p. 285
Toute mthode qui peut lancer une telle exception doit le dclarer
void lance(..) throws TotoException
- p. 286
Types dexceptions
ArithmeticExecption
Object
ClassNotFoundExecption
ArrayStoreExecption
CloneNotSupportedExecption
ClassCastExecption
Throwable
Execption
IllegalThreadStateExecption
IllegalAccessExecption
IllegalArgumentExecption
NumberFormatExecption
InstantiationExecption
IllegalMonitorStateExecption
InteruptedExecption
IllegalStateExecption
NoSuchFieldExecption
IndexOutOfBoundExecption
ArrayIndexOutOfBoundExecption
StringIndexOutOfBoundExecption
NoSuchMethodExecption
RunTimeExecption
NegativeArraySizeExecption
NullPointerExecption
SecurityExecption
- p. 287
Cest tout
- p. 288
Exemple
- p. 289
Exemple
- p. 290
Exceptions et performances
- p. 291
Conseils
Elles ne doivent pas remplacer des tests simples tels que lappartenance
dun index dans les bornes dun tableau !
- p. 292
Exemple
- p. 293
Exceptions et Constructeur
- p. 294