Vous êtes sur la page 1sur 59

Christine JULIEN

I.U.T. Informatique
Semestre 3 – révision 2009
julien@irit.fr

Christine JULIEN 1
PLAN


 Généralités
Généralités
 Le
 Le langage
langage de
de base
base
 Le
 Le modèle
modèle objet
objet
 Quelques
 Quelques fonctionnalités
fonctionnalités auau travers
travers de
de classes
classes
 Quelques
 Quelques mécanismes
mécanismes propres
propres àà Java
Java

Christine JULIEN 2
Généralités
Historique
 1991
1991::création
créationdu
dulangage
langageJava
Javapar
parSun
SunMicrosystem
Microsystem
•• pour
pourdévelopper
développerdes
deslogiciels
logicielspour
pourdes
desappareils
appareilsélectroniques
électroniques: :sûrs,
sûrs,portables,
portables,
extensibles
extensibles

 1994
1994::conception
conceptionde
deHotJava
HotJava
•• navigateur
navigateurWeb
Webpermettant
permettantd’exécuter
d’exécuterdes
desprogrammes
programmesécrits
écritsen
enJava
Java

 ààpartir
partirde
de1995
1995::premier
premierlancement
lancementcommercial
commercial
•• est
estintégré
intégrésur
surlalaplupart
plupartdesdesnavigateurs
navigateurs(Netscape,
(Netscape,Internet
InternetExplorer,
Explorer,...)
...)
•• peut
peutêtre
êtreintégré
intégrésursurlalaplupart
plupartdes
desplateformes
plateformes(Unix,
(Unix,Windows,
Windows,Mac,
Mac,...)
...)
•• très
trèsnombreux
nombreuxenvironnements
environnementsde deprogrammation
programmationJavaJava(Visual
(VisualJ++,
J++,Eclipse,
Eclipse,JJBuilder,
Builder,...)
...)
•• nombreuses
nombreusesextensions
extensions

Christine JULIEN 3
Généralités
Une machine virtuelle
 Langage
Langageààlalafois
foiscompilé
compiléet
et
......... .... ...
............ ...... ..
code source ...... .... ... .....
interprété
interprété .....................
............... ......

•• lalacompilation
compilationproduit
produitun
unpseudo-
pseudo-
code
code(J-code)
(J-code)indépendant
indépendantde delala compilation
machine
machine
•• lelepseudo-code
pseudo-codeestestexécuté
exécutépar
parunun ......... .... ...
interpréteur
interpréteur pseudo-code
............ ...... ..
...... .... ... .....
.....................
⇒⇒ code
codeportable
portabled’une
d’unemachine
machineàà ............... ......

l’autre
l’autremais
maisexécution
exécutionplus
pluslente
lente
 Possibilité
Possibilitéde
decompiler
compilerààla
la exécution

volée
volée
⇒compilation
⇒ compilationjust
justinintime
time

Christine JULIEN 4
Généralités
Applications et Applets Java
 NE
NEPAS
PASCONFONDRE
CONFONDRE::
•• les
lesapplications
applications
•• les
lesapplets
applets
 Application
Application::
•• programme
programmeexécuté
exécutésur
surune
uneligne
lignede
decommande
commandepar
parl’interpréteur
l’interpréteur


Applet
Applet::
•• programme
programmeexécuté
exécutépar
parun
unnavigateur
navigateurWeb
Web
•• introduit
introduitdans
dansune
unepage
pageHTML
HTMLpar balise<applet>
parlalabalise <applet>
HTML



Ne
Nepas
pasconfondre
confondreavec
avecJavaScript
JavaScript
(développé
(développépar
parNetscape)
Netscape)

Christine JULIEN 5
Généralités
Exemples de programmes


Exemple
Exempled’application
d’application 

Exemple
Exempled’applet
d’applet
// exemple d’application minimale // exemple de petite applet

public class MonApplication import java.awt.*;


{ import java.applet.Applet;
public static void main(String args[ ]) public class MonApplet extends Applet
{ {
System.out.println("Ma première application"); public void paint(Graphics g)
} {
} g.drawString("Ma première applet",5,15);
}
}

•• application
application==classe
classe •• applet
applet==classe
classe
•• contient
contientune
uneméthode
méthodemain()
main()publique
publique •• hérite
héritede
delalaclasse
classeApplet
Applet
pouvant
pouvants’utiliser
s’utiliseravec
avecargument(s) •• ne
nepeut
peutêtre
êtreexécutée
exécutéequ’à
qu’àpartir
partird’une

 argument(s) d’une
ne retourne rien page

 ne retourne rien pagehtml
html
•• nom
nomclasse
classe==nom
nomfichier
fichiersans
sansextension •• nom
extension nomclasse
classe==nom
nomfichier
fichiersans
sansextension
extension

Christine JULIEN 6
Généralités
Environnement de développement minimum : le JDK
 Disponible
Disponiblesur
surplusieurs
plusieursplateformes
plateformesen
enstandard
standard
(Windows,
(Windows,Solaris
SolarisetetLinux)
Linux)
 Contient
Contient::
•• des
desAPI API(bibliothèque
(bibliothèquede declasses
classesstandards),
standards),
•• un
uncompilateur
compilateur: :javac,
javac,
•• un
uninterpréteur
interpréteurd’applets
d’applets: :appletViewer,
appletViewer,
•• un
undébogueur
débogueur: :jdb,
jdb,
•• un interpréteur: :java,
uninterpréteur java,
•• un
ungénérateur
générateurdededocumentation
documentation: :javadoc,
javadoc,
•• des
desgénérateurs
générateursd’interface
d’interfaceavec
avecCC: :javap
javapetetjavah
javah
•• un
unoutiloutild’archivage
d’archivagede declasses
classes: :jar,
jar,
•• des
desexemples
exemplesd’applets
d’applets
•• ......

Christine JULIEN 7
Langage de base
Mots réservés en Java

abstract boolean break byte byvalue case

cast catch char class const continue

default do double else extends false

final finally float for future generic

goto if implements import inner instanceof

int interface long native new null

operator outer package private protected public

rest return short static super switch

synchronized this throw throws transcient true

try var void volatile while assert

Christine JULIEN 8
Langage de base
Instructions et structures de contrôle


Instruction
Instructionsimple
simple 

Exemple
Exemple
•• terminée
terminéepar
par; ;
// recherche le maximum entre x et y


Instruction
Instructioncomposée
composée float max;
•• instructions if (x > y)
instructionsencadrées
encadréespar
par{}{} {


Sélection
Sélection max = x;
•• ifif(condition) }
(condition)…
…else
else…
… else


Branchement
Branchementconditionnel
conditionnel {
•• switch max = y;
switch(expression)
(expression)…
…case
case }


Boucle
Boucletant
tantque
que…
…faire
faire
•• while
while(condition)
(condition)…



Boucle
Bouclefaire
faire…
…tantque
tantque
•• do
do…
…while
while(condition);
(condition);


Boucle
Bouclepour
pour
•• for
for(exp1;
(exp1;exp2;
exp2;exp3)
exp3)......

Christine JULIEN 9
Langage de base
Les types primitifs


Types
Typesprimitifs
primitifs 

Conversions
Conversionsexplicites
explicites
•• forçage
forçagede
detype
type
byte 1 octet
short x = 5;
short 2 octets int y = 10;
int 4 octets y = x; // pas d'erreur
long 8 octets x = y; // erreur
x = (short) y; // pas d'erreur
float 4 octets
double 8 octets
boolean true ou false Constantes

 Constanteslittérales
littérales
char 2 octets (Unicode)
int v1 = 32;
long v2 = 32L;


Conversions
Conversionsimplicites
implicites float v3 = 0.206F;
•• ililpeut
peutyyavoir
avoirconversions
conversionsde detype
typeentre
entre double v4 = 0.206;
valeurs char v5 = 'A';
valeursààcondition
conditionqu'il
qu'iln'y
n'yait
aitaucune
aucune boolean v6 = true;
perte d'informations
perte d'informations (ex : float versdouble)
(ex : float vers double)

Christine JULIEN 10
Langage de base
Les variables


Variable
Variablede
detype
typeprimitif
primitif==valeur
valeur 

Variable
Variablede
detype
typeclasse
classe==objet
objet

• • déclaration
déclaration: : • • déclaration
déclaration: :
int
int var1
var1 == 3; XX var2
var2 == new
new X();
 
 3;  X();
• • lalavariable
variablereprésente
représentelelecontenu
contenuphysique
physique • • lalavariable
variablereprésente
représentelalaréférence
référencesur
surl’objet
l’objeten
en
• • les mémoire
les opérateurs du langage peuventêtre
opérateurs du langage peuvent êtreutilisés
utilisés: : mémoire


var1 = var1 + 5;
var1 = var1 + 5; • • seules
seulesles
lesméthodes
méthodesassociées
associéesààlalaclasse
classede
de
l’objet peuvent être utilisées :
l’objet peuvent être utilisées :


var2.méthode();
var2.méthode();

var1 3 var2 .
objet

Christine JULIEN 11
Langage de base
Classes associées aux types primitifs
 Chaque
Chaquetype
typeprimitif
primitifaason
sonhomologue
homologuesous
sousforme
formededeclasse
classe
(classe
(classewrapper
wrapper::la
lavaleur
valeurest
estencapsulée
encapsuléedans
dansl’objet)
l’objet)

Object

Boolean Character Number

Byte Short Integer Long Float Double



Intérêts
Intérêts::
•• disposer
disposerde deconstantes
constantesdedeclasses,
classes,
•• Utiliser
Utiliserlalagénéricité,
généricité,
•• disposer
disposerde deméthodes
méthodesde deconversion
conversion......

Christine JULIEN 12
Langage de base
Transmission des paramètres
 Pas
Pasde
desous-programmes
sous-programmes
•• tout
toutest
estméthode
méthode
 Seul
Seulmode
modede
detransmission
transmissiondes
desparamètres
paramètres
•• transmission
transmissionpar
parvaleur
valeur


pour
pourles
lestypes
typesprimitifs,
primitifs,copie
copiede
delalavaleur
valeur


pour
pourles
lestypes
typesclasses,
classes,copie
copiede
delalaréférence
référencesur
surl’objet
l’objet
int v1 = 3;
Integer v2 = new Integer(10);
… v1 3 v2
obj.méthode(v1, v2);

copie 10 copie
void méthode(int var1, Integer var2) 10
{
… var1 3 var2
}

Christine JULIEN 13
Langage de base
Opérateurs


Principaux
Principauxopérateurs
opérateurssur
surles
les 

Opérateurs
Opérateurssursurles
lesvariables
variablesde
de
variables
variablesde
detypes
typesprimitifs
primitifs types
typesclasses
classes

Opérateurs Opérateurs
arithmétiques + - * / % arithmétiques + (sur les String uniquement)

Opérateurs Opérateurs
relationnels < > <= >= == != relationnels == !=
Opérateurs Opérateur
logiques ! && || d'accès méthode .
Opérateurs Opérateur
d'incrémentation ++ -- d'instanciation new
Opérateurs Op d'appartenance
de bits & | ^ ~ >> << >>> à une classe instanceof
Opérateurs Opérateur
d'affectation = += -= *= /= %= d'affectation =

Valeur particulière : null

Christine JULIEN 14
Langage de base
Les objets tableaux


Déclaration
Déclaration 

Taille
Tailled'un
d'untableau
tableau::
•• attribut
attributlength
length: :taille
tailledu
dutableau
tableau
int t1[]; //  int [] t1
short t2[][]; 
 t5.length renvoie
t5.length renvoie55
Point t3[];



Déclaration
Déclarationetetconstruction
construction t5
int t3[] = {3, 5, 7, 8};
int t4[][] = {{1,2}, {2,3}, {4,5}};

int t5[] = new int[5]; 34


t5[0] = 34;

int t6[][][];
t6 = new int[2][5][3];
t6[0][0][0] = 8;

Christine JULIEN 15
Langage de base
Les objets chaînes de caractères - String et StringBuffer


Classe
ClasseString
String 

Classe
ClasseStringBuffer
StringBuffer
•• chaîne
chaînede
decaractères
caractèresconstante
constante •• chaîne
chaînede
decaractères
caractèresde
decontenu
contenu
modifiable


Déclaration
Déclarationetetconstruction
construction modifiable
StringBuffer ch3;
ch3 = new StringBuffer("Bonjour");
String ch1;
ch3.append(" Monsieur");
ch1 = new String("Bonjour");
ch3.setCharAt(1, 'O');
// <=> ch1 = "Bonjour";

String ch2 = "Le langage Java"; 



Tableau
Tableaude
dechaînes
chaînesconstantes
constantes
Quelques String tab [];

 Quelquesméthodes
méthodesde
deString
String tab = new String [10];
length() Longueur
charAt() Caractère de rang i tab[0] = "Le langage Java";
tab[1] = "introduction";
equals() Egalité de 2 chaînes
substring() Sous-chaîne
indexOf() Recherche d'un caractère

Christine JULIEN 16
Modèle objet
Les classes Java
 API
APIstandard
standarddu
duJDK
JDK
•• regroupe
regroupedes
desunités
unitéslogiques
logiquesappelés
appeléspaquetages
paquetages(packages)
(packages)


java.lang
java.lang: : classes
classesdedebases
basesde
deJava
Java


java.io
java.io: : entrées/sorties
entrées/sortiesvers
versdifférents
différentspériphériques
périphériques


java.util
java.util: : utilitaires
utilitaires


java.net
java.net: : support
supportdu duréseau
réseau


java.sql
java.sql: : accès
accès à une basede
à une base dedonnées
données


javax.swing
javax.swing: : composants
composantsgraphiques
graphiques


……

 Possibilité
Possibilitéde
decréer
créerses
sespropres
propresclasses
classes
•• langage
langagededeprogrammation
programmationorienté
orientéobjet
objet
•• création
créationetetmanipulation
manipulationd’objets
d’objetsau
autravers
traversdes
desconcepts
concepts: :


d’encapsulation,
d’encapsulation,d’héritage,
d’héritage,de
depolymorphisme,
polymorphisme,......

Christine JULIEN 17
Modèle objet
Structure d’une classe
•• Structure
Structureetetcomportement
comportementcommuns
communsd’un
d’unensemble
ensembled’objets
d’objets: :


attributs
attributs(partie
(partiestatique)
statique)++méthodes
méthodes(partie
(partiedynamique)
dynamique)
•• Attribut
Attributou
ouvariable
variabled’instance
d’instance


variable
variablede
detype
typeprimitif
primitifou
oubien
bienvariable
variablede
detype
typeclasse
classe(valeur
(valeurou
ouobjet)
objet)
•• Méthode
Méthode


nom
nom++signature
signature++corps
corps(paramètre implicite: :this
(paramètreimplicite this) )
•• Exemple
Exemple: : class Point
{
float abscisse;
p
ini

float ordonnee;
tia

void initialiser()
{
lise

abscisse Point p; this.abscisse = 0F;


r()

r()

ordonnée p = new Point(); this.ordonnee = 0F;


e

}
c

p.initialiser();
la

void deplacer(float x, float y)


dép

p.deplacer(5.6F,5.2F); {
... this.abscisse = this.abscisse+x;
this.ordonnee = this.ordonnee+y;
}
instance }

Christine JULIEN 18
Modèle objet
Constructeur(s) et destructeur
•• Un
Unconstructeur
constructeurest
estune
uneméthode
méthodeparticulière
particulièreappelée
appeléeau
aumoment
momentde
delalacréation
création
d’un
d’unobjet
objet(new)
(new)


porte
portelelemême
mêmenom nomque
quelalaclasse
classe


ne
neretourne
retournerien
rien
peut class Point

 peutêtre
êtresurchargé
surchargé {


sert
sertààinitialiser
initialiserles
lesattributs
attributsde
del’objet
l’objet float abscisse;
•• IlIlexiste float ordonnee;
existeun
unconstructeur
constructeurpar
pardéfaut
défautpour
pour Point()
chaque
chaqueclasse
classe {
this.abscisse = 0F;
•• Exemple
Exemple:: this.ordonnee = 0F;
Point p1 = new Point(); }
Point p2 = new Point(4F, 5F); Point(float x, float y)
Remarque {
Remarque:: this.abscisse = x;


ililn’existe
n’existepas
pasdededestructeur
destructeur=>=>mécanisme
mécanismeimplicite
implicite this.ordonnee = y;
Java }

 Javaexécute
exécuteenenpermanence
permanenceune
unetâche
tâchededefond
fond ...
qui
quirécupère
récupèrelalaplace
placemémoire
mémoireallouée
allouéeparparununobjet
objet }
qui n’est plus référencé
qui n’est plus référencé

Christine JULIEN 19
Modèle objet
attributs et méthodes de classe
•• Attribut
Attributde
declasse
classe(ou
(ouvariable
variablede
declasse):
classe):


appartient
appartientààlalaclasse
classe


n’existe
n’existequ’en
qu’enun unseul
seulexemplaire
exemplaire class MaClasse
partagé {

 partagépar
parl’ensemble
l’ensembledesdesobjets
objetsde
delalaclasse
classe int a1;


introduit
introduitpar mot-clé: :static
parlelemot-clé static int a2;
static int a3 = 0;
•• Méthode
Méthodede
declasse
classe:: static void m()


ne
netravaille
travailleque
quesur
surdes
desattributs
attributsde
declasse
classe {
ne a3++;

 nemodifie
modifiepas
pasd’attribut
d’attributd’instance
d’instance }


introduit
introduitpar mot-clé: :static
parlelemot-clé static ...
•• Exemple }
Exemple::
MaClasse obj1 = new MaClasse();
a1 a3 a1 MaClasse obj2 = new MaClasse();
a2 a2 MaClasse.m();

obj1 obj2

Christine JULIEN 20
Modèle objet
Héritage
•• Une
Uneclasse
classepeut
peuthériter
hériterdes
desattributs
attributsetetméthodes
méthodesd’une
d’uneautre
autreclasse
classe: :extends
extends
•• Seul
Seull’héritage
l’héritagesimple
simpleestestpossible
possible
•• Possibilité
Possibilitéd’enrichir
d’enrichirlalanouvelle
nouvelleclasse
classe
•• Possibilité
Possibilitéde
deredéfinir
redéfinirdes
desméthodes
méthodesde delalaclasse
classeancêtre
ancêtre
 accès à une méthode redéfinie d’une classe ancêtre par : super
 accès à une méthode redéfinie d’une classe ancêtre par : super

•• Exemple
Exemple: :
class Point import java.awt.Color;
Point { class PointColore extends Point
float abscisse; {
float ordonnee; Color couleur;
void initialiser() void initialiser()
{ {
PointColore this.abscisse = 0F; super.initialiser();
this.ordonnee = 0F; this.couleur = new Color(0,255,0);
} }
... ...
} }

Christine JULIEN 21
Modèle objet
Constructeurs dans les classes dérivées
•• L’instanciation
L’instanciationd’une
d’uneclasse
classedérivée
dérivéeprovoque
provoquel’appel
l’appelau
auconstructeur
constructeurde
delalaclasse
classe
ancêtre
ancêtresuivi
suividu duconstructeur
constructeurdedelalaclasse
classedérivée
dérivée
•• Problème
Problème: :sisileleconstructeur
constructeurde
delalaclasse
classeancêtre
ancêtreadmet
admetununou
ouplusieurs
plusieursparamètres
paramètres


renseigner
renseignerles
lesparamètres
paramètresduduconstructeur
constructeurde
delalaclasse
classeancêtre
ancêtredans
dansleleconstructeur
constructeurde
delala
classe
classedérivée
dérivéeen utilisantsuper
enutilisant super
•• Exemple
Exemple: : PointColoré p = new PointColoré(5.8F, 0.0F, Color.RED);

class Point import java.awt.Color;


Point { class PointColoré extends Point
float abscisse; {
float ordonnee; Color couleur;
Point(float x, float y) PointColoré(float x, float y, Color c)
{ {
PointColoré this.abscisse = x; super(x, y);
this.ordonnee = y; this.couleur = c;
} }
... ...
} }

Christine JULIEN 22
Modèle objet
Encapsulation
•• Fondamentalement,
Fondamentalement,ililexiste
existedeux
deuxtypes
typesdedeprotection
protectiondesdesmembres
membresd’une
d’uneclasse:
classe:
 la partie privée : accessible uniquement par les méthodes de la classe
 la partie privée : accessible uniquement par les méthodes de la classe

 la partie publique : accessible par toutes les classes


 la partie publique : accessible par toutes les classes

•• Java
Javaintroduit
introduit44types
typesdedeprotection
protectiondifférents
différentspar
parl’intermédiaire
l’intermédiairede
demodificateurs
modificateurs: :


private,
private,


protected,
protected,


paquetage
paquetage(protection
(protectionpar
pardéfaut),
défaut),


public
public
•• Les
Lesmodificateurs
modificateurs: :


s’appliquent
s’appliquentaussi
aussibien
biensur
surles
lesattributs
attributsque
quesur
surles
lesméthodes
méthodes(et
(etmême
mêmesursurles
lesclasses
classesinternes)
internes)


lalavisibilité
visibilitédes
desmembres
membresd’uned’uneclasse
classedépend
dépenddudupaquetage
paquetagedans
danslequel
lequelelle
ellesesetrouve
trouveetetde
de
ses liens de parenté avec les autres classes
ses liens de parenté avec les autres classes

Christine JULIEN 23
Modèle objet

Accès à un membre : modificateur private


•• Protection
Protectionlalaplus
plusforte
fortesur
surattributs
attributsetetméthodes
méthodes
•• Empêche
Empêcheleslesobjets
objetsde
detoute
touteautre
autreclasse
classed’y
d’yaccéder
accéder

paquetage A
paquetage B

C3
C6
C1

C2 C5

C4

Christine JULIEN 24
Modèle objet

Accès à un membre : modificateur protected


•• Restreint
Restreintl’accès
l’accèsd’une
d’uneclasse
classeààses
sessous-classes
sous-classes(du
(dumême
mêmepaquetage
paquetageou
oud’un
d’unautre
autre
paquetage)
paquetage)etetaux
auxclasses
classesdu
dumême
mêmepaquetage
paquetage

paquetage A
paquetage B

C3
C6
C1

C2 C5
C5
C2

C4
C4

Christine JULIEN 25
Modèle objet

Accès à un membre : pas de modificateur


•• Restreint
Restreintl’accès
l’accèsd’une
d’uneclasse
classeaux
auxclasses
classesde
deson
sonpaquetage
paquetage
•• C’est
C’estl’accès
l’accèspris
prispar
pardéfaut
défaut

paquetage A
paquetage B

C3
C6
C1

C2 C5

C4

Christine JULIEN 26
Modèle objet

Accès à un membre : modificateur public


•• Fournit
Fournitun
unaccès
accèsààn’importe
n’importequelle
quelleclasse
classe

paquetage A
paquetage B

C3
C6
C1

C2 C5

C4

Christine JULIEN 27
Modèle objet
Liaison dynamique
•• La
Laliaison
liaisondynamique
dynamiquepermet
permetd’invoquer
d’invoquerune
uneméthode
méthodesur
surune
unevariable
variablede
detype
typeobjet
objet
d’après
d’aprèsleletype
typeexact
exactde
del'objet
l'objetréférencé.
référencé.
•• Exemple
Exemple: : class Point
{
Point ...
public void dessiner()
{ ... }
... class PointFormé extends Point
} {
...
public void dessiner()
PointColoré PointFormé
{ ... }
...
}
Point p; class PointColoré extends Point
p = new Point(); {
p.dessiner(); ...
p = new PointColoré(); public void dessiner()
p.dessiner(); { ... }
p = new PointFormé(); ...
p.dessiner(); }

Christine JULIEN 28
Modèle objet
Classe abstraite
•• Une
Uneclasse
classeabstraite
abstraitecontient
contientau
aumoins
moinsune
uneméthode
méthodeabstraite.
abstraite.


une
uneméthode
méthodeabstraite
abstraiteest
estune
uneméthode
méthoderetardée
retardéepossédant
possédantune
unesignature
signaturemais
maisqui
quin’a
n’apas
pas
de corps
de corps
•• Intérêt
Intérêt: :


rassembler
rassemblerles
lesconnaissances
connaissancescommunes
communesààun
unensemble
ensemblede
desous-classes.
sous-classes.
•• Une
Uneclasse
classeabstraite
abstraitenenepeut
peutpas
pasêtre
êtreinstanciée
instanciéemais
maispeut
peutavoir
avoirun
unconstructeur
constructeur
•• Le
Lecorps
corpsd’une
d’uneméthode
méthodeabstraite
abstraitedoit
doitobligatoirement
obligatoirementêtre
êtreredéfini
redéfinidans
dansune
unesous-
sous-
classes
classessinon
sinonlalasous-classe
sous-classeest
estelle-même
elle-mêmeuneuneclasse
classeabstraite
abstraite
•• Exemple
Exemple: : abstract class FigureGéométrique
Figure Géométrique {
...
abstract public int périmètre();
...
}
Rectangle Cercle

Christine JULIEN 29
Modèle objet
Attribut final - Méthode finale
•• Attribut
Attributfinal
final::


attribut
attributinitialisé
initialisélors
lorsde
delaladéclaration
déclaration


de
decontenu
contenunon
nonmodifiable
modifiable


constante
constanted’objet
d’objet


ex
ex: :public
publicfinal
finalColor
ColorCOCO==new newColor(255,255,0);
Color(255,255,0);

•• Attribut
Attributstatique
statiqueetetfinal
final::


attribut
attributinitialisé
initialisélors
lorsde
delaladéclaration
déclaration


de
decontenu
contenunonnonmodifiable
modifiable


constante
constantede declasse
classe


ex
ex: :static
staticfinal
finalfloat
floatPI
PI==3.14F;
3.14F;

•• Méthode
Méthodefinale
finale::


méthode
méthodedontdontlelecorps
corpsne
nepeut
peutpas
pasêtre
êtreredéfini
redéfinidans
dansles
lesclasses
classesdescendantes
descendantes


ex
ex: :final
finalvoid
voidmethodeFinale()
methodeFinale(){{......}}

Christine JULIEN 30
Modèle objet
Interface
•• Une
Uneinterface
interfaceintroduite
introduitepar
parlelemot
motinterface
interfaceest
estune
uneclasse
classe: :


dont
donttoutes
toutesles
lesméthodes
méthodessont sontabstraites
abstraitesetetpubliques,
publiques,


dont
donttous
tousles
lesattributs
attributs(s’il
(s’ilyyen
ena)a)sont
sontfinaux,
finaux,publics
publicsetetstatiques
statiques
•• Spécification
Spécificationformelle
formellede
declasse
classe


indique
indiqueles
lesservices
servicesque
quedevront
devrontrendre
rendreune
uneclasse
classequi
quil’implémente
l’implémente
•• Une
Uneinterface
interfacepeut
peuthériter
hériterd’une
d’uneou
oude
deplusieurs
plusieursinterfaces
interfaces
•• Une
Uneclasse
classepeut
peuthériter
hériterd’une
d’uneclasse
classeetetimplémenter
implémenteruneuneou
ouplusieurs
plusieursinterfaces.
interfaces.
•• Exemple
Exemple: : public interface translatable
Modifiable { ...
Translatable public void translater();
}
implémente public class Cercle
Figure Géométrique extends FigureGéométrique
Bouton implements Modifiable , Translatable
hérite { ...
public void translater() { ... }
Rectangle Cercle public void modifier() { ...}
}

Christine JULIEN 31
Modèle objet
Généricité : les generics (1)

 Permet
Permetde dedéfinir
définirdes
descomportements
comportementscommuns
communsquel
quelque
quesoit
soitlele
type
typedes
desobjets
objetsmanipulés
manipuléssur
surdes
desméthodes,
méthodes,des
desinterfaces
interfacesou
oudes
des
classes.
classes.



Méthode
Méthodegénérique
générique
public <T> void m1(T objet)
{

}

public <T extends Point> void m2(T objet)


{

}

Christine JULIEN 32
Modèle objet
Généricité : les generics (2)

 Classe
Classegénérique
générique
public class A <T>
{

}

public class B <T> extends A <T>


{

}



Interface
Interfacegénérique
générique
public interface <T>
{

}

Christine JULIEN 33
Modèle objet
Généricité : les generics (3)

 Plusieurs
Plusieursparamètres
paramètresde
degénéricité
généricité
public class C <T1, T2>
{

}

 Instanciation
Instanciationd’une
d’uneclasse
classegénérique
générique
A <Integer> obj1 = new A <Integer>;
A <String> obj2 = new A <String>;
C <Point, String> obj3 = new C <Point, String>;

 Instanciation
Instanciationd’une
d’uneméthode
méthodegénérique
générique
Float v = new Float (5.6F);

c.m1(v);

Christine JULIEN 34
Modèle objet
Notion de paquetage (et sous-paquetage)
•• Un
Unpaquetage
paquetageest
estun
unensemble
ensemblede
declasse
classe
•• Permet
Permetde
de: :


regrouper
regrouperdes
desclasses
classesd’un
d’unpoint
pointde
devue
vueconceptuel
conceptuel


définir
définirun
unniveau
niveaude
deprotection
protectionautre
autreque
quepublic
publicetetprivate
private
•• Physiquement
Physiquementun unpaquetage
paquetagecorrespond
correspondààun
unrépertoire
répertoire
•• Déclarations
Déclarations: :
la classe A appartient au paquetage p la classe B utilise la classe A du paquetage p

package p; import p.A;


public class A public class B
{ {
... ...
} }

•• La
Laclasse
classeBButilise
utiliselalaclasse
classeAAdu
dupaquetage
paquetagepp
•• CLASSPATH
CLASSPATH: :variable
variabled’environnement
d’environnementcontenant
contenantlalaliste
listedes
deschemins
cheminsd’accès
d’accèsaux
aux
différents
différentspaquetages
paquetages

Christine JULIEN 35
Modèle objet
Accès à une classe
 Java
Javaintroduit
introduit22modificateurs
modificateursd'accès
d'accèsaux
auxclasses
classes
•• paquetage
paquetage(modificateur
(modificateurpar
pardéfaut),
défaut),


accès
accèsréservé
réservéaux
auxclasses
classesdu
dumême
mêmepaquetage
paquetage
•• public
public(en
(enen-tête
en-têtede
delalaclasse),
classe),


accès
accèsautorisé
autoriséaux
auxclasses
classesextérieures
extérieuresau
aupaquetage
paquetage
 possibilité
possibilitéde
dedéfinir
définirplusieurs
plusieursclasses
classesdans
dansun
unmême
mêmefichier
fichier
•• une
uneseule
seuleclasse
classepeut
peutêtre
êtrepublique
publique
 possibilité
possibilitéde
dedéfinir
définirune
uneclasse
classedans
dansune
uneautre
autreclasse
classe
•• "inner
"innerclass"
class" (version
(version1.1)
1.1)


elle
elleaaaccès
accèsaux
auxattributs
attributsetetméthodes
méthodesprivés
privésde
desa
saclasse
classeenglobante
englobante


possibilité
possibilitéde
dedéfinir
définirune
uneclasse
classenon
nondérivable
dérivable
•• utilisation
utilisationdu
dumodificateur
modificateurfinal
finaldans
dansl’en-tête
l’en-têtede
delalaclasse
classe


impossibilité
impossibilitéde
decréer
créerdes
desclasses
classesdescendantes
descendantesd’une
d’uneclasse
classefinale
finale

Christine JULIEN 36
Modèle objet
Synthèse
 Sauriez-vous
Sauriez-vousdonner
donnerleur
leursignification
signification??
accès attribut méthode classe
private ? ? ?
Rien ? ? ?
protected ? ? ?
public ? ? ?

Mot-clé attribut méthode classe


final ? ? ?
static ? ?
static final ? ?

Christine JULIEN 37
Quelques fonctionnalités au travers de classes
Environnement de programmation
Applications Java Applets Java Beans Java

Kit de compatibilité Java


Compilateur Java Debugger Java

rmi
rmi beans
beans security
security sql
sql
Machine virtuelle text math awt io
text math awt io
JAVA
lang
lang net
net util
util applet
applet

JavaOS Win32 Solaris Mac autres


Christine JULIEN 38
Quelques fonctionnalités au travers de classes
Plateforme Java
http://java.sun.com/javase/6/docs/
http://java.sun.com/javase/6/docs/

Christine JULIEN 39
Quelques fonctionnalités au travers de classes
Quelques chiffres
JDK 1.2 JDK 1.5 JDK 6
JDK 1.0 JDK 1.1 JDK 1.3 JDK 1.4 2006
Version du JDK 1998 2004
1995 1997 2000 2002 Update 16
(Java 2) (Java 5)

Nombre de paquetages 8 23 59 76 135 168 200

Nombre de classes 201 503 1520 1840 2990 3738 3768

J2SE (Standard Edition)


J2ME
J2EE
JDK JDK JDK JDK JDK JDK JDK 6
1.0 1.1 1.2 1.3 1.4 5.0 http://java.sun.com
Christine JULIEN 40
Quelques fonctionnalités au travers de classes
Quelques paquetages


Paquetage
Paquetagejava.lang
java.lang
•• Object,Class,
Object,Class,Boolean,
Boolean,Character,
Character,Integer,
Integer,Long,
Long,Float,
Float,Double,
Double,Number,
Number,Math,
Math,System,
System,
Runtime, Processus, Thread, String, StringBuffer, …
Runtime, Processus, Thread, String, StringBuffer, …


paquetage
paquetagejava.util
java.util
•• Bitset
BitsetDictionary,
Dictionary,Hashset,
Hashset, Properties,
Properties, Date,
Date, Random,
Random,ArrayList,
ArrayList,Stack
Stack......


paquetage
paquetage java.io
java.io
•• FileOutputStream,
FileOutputStream,BufferedOutputStream,
BufferedOutputStream,DataOutputStream,
DataOutputStream,BufferedInputStream,
BufferedInputStream,
PrintStream, FileInputStream, DataInputStream, …
PrintStream, FileInputStream, DataInputStream, …


paquetage
paquetagejava.net
java.net
•• URL,
URL,ServerSocket,
ServerSocket,Socket
Socket


paquetage
paquetagejava.awt
java.awt
•• Button,
Button,TextArea,
TextArea,TextField,
TextField,Label,
Label,Window,
Window,Panel,
Panel,......


paquetage
paquetagejavax.swing
javax.swing
•• JButton,
JButton,JTextArea,
JTextArea,JTextField,
JTextField,JLabel,
JLabel,JWindow,
JWindow,JPanel,
JPanel,......

Christine JULIEN 41
Quelques fonctionnalités au travers de classes
La classe Object
•• Object
Objectest
estlalaclasse
classemère
mèrede
detoute
touteclasse
classe


toute
touteclasse
classehérite
héritepar
pardéfaut
défautdes
desméthodes
méthodesde
decette
cetteclasse
classe

méthode rôle
Object clone() Retourne une copie de l'objet
Retourne une description unicode de l'objet ;
String toString()
à redéfinir par les classes descendantes
Retourne l'objet Class qui décrit la classe en cours
Class getClass()
ex : obj.getClass().getName()
Compare deux objets ;
boolean equals(Object)
à redéfinir par les classes descendantes

Christine JULIEN 42
Quelques fonctionnalités au travers de classes
Ecriture (écran)
•• System.out
System.outdésigne
désigneleleflot
flotstandard
standardde
desortie
sortie

méthode
System.out.print(t) t de type primitif (conversion en chaîne)
System.out.print(o) o de type classe (utilisation de la méthode toString())
System.out.println(t) t de type primitif (conversion en chaîne)
System.out.println(o) o de type classe (utilisation de la méthode toString())

•• En
Encas
casd’affichage
d’affichagede
deplusieurs
plusieursvaleurs,
valeurs,utiliser
utiliserlalaconcaténation
concaténationde
dechaînes
chaînes
System.out.print("somme de "+2+" et "+3+" = "+(2+3));
System.out.print("somme de "+2+" et "+3+" = "+2+3);

Christine JULIEN 43
Quelques fonctionnalités au travers de classes
Lecture (clavier)
•• System.in
System.indésigne
désigneleleflot
flotstandard
standarddedesortie
sortie
•• La
Laclasse
classeScanner
Scannerpermet
permetde deparser
parserles
lesinformations
informationscontenues
contenuesdans
dansleleflot
flotd’entrée
d’entrée
méthode
double nextDouble() Extrait le prochain double du flot d’entrée
float nextFloat() Extrait le prochain float du flot d’entrée
int nextInt() Extrait le prochain int du flot d’entrée
short nextShort() Extrait le prochain short du float d’entrée
long nextLong() Extrait le prochain long du float d’entrée
boolean nextBoolean() Extrait le prochain boolean du float d’entrée
String nextLine() Extrait la prochaine String du float d’entrée

•• Exemple
Exemplede
delecture
lectured’un
d’unentier
entier

Scanner entree = new Scanner(System.in);


int i = entree.nextInt();

Christine JULIEN 44
Quelques fonctionnalités au travers de classes
Les collections génériques
Object
Interface
Collection
Classe abstraite
« implémente »
Classe concrete

AbstractCollection Collections Arrays

Queue List Set

« implémente » « implémente »
« implémente »

AbstractQueue AbstractList AbstractSet

Deque
SortedSet
AbstractSequentielList

« implémente » « implémente »

PriorityQueue LinkedList ArrayList HashSet TreeSet

Christine JULIEN LinkedHashSet 45


Quelques fonctionnalités au travers de classes
La classe ArrayList<T>
•• Permet
Permetde
degérer
gérerdes
deslistes
listesd’objets
d’objets(paquetage
(paquetagejava.util)
java.util)


impossibilité
impossibilitéd’utiliser
d’utilisercette
cetteclasse
classepour
pourstocker
stockerdes
desvariables
variablesde
detype
typeprimitif
primitif(=>
(=>utilisation
utilisation
des classes wrapper)
des classes wrapper)

méthode rôle
void add(int, T) Insère un élément à un rang donné
T remove(int) Supprime un élément de rang donné
T get(int) Retourne le ième élément
int size() Retourne la longueur de la liste
boolean isEmpty() Teste si la liste est vide
int indexOf(Object) Recherche le rang de la première occurrence d’un objet
boolean contains(Object) Vérifie si un objet est présent dans la liste
<T> T[] toArray() Convertit une liste en tableau

Christine JULIEN 46
Quelques fonctionnalités au travers de classes
Pile et File : LinkedList<T>

•• Opérations
Opérationsd’une
d’unepile
piledans
dansLinkedList<T>
LinkedList<T>
méthode rôle
void push(T)  addFirst)
Empile un élément (
T pop()  removeFirst)
Dépile le sommet (
T peek()  peekFirst)
Retourne le sommet de pile (

•• Opérations
Opérationsd’une
d’unefile
filedans
dansLinkedList<T>
LinkedList<T>
méthode rôle
void add(T)  addLast)
Enfile un élément (
T poll()  removeFirst)
Défile la tête (
T peek()  peekFirst)
Retourne la tête de file (

Christine JULIEN 47
Quelques fonctionnalités au travers de classes
La classe HashSet<T>
•• Permet
Permetde
degérer
gérerdes
desensembles
ensemblesd’objets
d’objets(paquetage
(paquetagejava.util)
java.util)


impossibilité
impossibilitéd’utiliser
d’utilisercette
cetteclasse
classepour
pourstocker
stockerdes
desvariables
variablesde
detype
typeprimitif
primitif(=>
(=>utilisation
utilisation
des classes wrapper)
des classes wrapper)

méthode rôle
boolean add(T) Ajoute un élément à un ensemble
void clear() Supprime les éléments d’un ensemble
boolean contains(Object) Examine si un élément appartient à un ensemble
boolean isEmpty() Examine si l’ensemble est vide
boolean remove(Object) Supprime un élément d’un ensemble
int size() renvoie le cardinal de l’ensemble

Christine JULIEN 48
Quelques fonctionnalités au travers de classes
Autres collections
•• Autre
Autreliste
liste::


CopyOnWriteArrayList
CopyOnWriteArrayList

•• Autre
Autreensemble
ensemble::


CopyOnWriteArraySet
CopyOnWriteArraySet

•• Autres
Autresfiles
filesimplémentant
implémentantl’interface
l’interfaceBlockingQueue
BlockingQueue::


LinkedBlockingQueue
LinkedBlockingQueue


ArrayBlockingQueue
ArrayBlockingQueue


PriorityBlockingQueue
PriorityBlockingQueue


DelayQueue
DelayQueue


SynchronousQueue
SynchronousQueue

Christine JULIEN 49
Quelques fonctionnalités au travers de classes
Parcourir une collection ou un tableau


Pour
Pourparcourir
parcourirtoute
touteune
unecollection
collectionon
onpeut
peututiliser
utiliserun
unitérateur
itérateursur
surcette
cette
collection
collection
List<String> l = new ArrayList<String>();
l.add("un");
l.add("deux");

IteratorList<String> it = l.iterator();
while (it.hasNext())
{
System.out.println(it.next()) ;
}



IlIlest
estpréférable
préférabled’utiliser
d’utiliserune
uneitération
itérationsimplifiée
simplifiée
for (String ch : l) // pour chaque chaîne de la liste
{
System.out.println(ch) ;
}

Christine JULIEN 50
Quelques fonctionnalités au travers de classes
La classe Arrays
•• Regroupe
Regroupedes
desméthodes
méthodesstatiques
statiquespour
pourtravailler
travaillerglobalement
globalementsur
surdes
destableaux
tableaux

méthode rôle
static void fill(boolean [], boolean) Remplit le tableau par une valeur donnée
static void fill(char[], int, int,char) Remplit un intervalle par une valeur
static int equals(int[], int[]) Teste si 2 tableaux sont égaux
static void sort(char [] a) Trie par ordre croissant
static String toString(double []) Version unicode du tableau

Christine JULIEN 51
Quelques fonctionnalités au travers de classes
La classe Collections

•• Ne
Nepas
pasconfondre
confondreavec
avecl’interface
l’interfaceCollection
Collection
•• Contient
Contientdes
desméthodes
méthodesstatiques
statiquesagissant
agissantsur
surdes
descollections
collections(List,
(List,Map,
Map,Set)
Set)

méthode rôle
static void shuffle(List<T>) Permute aléatoirement les éléments d’une liste
static void swap(List<T>, int, int) Échange 2 éléments d’une liste
static List<T> emptyList() Teste si 2 tableaux sont égaux
static Map<K, V> emptyMap() Trie par ordre croissant
static Set<T> emptySet() Version unicode du tableau
static void copy(List<T>,List<T>) Copie une liste dans une autre

Christine JULIEN 52
Quelques fonctionnalités au travers de classes
Les collections particulières : les maps

Object

Map
Interface

« implémente »
Classe abstraite

Classe concrete
AnstractMap

SortedMap

« implémente »

HashMap TreeMap

LinkedHashMap

Christine JULIEN 53
Quelques fonctionnalités au travers de classes
La classe TreeMap<K, V>
•• Permet
Permetde
degérer
gérerdes
descouples
couples(clé,
(clé,valeur)
valeur)(paquetage
(paquetagejava.util)
java.util)


impossibilité
impossibilitéd’utiliser
d’utilisercette
cetteclasse
classepour
pourstocker
stockerdes
desvariables
variablesde
detype
typeprimitif
primitif(=>
(=>utilisation
utilisation
des classes wrapper)
des classes wrapper)

méthode rôle
V put(K, V) Insère un couple (clé, valeur) dans la map
V get(Object) Recherche la valeur d’une clé donnée
V remove(Object) Supprime un couple de clé donnée
K firstKey() Retourne la première clé de la map
K lastKey() Retourne la dernière clé de la map
int size() Renvoie le nombre de couples de la map
void clear() Supprime tous les couples d’une map
Collection<V> values() Retourne une collection des valeurs de la map

Christine JULIEN 54
Quelques fonctionnalités au travers de classes
Mécanisme d’exception sur un exemple
class pile class A
{ ... { ...
void dépiler(int elt) throws Exception void méthodeA() throws Exception
{ {
if (this.pileVide()) throw new Exception("dépiler pile vide"); ...
this.tab[++nb]=elt; p.dépiler();
} }
} }

class B
{ ...
void méthodeB()
{
try
{
x.méthodeA ();
...
}
catch (Exception e)
{
System.out.println(e);
e.printStackTrace();
return;
}
Christine JULIEN } 55
Quelques fonctionnalités au travers de classes
Classes d’exceptions et d'erreur


IlIlexiste
existeplusieurs
plusieursclasses
classes Object
d’exception
d’exceptionfournies
fourniesdans
dansl’API
l’API
Throwable



Les
Lesexceptions
exceptionsRunTimeException
RunTimeException Error Exception
sont
sontlevées
levéespar
parlelenoyau
noyauexécutable
exécutable
etetn’ont
n’ontpas
pasbesoin
besoind’être
d’êtresignalées
signalées LinkageError IOException

dans
danslalasignature
signaturedesdesméthodes
méthodes VirtualMachineError
FileNotFoundException
...
EOFException


La
Laclasse
classeError
Errordéfinit
définitles
leserreurs
erreurs
...
irrécupérables
irrécupérables
RuntimeException

InterruptedException


L’utilisateur
L’utilisateurpeut
peutse
sedéfinir
définirses
ses
propres
propresclasses
classesd’exceptions
d’exceptions ...

Christine JULIEN 56
Quelques mécanismes propres à Java
Autoboxing et unboxing
 Autoboxing
Autoboxing(encapsulation)
(encapsulation)
•• Permet
Permetde
detransformer
transformerautomatiquement
automatiquementune
unevariable
variablede
detype
typeprimitif
primitifen
enune
unevariable
variabledu
du
type
typewrapper
wrapper: :


Par
Parexemple
exempleint
inten
enInteger
Integer
Sans autoboxing Avec autoboxing
List<Integer>l=new ArrayList<Integer>(); List<Integer>l=new ArrayList<Integer>();
l.add(new Integer(100)); l.add(100);
 Unboxing
Unboxing(décapsulation)
(décapsulation)
•• Permet
Permetdedetransformer
transformerautomatiquement
automatiquementune
unevariable
variablede
detype
typewrapper
wrapperen
enune
unevariable
variable
de type primitif :
de type primitif :


Par
Parexemple
exempleInteger
Integeren
enint
int
Sans autoboxing Avec autoboxing
int n = l.get(0).intValue(); int n = l.get(0);

Christine JULIEN 57
Quelques mécanismes propres à Java
Enumérations

 Type
Typeénuméré
énuméré::enum
enum
 Permet
Permetde
dedéfinir
définirun
unensemble
ensemblefini
finide
devaleurs
valeurspour
pourune
unedonnée
donnée

 Déclaration
Déclaration
public enum Etat {UN, DEUX, TROIS, … };



Utilisation
Utilisation
Etat e; Etat e;
… …
switch (e) switch (e)
{ ou
ou {
case UN : … case Etat.UN : …
case DEUX : … case Etat.DEUX : …
case TROIS : … case Etat.TROIS : …
… …
} }

Christine JULIEN 58
Références



Sun’s
Sun’sJava
JavaTutorial
Tutorial--La synthèse--Sun's
Lasynthèse Sun'sJava
JavaTutorial
Tutorial
•• Tutorials
Tutorialsand
andreferences
referencesguides
guidesfor
forthe
theJava
JavaProgramming
ProgrammingLanguage
Language
•• java.sun.com/docs/books/tutorial/
java.sun.com/docs/books/tutorial/


Java
Java--La
Lasynthèse
synthèse--
•• G.
G.Clavel,
Clavel,N.
N.Mirouze,
Mirouze,S.S.Munerot,
Munerot,E.E.Pichon,
Pichon,M.
M.Soukal
Soukal(Editions
(EditionsInterEditions)
InterEditions)


Comment
Commentprogrammer
programmeren
enJava
Java--
•• Deitel
Deitel&&Deitel
Deitel(Editions
(EditionsReynald
ReynaldGoulet
GouletInc.)
Inc.)


Java
Java55Synthèse
Synthèsede
decours
coursetetexercices
exercicescorrigés
corrigés
•• Robert
RobertChevallier
Chevallier(Collection
(CollectionSynthex
SynthexPearson
PearsonEducation)
Education)


http://perso.wanadoo.fr/jm.doudoux/java/
http://perso.wanadoo.fr/jm.doudoux/java/


http://lroux.developpez.com/article/java/tiger
http://lroux.developpez.com/article/java/tiger


http://java.developpez.com/livres/
http://java.developpez.com/livres/


……

Christine JULIEN 59