Académique Documents
Professionnel Documents
Culture Documents
Orient Objet
Introduction gnrale
&
historique
Proprits de Java
z
Simplicit
Simplicit et productivit
productivit
-
z
z
Ex
Excution standardis
standardis des programmes.
Maintenance simplifi
simplifi.
Ind
Indpendance visvis--vis des plateformes.
Int
Intgration compl
complte de llOO
Distribu
Distribu
-
z
z
z
z
Un langage de programmation.
La Java Virtual Machine .
Des interfaces de programmation d
dapplication (Java API)
Un ensemble d
doutils permettent la mise en uvre de solution
logicielle. (javadoc
(javadoc,, rmi,
rmi,)
Cours POO
Interpr
Interprt
-
Un programme java n
nest pas compil
compil en code machine mais
transform
transform en code interm
intermdiaire interpr
interprt.
Gestion m
mmoire (
( Garbage collector )
-
La manipulation d
dobjet locaux ou distribu
distribu se fait de la mme fa
faon.
Un syst
systme de ramasse miette permet de d
dcharger le programme
dune gestion fastidieuse de la m
mmoire.
Cours POO
Proprits de Java
z
Ouverture
-
Portabilit :
Robustesse, fiabilit
fiabilit et s
scurit
curit
-
Proprits de Java
Support int
intgr
gr dInternet
Connexion int
intgr
gre aux bases de donn
donnes (JDBC)
Support des caract
caractres internationaux
Distribution et aspects dynamiques
Performance
Dynamique et mutithread
-
MonProg.java
Le compilateur Java g
gnre un
bytecode,
bytecode, c
cest dire un format
interm
intermdiaire, neutre
architecturalement, con
conu pour
faire transiter efficacement le
code vers des hardware
diff
diffrents et/ou plateformes
diff
diffrentes.
Compilateur java
MonProg.class
= bytecode
Le bytecode ne peutpeut-tre
interpr
interprt que par le
processeur de la JVM
JVM
JVM
MAC
Windows
JVM
UNIX
Cours POO
Cours POO
MonProg.c
Compilateur
Compilateur
MonProg.class
MonProg.o
Chaque fois que le
programme est excut
010110
Interprteur
010110
Bouhlel Mohamed Salah
Cours POO
Cours POO
La plateforme Java
z
Version
Nbr
classes
Nbr
packages
1.0
212
1.1
504
23
Versions de Java
-Classe
interne
plus performante
-Int
Intgrationaux navigateur Web.
-JVM
nouveaut
nouveaut
1.2
Ensemble de classe pr
prdfinit de java qui existe dans chaque installation.
Elles sont organis
organises sous forme de package. (E/S, Swing, Awt
Awt)
1520
59
-Swing
-Collections
1.3
1842
76
-Java
SOUND
-JNDI
1.4
2991
135
-E/S
bas niveau
(SAX/DOM)
-SSL, Image,
-XML
Cours POO
Cours POO
10
Commentaires
z
Chapitre 1
lments de base du
langage JAVA
/* commentaire sur
plusieurs
lignes */
Cours POO
12
identificateurs
Exemple:
Exemple:
{
x=2;
y=10;
{x=2;y=10;}
}
Bouhlel Mohamed Salah
z
Cours POO
13
Mots rservs / cl
MaClasse,
MaClasse, _maVariable,
_maVariable, $maFonction
$maFonction,, C1, (Valide)
Valide)
1var, -maclasse, fonctionfonction-recherche, (non valide)
valide)
Cours POO
14
Types de donnes
Abstract
double
int
boolean
else
interface
break
extends
long
byte
final
native
synchronized
case
finally
new
catch
float
package
char
for
private
class
goto
protected
const
if
public
continue
implements return
default
import
volatile
do
instanceof static
Bouhlel Mohamed Salah
Cours POO
strictfp
super
switch
this
throw
throws
transient
try
void
short
while
15
Cours POO
16
Types primitifs
z
Types primitifs
Cours POO
17
Types primitifs
z
Cat
Catgorie entier : types byte, short, int et long
il existe 4 types d
dentiers en java.
chaque type est d
dclar
clar avec llun des mots cl
cls byte, short, int et long.
Taille
Intervalle
byte
1O
-2exp7 .. (2exp7) -1
short
2O
-2exp15 .. (2exp15) -1
int
4O
-2exp31 .. (2exp31) -1
long
8O
-2exp63 .. (2exp63) -1
Exemple:
Int x=2;
Long y=3L;
Bouhlel Mohamed Salah
Cours POO
18
Dclaration et affectation
2.3F
2.3
2.3E4
4F
La d
dclaration et llaffectation s
seffectue de mani
manire similaire au C.
Exemple :
Exemple :
Type
19
Cours POO
20
Conversion de type
z
Cours POO
21
if (<expression bool
boolenne>)
{
//instruction ou bloc d
dinstruction a ex
excuter si condition= vrai.
}
else
{
//instruction ou bloc d
dinstruction a ex
excuter si condition= faux.
}
Exemple :
int i=2; boolean fin;
if(i<0)
{fin=true
{fin=true;; i=0;}
else i++;
Bouhlel Mohamed Salah
Cours POO
22
z=(float
z=(float)) 14.33;
x=(int
x=(int)) z; //x contient la valeur 14
<bloc 1>
<bloc 2>
break;
break;
break;
break;
<bloc n>
break;
break;
Cours POO
23
Cours POO
24
Exemple:
int k=0, i=2;
switch(i)
{
Cest quivalent :
If(codition)
si_test_vrai
Else
si_test_faux
case 1: k+=20;
case 2: k+=2;
case 3: k+=10;
}
k=2
Exemple:
int a=1,b=3;
int min=(a<b)?a:b; //parenthse facultatives
K=?
Cours POO
25
do
{
Exemple:
Exemple:
<instruction ou bloc>
}
while (<expression_bool
enne>)
(<expression_bool
enne>);;
int i=10;
System.out.println(
);
System.out.println(je
je sais compter jusqu
jusqua 10 a llenvers
envers);
do
{
System.out.println(i);
i--;
--;
}
while(i>=0);
while(i>=0);
int i=0;
System.out.println(
);
System.out.println(je
je sais compter jusqu
jusqua 10
10);
while (i<10)
{
System.out.println(i);
i++;
}
Cours POO
26
while (<expression_boolenne>)
{
<instruction ou bloc>
}
Cours POO
27
Cours POO
28
Convention dcriture
z
for (
<initialisation> ; <expression_boolenne> ; <incrmentation> )
{
<instruction ou bloc dinstruction>
}
z
z
z
Exemple:
for (int
(int i=0;i<=10;i++)
System.out.println(i);
Cours POO
29
Classes
class BankAccount, class RacingBike
Interfaces
interface Account
Mthodes
deposer() getName()
Packages
package coursJava
Variables
int accountNumber, int x
Constantes
MAXIMUM_SIZE
Cours POO
30
Compilation et ex
excution du code en ligne de commande DOS
Netbeans (http://www.netbeans.com
(http://www.netbeans.com )
Borland JBuilder (http://www.borland.com/jbuilder
(http://www.borland.com/jbuilder )
IBM WebSphere Studio (http://www.ibm.com/software/awdtools
(http://www.ibm.com/software/awdtools
Sun ONE Studio (http://wwws.sun.com/software/sundev
(http://wwws.sun.com/software/sundev))
Microsoft .Net Studio (http://msdn.microsoft.com/vstudio
(http://msdn.microsoft.com/vstudio))
Jcreator
Cours POO
32
Chapitre 2
Les principes de la
programmation Objet
Objet, classe
Cours POO
33
Notion dobjet
Notion dobjet
Cours POO
35
Cours POO
36
Cours POO
On dit qu
quun objet est encapsuler par son interface la seule fa
faon de
communiquer avec cet objet et d
dinvoquer une des m
mthodes de son
interface.
Lencapsulation d
dun objet par son interface permet de masquer son
contenu possibilit
possibilit de modifier son contenue sans impacte pour le
reste du monde.
37
Table de cuisine
Cours POO
38
Cours POO
39
Chaises
Table de salon
Cours POO
40
Polymorphisme
z
Objets, Classes
Qu
Quest ce qu
quun objet?
z
Cours POO
Attributs typ
typs.
Mthodes.
Identit
Identit, pour le distinguer des autres objets.
Exemple:
z
On peut mod
modliser une personne par llobjet Personne. Les attribut sont alors
les information concernant la personne (nom, pr
prnom, DN,
DN,). Et comme
mthode on aurais par exemple calcul_Age,
calcul_Age, calcul_salaire
calcul_salaire
Cours POO
42
Objets, Classes
Qu
Quest ce qu
quune classe?
z Cest une description d
dun ensemble d
dobjets ayant des propri
proprits et
des comportements commun.
z Les objets sont a lors des repr
reprsentations dynamique (ou
instanciation ) vivante du mod
modle d
dfinit pour eux au travers de la
classe.
Une classe en java est d
dfinie en pr
prcisant son nom, en d
dclarant ces
attributs et en d
dfinissant ses m
mthodes.
Syntaxe:
Class nom_classe
{
// d
dclaration des attributs
// d
dclaration des m
mthodes
}
z
41
Objets, Classes
Cest llunit
unit de base de la conception OO.
Il regroupe a la fois des donn
donnes et des op
oprations qui permettent de
manipuler ces derni
dernires.
Les donn
donnes sont g
gnralement appel
appel attributs et les op
oprations sont
appel
appeles mthode.
thode.
Cours POO
43
Exemple:
Class Rectangle
{
//declaration
//declaration attributs
int long;
int larg;
larg;
// autres attributs eventuels
//declartion
//declartion des fonctions
void allongerRectangle(
allongerRectangle(int lg)
{ longueur+=lg;}
//
// autres m
mthodes
}
Cours POO
44
Objets, Classes
z
Objets, Classes
[<modificateur_visiblit
>] <type> <nom>[=<expression>]
[<modificateur_visiblit
public int x;
public int y=34;
private int z=2;
z
1.
2.
Cours POO
45
Objets, Classes
46
Constructeur de classe
Cours POO
Objets, Classes
Constructeur de classe
Cours POO
47
Ex:
Rectangle (int
(int lg,int larg)
larg) {
longueur=lg; largeur=larg
largeur=larg;;
}
Rectangle () {
longueur=0; largeur=0;
}
Cours POO
48
Objets, Classes
Objets, Classes
Contrle daccs au membre :
Utiliser un objet
z
Lacc
accs a un attribut dans une classe se fait toujours a llint
intrieur
dune m
mthode. Cette m
mthode peut intervenir a la classe elleellemme ou a autre classe.
z Si l
lacc
accs se fait de llext
extrieur de la classe, alors on cr
cre un objet
de la classe puis on applique cette syntaxe:
<nom_Objet>.<
Nom_Attribut>
>
nom_Objet>.<Nom_Attribut
z
Cours POO
49
Objets, Classes
z
z
==: teste si 2 r
rfrences d
dsignent le mme objet.
!= : teste si 2 r
rfrence ne d
dsignent pas le mme objet
instanceof : retourne true si llobjet gauche est une instance de la classe plac
plac
sa droite ou si la comparaison est faite entre un objet d
dune classe impl
implmentant
une interface . Sinon il retourne false.
z Ex :
Class Rectangle
{ private int longueur;
longueur; private int largeur;
largeur;
// d
dclaration des m
mthodes
thodes
}
Class Test
{public static void main (String[] args){
args){
Rectangle r=new Rectangle();
boolean val1=r instanceof Rectangle;//val=true
Rectangle;//val=true
boolean val2=r instanceof Test;//val=false
}}
Bouhlel Mohamed Salah
Cours POO
50
La r
rfrence this :
Objets, Classes
Les r
rfrences :
z
Lacc
accs aux membre (donn
(donnes et m
mthodes) d
dune classe peut tre
contrl
contrl. En effet, llutilisation du modificateur d
dacc
accs private
pour un membre rend impossible tout acc
accs ce membre partir de
lext
extrieur.
z Ex :
Class Rectangle
{ private int longueur;
longueur; private int largeur;
largeur;
// d
dclaration des m
mthodes
thodes
}
Class Test
{public static void main (String[] args){
args){
Rectangle r=new Rectangle();
r.longueur=10; //instruction ronn
ronn}}
z
Accs a un attribut :
Cours POO
Le mot cl
cl this repr
reprsente une r
rfrence sur llobjet courant (celui qui est
entrain d
dex
excuter la m
mthode contenant le this).
this).
La r
rfrence this peut tre utile :
z
z
Lorsqu
Lorsquune variable locale ou param
paramtre cache, en portant le mme nom, un
attribut de la classe.
Pour d
dclencher un constructeur depuis un autre constructeur.
Ex :
Class Date
{
z
}
51
Cours POO
52
Objets, Classes
Objets, Classes
La r
rfrence null :
z Le mot cl
cl null permet de repr
reprsenter la r
rfrence qui ne repr
reprsente
rien.
z On peut assigner cette valeur a n
nimporte quelle variable ou attribut
contenant une r
rfrence.
z Cest aussi la valeur par d
dfaut d
dinitialisation des attributs
repr
reprsentant des r
rfrences.
z Ex :
Class Test
{
Voiture v1; //initialisation a null par dfault.
fault.
void methode()
methode()
{
if (v1==null
(v1==null)) v1=new Voiture();
}
}
Bouhlel Mohamed Salah
Cours POO
53
Objets, Classes
un
objet
est
transmise
comme
argument a une
d
mthode. Le contenue de llobjet peut tre modifi
modifi dans la m
mthode
appel
appele et non sa r
rfrence.
Ex :
class Test
{ int val=11;
public void modif(
modif(int n)
{ n=22; }
public void modifObj(Test
modifObj(Test obj)
obj)
{ obj.val=22; }
public static void main(String a[])
{
Test t=new Test();
int n=0;
t.modif(n); System.out.println(n);
System.out.println(n); //n=0;
t.modifObj(t); System.out.println(t.val);
System.out.println(t.val); //val=22
}
}
Bouhlel Mohamed Salah
void print(
print(int)
int)
void print(
print(float)
float)
void print (double)
z
Cours POO
54
Objets, Classes
Cours POO
55
Attributs de classe:
Cest un attribut marqu par le mot cl static.
z Le mot cl static , utilis pour un attribut, permet
dindiquer que cet attribut est commun a tous les objets
de la classe concerne si on modifie cet attribut pour
un objet donn, il sera modifi pour tous les objets de la
classe.
public static void main (String[] args){
z Ex :
Voiture V1=new Voiture();
class Voiture
Voiture V2=new Voiture();
{ static int count =0;
System.out.println(V1.count);
V1.count=55;
int id;
System.out.println(V2.count);
voiture(){
Voiture.count=22;
count++;
System.out.println(V1.count);
id=count;
}
}
}
z
Cours POO
56
Objets, Classes
Objets, Classes
Mthodes de classe:
Attributs de classe:
z On
z Via
z On
Cours POO
z
z
57
Objets, Classes
Cours POO
58
Objets, Classes
Mthodes de classe:
z Ex :
class MathTool
{ final static double PI=3.14;
static double getPI()
{return(PI);}
class Test
{
void methode1()
{
double i =
MathTool.power(6);
}
static double diametre(double
diametre(double rayon)
void mthode2()
{return(2*PI*rayon);}
{
static double power(double x)
MathTool t=new
{return (x*x);}
MathTool
();
}
double i = t.power(6);
}
}
Bouhlel Mohamed Salah
Cours POO
59
Mthodes de classe:
z
Cours POO
60
Les tableaux
z
Chapitre 3
Tableaux et chanes de
caractres
Les tableaux
62
Les tableaux
Tableau une dimension
Dclaration :
<type> <nomTableau>[ ]; ou
<type> [ ]<nomTableau>;
Exemples:
Int notes[]; // tableau entiers
char[] lettres; //tableau de caractres
short t1[100]; //instruction illgale car il nest pas
//possible de dfinir un tableau de
//taille fixe la dclaration.
Cours POO
Cours POO
Cr
Cration :
la d
dclaration ne fait que r
rserver llespace m
mmoire allant
contenir lladresse du tableau. Cette place m
mmoire est
identifi
identifi par le nom du tableau.
lallocation de la place m
mmoire se fiat par le mot cl
cl new :
<nomTableau>
nomTableau> = new <Type>[<dimension>];
Exemple :
notes = new int[3];
int[3];
Ox123
notes
Ox123
63
Cours POO
64
Les tableaux
Les tableaux
Initialisation:
Lorsqu
Lorsquun tableau est cr
cr.. Chacun de ces lments est
initialis
initialis. Cette initialisation se fait a 0 si les lments sont
des entiers ou des r
rels. A false s
sils sont des bool
boolens et a
null sinon.
lacc
accs un lments du tableau se fait en mettant llindice de
cet lment entre crochets. Par ailleurs si on essaie d
dacc
accd
un lment qui ce trouve en dehors des bornes du tableau
une erreur sera g
gnre.
Exemples:
int tab={3, 5, 7}; // c
cest quivalent a faire
int tab=new int[3];
int[3]; tab[0]=3; tab[1]=5; tab[2]=7;
z
La longueur d
dun tableau peut tre obtenue partir de la
variable membre length.
length.
<nomTableau>.
length
nomTableau>.length
Cours POO
65
Les tableaux
Utilisation:
in[] tab=new int[10];
int[10];
tab[0]=1;
tab[10]=2;// erreur la compilation
Cours POO
66
Les tableaux
Dclaration & cr
cration:
<type> [ ][ ]<
]<nomTableau>=new
nomTableau>=new <type> [N1][ ];
];
<nomTableau>[0]=new
nomTableau>[0]=new <type>[N21];
<nomTableau>[0]=new
nomTableau>[0]=new <type>[N22];
];
Exemples:
Int[][] notes=new int[3][];
int[3][];
notes[0]=new int[3];
int[3];
notes[1]=new int[2];
int[2];
notes[2]=new int[1];
int[1];
Utilisation:
le premier lment d
dun tableau commence a llindice 0 et le
dernier lment a llindice nn-1 (n le nombre d
dllments du
tableau).
Cours POO
67
Dclaration & cr
cration:
si le tableau a deux dimension est rectangulaire, on peut le
cr
crer comme suit :
<type>[][]<nomtableau
>=new<type>[N1][N2];
<type>[][]<nomtableau>=new<type>[N1][N2];
N1: nombre de tableautableau-lment.
N2: nombre d
dllment de chaque tableautableau-lment.
Exemple :
cr
crer une matrice carr
carr :
int [][] matrice= new int[2][2];
int[2][2];
matrice[0][0]=1;
matrice[0][1]=1;
matrice[1][0]=1;
matrice[1][1]=1;
Cours POO
68
Les tableaux
Les tableaux
Exercice :
1. crire une m
mthode qui permet de faire un affichage de ce genre:
z Le
z Exemple:
int[][] tab={{1,0,9},{2,8},{8,5,7}};
tab.length3
tab[1].length2
Bouhlel Mohamed Salah
2. crire une m
mthode qui permet de calculer la somme et la diff
diffrence
de deux matrices pass
pass en param
paramtre.
Cours POO
69
String est une classe qui est fourni avec lAPI Java, elle
dcrit des objets qui contiennent une chane de caractre
constante et permet un traitement trs riches des chanes
de caractres.
Elle dispose des oprateurs + ou += pour concatnation
des chanes de caractres.
Exemple:
String s=il est beau java;
Cours POO
Cours POO
70
71
int length()
length() : retourne le nombre de caract
caractre de la cha
chane.
int indexOf(char
indexOf(char c, int i) : retourne la position du caract
caractre c
partir de la position i.
String substring(
substring(int i, int j): retourne une cha
chane extraite de la
cha
chane sur laquelle est appliqu
applique la m
mthode en partant de la
position i a la position j.
boolean equals(String
equals(String s) : effectue la comparaison
smantique de 2 cha
chanes.
char charAt(
charAt(int i) : retourne la caract
caractre qui se trouve la
position i.
Cours POO
72
Hritage
Introduction :
Chapitre 4
Hritage, Interface et
Package
Supposons qu
quon veut d
dfinir une 2me classe
DateEvenement qui associe a une date un vnement
donn
donne.
Hritage
Introduction :
class DateEvenement
{ int jour, mois, anne; String evenement;
DateEvenement(int j, int m, int a, String e)
{jour=j; mois=m; anne=a; evenement=e;}
public void affecter(int j, int m, int a, String e)
{ jour=j; mois=m; anne=a; evenement=e;}
74
Hritage
Introduction :
Cours POO
Cours POO
75
Puisqu
Puisquon a d
dj la classe Date, on a un moyen plus simple
de d
dfinir la classe DateEvenement qui est lhritage.
Cours POO
76
Hritage
Hritage
Introduction :
On peut alors d
driv
riv la classe DateEvenement partir de la
classe Date en utilisant le mot cl
cl extends:
Lorsqu'on d
dfinit une classe d
driv
rive, il faut s'assurer que, lors de la
cr
cration des objets de cette nouvelle classe, les champs propres
cette classe d
driv
rive ainsi que les champs de la classe de base
soient initialis
initialiss correctement.
Cours POO
77
Hritage
Cours POO
78
On peut alors d
driv
riv la classe DateEvenement partir de la
classe Date en utilisant le mot cl
cl extends:
}
Bouhlel Mohamed Salah
Hritage
Cours POO
Constructeur par d
dfaut : Si le constructeur de la classe d
driv
rive
n'invoque pas le constructeur de la classe de base explicitement
avec l'instruction super(...), Java fait quand mme appel au
constructeur, sans argument, de la classe de base : super(). Un
constructeur d
dfinit comme suit
public DateEvenement(String
DateEvenement(String e) {event
{event = e ; }
est automatiquement transform
transform en
public DateEvenement(String e) { super() ; event = e ; }
z
79
Dans le cas o
o un tel constructeur n'existe pas dans la classe de
base, une erreur de compilation est g
gnre. Il existe un cas o
o
l'absence de l'instruction super(...) ne conduit pas cet appel implicite
implicite
: celui o
o le corps du constructeur commence par l'instruction
this(...).
this(...).
Cours POO
80
Hritage
Hritage
Red
Redfinition des champs :
Enchainement de constructeur :
z
Les champs dclars dans la classes drive sont toujours des champs
supplmentaires.
Ainsi, lors de la cr
cration d'un objet, le premier constructeur invoqu
invoqu
est celui de la classe Object suivi des autres constructeurs dans
dans
l'ordre de la hi
hirarchie de d
drivation des classes.
Cours POO
class A
{
public int i ;
...
}
81
Hritage
class B extends A {
public int i ;
...
public void uneMethode() {
i = 0 ; // i est le champ dfini dans la classe B
this.i = 0 ; // i est le champ dfini dans la classe B
super.i = 1 ; // i est le champ dfini dans la classe A
( (A) this ).i = 1 // i est le champ dfini dans la classe A
}}
Cours POO
82
Hritage
Red
Redfinition des champs :
z Cette technique peut s'appliquer en cascade de la manire suivante :
class C extends B {
public int i ;
...
public void uneMethode()
{
i = 0 ; this.i = 0 ; // i est le champ dfini dans la classe C
super.i = 1 ; ( (B) this ).i = 1; // i est le champ dfini dans la classe B
( (A) this ).i = 1 // i est le champ dfini dans la classe A
}}
Par contre, l'instruction suivante est incorrecte :
super.super.i = 1 ; // Incorrect syntaxiquement !
Tout comme l'utilisation du mot cl this, le mot cl super ne peut tre utilis
dans les mthodes static.
Bouhlel Mohamed Salah
Si l'on dfinit un champ dans la sous classe ayant le mme nom qu'un champ de
la classe de base, il existera deux champs de mme noms. le nom de champ
dsignera toujours le champ dclar dans la classe drive.
Cours POO
83
Red
Redfinition des m
mthodes:
Par exemple, si l'on voulait une nouvelle classe DateAnglais qui ne diffre
de la classe Date que par le format d'impression de la date, il suffirait de
dfinir une classe drive de la classe Date et de redfinir la mthode
imprimer pour cette nouvelle classe.
Cours POO
84
Hritage
Hritage
Mthode static:
Mthode final:
Une mthode final est une mthode qui ne peut tre redfinit dans aucune
sous classe.
Exemple :
class Date {
private int jour, mois, anne ;
public final quelJour() { return jour ; }
... }
Cours POO
85
Hritage
Cest la classe de base de toutes les classe Java.
Les m
mthodes d
dfinit dans cette classes peuvent alors tre utilis
utilis ou
red
redfinis.
Exemples de m
mthodes :
z
z
z
z
z
z
z
z
z
Cours POO
86
La classe Object :
Hritage
La classe Object :
Une mthode static peut galement tre redfinie par une autre mthode
static. Par contre, une static ne peut tre redfinie en une mthode non static.
Cours POO
87
z public
String toString ()
La m
mthode toString est utilis
utilise pour donner une repr
reprsentation
textuelle d'un objet. Ainsi on pourra utilis
utilis la m
mthode System.out.print
en lui donnant comme param
paramtre le nom de llobjet.
Exemple :
public String toString()
e; }
toString() { return jour + " /" + mois + " /" +ann
+ann
z public
Cours POO
88
Hritage
Hritage
On peut parfois utiliser les classes pour dfinir, non pas un type d'objet
bien prcis, mais un concept.
Exemple : soit une classe Forme avec des mthodes abstraites comme
superficie, primtre, tourner, etc On ne sait pas implanter la mthode
superficie dans le cas d'une forme gnrale.
Par contre, une fois connue une forme prcise (un carr, un cercle, etc.),
on sait implanter cette mthode pour cette forme. Autrement dit, un objet de
type forme n'a aucun intrt en soi.
Il ne sera jamais possible de crer un objet de type Forme. Les objets qui
sont susceptible d'exister sont des formes bien prcises : des carrs, des
cercles, des lignes, etc. Ces formes effectives, seront des objets des
classes obtenus en drivant la classe Forme.
Une classe abstraite est une classe partiellement implante i.e. que
certaines des mthodes sont abstraites. Le langage Java impose de
qualifier la classe d'abstraite lorsqu'une de ses mthode est abstraite.
Les objets utiles sont les carrs, les cercles, etc. Par contre, il existe
souvent des caractristiques et comportements communs toutes les
formes.
Cours POO
89
Hritage
Cours POO
90
Interface
Si l'on d
dfinit une sous classes sans implanter toutes les m
mthodes
abstraites de la classe de base, une erreur de compilation est g
gnre.
Exemple :
Introduction :
z Le langage Java ne permet pas l'h
l'hritage multiple. Il pallie ce manque
par l'introduction des interfaces. Le choix d
dlib
libr de Java de supprimer
l'h
l'hritage multiple est dict
dict par un souci de simplicit
simplicit.
class Carr
Carre extends Forme {
...
public void superficie () { ... }
... }
Bouhlel Mohamed Salah
Cours POO
91
Cours POO
92
Interface
Interface
Toutes les m
mthodes qui sont d
dclar
clares dans cette interface sont
abstraites ; aucune implantation n'est donn
donne dans la d
dfinition de
l'interface. Toutes les m
mthodes tant publiques et abstraites, les
mots cl
cls public et abstract n'apparaissent pas : ils sont implicites.
Toutes les m
mthodes d'une interfaces sont toujours publiques et non
statiques.
Tous les champs d'une interface sont public, static et final. Ils sont l
l
pour d
dfinir des constantes qui sont parfois utilis
utilises dans les
mthodes de l'interface. Les mots cl
cls static et final ne figurent pas
dans la d
dfinition des champs ; ils sont implicites.
Cours POO
93
Interface
Cours POO
94
Interface
Interface publique :
Exemple :
La syntaxe de la dclaration d'une interface est la suivante :
interface Service
{
int MAX = 1024 ;
...
int une_mthode(...) ;
...
}
Cours POO
95
Cours POO
96
Interface
Interface
Interface driv :
Cours POO
97
Interface
Cours POO
98
Interface
Hritage diamant :
zTout
Exemple :
interface A { char infoA = 'A'; }
interface B extends A { char infoB = 'B'; }
interface C extends A { char infoC = 'C'; }
interface D extends B, C { char infoD = 'D'; }
Exemple :
interface A { int info = 1; }
interface B extends A { int info = 2; }
zLa
Cours POO
99
Cours POO
100
Package
Package
Importer des packages :
Introduction :
au
z Il correspondent, en quelque sorte, au concept de librairies adapt
adapt
langage Java. Un fichier source destin
destin faire partie du package
monpackage doit pr
prciser son appartenance par la d
dclaration :
package monpackage ;
z Cette d
dclaration pr
prcise que toutes les classes et interfaces d
dfinies
dans ce fichier font partie du package monpackage.
monpackage. Elle doit appara
apparatre
avant toute d
dclaration de classes et interfaces.
z Le
Cours POO
101
Package
Visibilit
Cours POO
102
Cours POO
104
Package
Cours POO
103
Classe Interne
Classe Interne
z Une classe peut tre dfinie lintrieur dune autre classe. Elle
constitue des membres a part entire des classes dinclusion au
mme titre que les mthodes ou les variables.
Permettre de d
dfinir une classe lendroit ou une seule autre en a
besoin.
z
Cours POO
105
Classe Interne
106
Classe Interne
class ClasseParente
{
int x = 10; int y = 12;
private int addition()
{ return (x + y); }
class Externe {
int x = 10; int y = 12;
Externe(){
Externe(){ new Interne(); }
public static void main(String[]
main(String[] args){
args){
new Externe();}
Externe();}
class ClasseInterne
{
void verification()
{ if((x + y)== addition())
System.out.println("La classe interne a bien accd aux membres de sa
classe parente.");
}}
public static void main(String[]
main(String[] args)
args)
{ ClassParente obj_out = new ClasseParente();
ClasseParente();
ClasseInterne obj_in = obj_out.new ClasseInterne();
//c
//cest quivalent : ClasseInterne obj_in = (new ClassParente()).new ClasseInterne();
obj_in.verification();
obj_in.verification();
}}
Bouhlel Mohamed Salah
Cours POO
Cours POO
107
class Interne {
int x = 8; int y = 14;
Interne() {
if (this.x
+ this.y == Externe.this.x + Externe.this.y))
(
System.out.println(
System.out.println( "La classe interne a bien acc
accd l'ensemble des
membres des classes imbriqu
imbriques.");
es.");
}
}
}
Bouhlel Mohamed Salah
Cours POO
108
Cours POO
109
Classe Interne
Cours POO
110
Classe Interne
Cours POO
111
If (obj_in.verification())
{ x = x + y;
System.out.println("La classe
interne a bien
accd aux membres de la
classe extrieure.n x = " +
x+
"ny = " + y + "nz = " + z);
}
else System.out.println("Erreur
!");
}
public static void main(String[] args)
{
ClasseExterne obj_out = new
ClasseExterne();
obj_out.addition(); }
}}
Cours POO
112
Classe Interne
Classe Interne
Cours POO
113
Cours POO
114
Classe Interne
if (obj_in.verification
())
(obj_in.verification())
{ x = x + y;
System.out.println("La
System.out.println("La classe interne
accede aux membres statiques de
la
classe");}
else
System.out.println("Erreur
System.out.println("Erreur !");
}
Pour les d
dclarer on utilise le modificateur static dans la d
dclaration de
la classe.
z
}
z Elles sont interpr
interprter par le compilateur comme tant une classe a part
enti
re.
enti
Classe Interne
Cours POO
115
Cours POO
116
Classe Interne
Classe Interne
class ClasseParente {
static int x = 10; static int y = 12;
// La classe interne statique ne peut acc
accder cette variable
int z = x + y;
static int addition() { return (x + y); }
// La classe interne statique ne peut acc
accder cette m
mthode
int resultat()
resultat() { return (z); }
static class ClasseInterne
{
ClasseInterne()
{
if((x + y)== addition())
System.out.println("La classe interne a bien accd aux membres
statiques de sa classe parente.");
}
}
public static void main(String[] args)
args)
{ new ClasseInterne();
ClasseInterne(); }
}
Bouhlel Mohamed Salah
Cours POO
117
Classe Interne
Cours POO
118
Classe Interne
Cours POO
119
class ClasseExterne {
static int x = 10; static int y = 12;
public static void main(String[] args)
args)
{
Calcul obj = new Calcul() {
float resultat;
public float soustraction(float a, float b) {
resultat = a - b;
System.out.println(resultat);
return resultat; }
public float multiplication(float a, float b) {
resultat = a * b;
System.out.println(resultat);
return resultat; }
public float division(float a, float b) {
if(b != 0){
resultat = a / b;
System.out.println(resultat);
return resultat;
}
else return 0;
} Bouhlel
}; Mohamed Salah
Cours POO
Bouhlel Mohamed Salah
Cours POO
obj.addition(x,
obj.addition(x, y);
obj.soustraction(x,
obj.soustraction(x, y);
obj.multiplication(x,
obj.multiplication(x, y);
obj.division(x,
obj.division(x, y);
}
}
class Calcul {
public float addition(float
addition(float a, float b) {
return a + b;
}
public float soustraction(float
soustraction(float a, float b) {
return a - b;
}
public float multiplication(float
multiplication(float a, float b) {
return a * b;
}
public float division(float
division(float a, float b) {
return a / b;
}
}
120
Classe Interne
Classe Interne
class ClasseExterne {
static int x = 10; static int y = 12;
Cours POO
121
obj.addition();
obj.soustraction();
obj.multiplication();
obj.division();
}
}
interface ICalcul {
float addition();
float soustraction();
float multiplication();
float division();
}
Cours POO
122
Chapitre 5
Une exception est un vnement (une erreur) qui se produit lors de l'ex
l'excution d'un
programme, et qui va provoquer un fonctionnement anormal (par exemple
exemple l'arrt du
programme) de ce dernier.
Soit
1
2
3
4
5
6
7
8
9
le programme suivant :
public class Div1 {
public static int divint (int x, int y) {
return (x/y);
}
public static void main (String [] args)
args) {
int c=0,a=1,b=0;
c= divint(
divint(a,b);
a,b);
System.out.println("
res:: " + c);
System.out.println("res
System.exit(0);
System.exit(0); } }
Le syst
systme affiche l'erreur suivante:
Exception in thread "main" java.lang.ArithmeticException:
java.lang.ArithmeticException: / by zero
at Div.divint(
Div.divint(Div.java:3)
Div.java:3)
at Div.main(
Div.main(Div.java:7)
Div.java:7)
Bouhlel Mohamed Salah
Cours POO
124
Le traitement de l'erreur pourrait consister retourner une valeur: -1 pour une division par
zro, -2 pour un index qui d
dborde etc. Ce traitement devient fastidieux la longue !
La gestion des erreurs consiste donc dfinir le bloc pouvant provoquer l'erreur
(le bloc try),
try), ainsi ce bloc devient isol
isol du reste du programme ; lancer (throw
(throw))
ou attraper (catch) les "objets" repr
reprsentant les exceptions g
gnres.
traitement A
if (!traitement_A
(!traitement_A)) m
mthodes de correction
else
traitement_B
if (!traitement_B
(!traitement_B)) m
mthodes de correction
else
etc.
Bouhlel Mohamed Salah
Cours POO
125
Object
Exceptions contrle
Exception non contrle
Throwable
Error
LinkageError
Exception
IOEcxeption
IllegalAccessException
NoSuchMethodException
ThreadDeath
RuntimeException
VirtualMachineError
IndexOutOfBoundsException
NullPointerException
NumberFormatException
ArithmeticException
Bouhlel Mohamed Salah
Cours POO
127
Cours POO
128
Cours POO
129
z Si
Cours POO
Cours POO
130
z Dans
131
Cours POO
132
2. Capturons lexception
S'il existe un bloc catch qui peut capturer cette exception, il sera
ex
excut
cut en premier, puis le programme poursuit apr
aprs le dernier bloc
catch.
Cours POO
133
try
{ c= divint(
divint(a,b);
a,b); }
catch (ArithmeticException
(ArithmeticException e)
{ System.out.println("Erreur
System.out.println("Erreur a t captur
capture"); }
z Les
Cours POO
134
Cours POO
135
System.out.println("
res:: " + c);
System.out.println("res
}
}
Cours POO
136
Cours POO
137
Cours POO
Cours POO
138
Exemple : factorielle
139
class Factorielle
{
public int calcul(int x)
{
if(x==0)
1;
La solutionreturn
est simple,
tu
tes
tromper
de
else
return x*calcul(x-1);
chiffre 5 au lieu de -5.
}
Fais attention la
!!!
publicprochaine
static fois
void
main(String[] args)
{
Factorielle f=new Factorielle();
System.out.println(f.calcul(-5));
}
}
Bouhlel Mohamed Salah
Cours POO
Mais,
pourquoi ca
plante !!!
140
Exemple : factorielle
Exemple : factorielle
Que faire ?
Si je me trompe
encore une fois ?
Quelquun peut-il
maider?
Cours POO
141
Exemple : factorielle
142
Exemple : factorielle
class Factorielle
{
public int calcul(int
calcul(int x) throws EntierNegatifException,
EntierNegatifException, EntierGrandException
{
if(x<0)
throw new EntierNegatifException();
EntierNegatifException();
else if (x>27)
throw new EntierGrandException("Mon
EntierGrandException("Mon exception entier > 27");
else if(x==0) return 1;
else return x*calcul(xx*calcul(x-1);
}
public static void main(String[] args)
args)
{
Factorielle f=new Factorielle();
try {System.out.println(
System.out.println(f.calcul(88));}
f.calcul(88));}
catch (EntierGrandException e) {System.out.println
{System.out.println((e.getMessage());}
e.getMessage());}
catch (EntierNegatifException e){System.out.println
(e);}
e){System.out.println(e);}
}
}
Cest tous???
Cest facile alors !!!
Non !!!!
Il manque une
dernire
tapes???
Cours POO
143
Cours POO
144
Le bloc finally
Exemple
Cours POO
145
Exemple
Cours POO
146
Cours POO
148
Exemple
Cours POO
147
Chapitre 6
Notion de Flux
z
Les E / S sont g
gres de fa
faon portable (selon les OS) grce la notion
de flux (stream
(stream en anglais).
L'int
L'intrt de la notion de flux est qu'elle permet une gestion homog
homogne :
z
les fichiers,
les tableaux de donn
donnes en m
mmoire,
les lignes de communication (connexion r
rseau).
Cours POO
151
Combin
Combins des flux d
dentr
entre ou de sortie, ils permettent de traduire les
donn
donnes.
z
Bouhlel Mohamed Salah
150
Notion de Flux
Cours POO
E / S bufferis
bufferises,
es, traduction de donn
donnes,
Il va donc s
sagir de combiner ces diff
diffrents types de flux pour r
raliser la
gestion souhait
souhaite pour les E / S.
Bouhlel Mohamed Salah
Cours POO
152
Exemples
flux doctets
z classes
z Les
flux de caractres
z classes
Cours POO
153
Exemples
z
Cours POO
154
Exemples
z
First :
z System : La classe System poss
possde les variables statiques in,
out et err qui sont connect
connectes aux trois flots du syst
systme avant que le
programme commence son ex
excution
z PrintStream
out
z InputStream
in
z PrintStream
err
Cours POO
155
Cours POO
156
Exemples
z
Exemple
Cours POO
157
Exemples
z
158
2me possibilit
public char lectureChar()
{
char b=0;
try
{
}
catch(IOException e){System.out.println(erreur E/S);}
System.out.println(Donne lue :+b);
return b;
}
Bouhlel Mohamed Salah
Cours POO
Cours POO
159
Cours POO
160
Exemple
Cours POO
161
Exemple
Cours POO
162
Cours POO
164
Exemple
Cours POO
163
Exemples
Exemples
Et maintenant pour
voir si vous avez
compris.
Comment je fais pour
lire un entier.
}
catch(IOException e){System.out.println(erreur E/S);}
System.out.println(Donne lue :+res);
return res;
}
Bouhlel Mohamed Salah
Cours POO
165
Exemples
166
}
catch(NumberFormatException e){}
return res;
}
Cours POO
Cours POO
167
Cours POO
168
Cours POO
169
FileOutputStream(String
FileOutputStream(String nom) : si le fichier pr
prcis
cis nexiste pas, il
sera cr
cr.. Si il existe et qu
quil contient des donn
donnes cellescelles-ci seront
cras
crases.
FileOutputStream(String
FileOutputStream(String nom, boolean ajout) : le boolean permet de
pr
prciser si les donn
donnes seront ajout
ajoutes au fichier (valeur true)
true) ou
crasent les donn
donnes existantes (valeur false).
void write(
crire lloctet en param
write(int a) : permet d
dcrire
paramtre dans le flux.
void close() : permet de fermer le flux et lib
libre les ressources qui lui
taient associ
associ.
Cours POO
Cours POO
170
171
Cours POO
172
Cours POO
173
FileWriter(String
FileWriter(String nom) : si le fichier pr
prcis
cis nexiste pas, il sera cr
cr..
Si il existe et qu
quil contient des donn
donnes cellescelles-ci seront cras
crases.
FileWriter(String
FileWriter(String nom, boolean ajout) : le boolean permet de pr
prciser
si les donn
donnes seront ajout
ajoutes au fichier (valeur true)
true) ou crasent les
donn
donnes existantes (valeur false).
void write(
crire lloctet en param
write(int a) : permet d
dcrire
paramtre dans le flux.
void close() : permet de fermer le flux et lib
libre les ressources qui lui
taient associ
associ.
Cours POO
Cours POO
174
175
Cours POO
176
Exemple
Pour am
amlior
lior les performances des flux sur un fichier, la mise en tampon des
donn
donnes lues ou crites permet de traiter un ensemble de caract
caractres
repr
reprsentant une ligne plutt que de traiter les donn
donnes caract
caractres par
caract
caractres. Le nombre d
dop
opration est alors r
rduit.
Cours POO
177
Exemple
Cours POO
178
Exemple
Cours POO
179
180
La classe File
z
Exemple
Voici un aper
aperu de quelques constructeurs et m
mthodes de la classe File :
z
z
z
z
z
z
z
z
z
z
z
z
z
z
z
Cours POO
181
Exemples
182
Exemples
EstEst-ce que l
lutilit
utilit
de la classe File
sarrte a ce stade?
Cest une trs bonne question.
Alors c
cest pareil a
ce qui pr
prcde.
Cours POO
183
Cours POO
184
Exemples
Cours POO
185
Cours POO
Cours POO
186
187
Cours POO
188
Introduction
Chapitre 7
190
LAPI JDBC
z
Cours POO
Cours POO
191
Cours POO
192
Chargement du driver de la BD
z
contient la requte
SQL et la transmet
la base de donnes.
z Connexion la base de
charge et configure
permet de parcourir
lesla base
donnes.
le driver de
informations retournes
par
de donnes.
la base de donnes dans le
cas d'une slection de
z Excution des commandes
donnes
SQL.
DriverManager
Connection
1.
2.
3.
4.
Statement
ralise la connexion
et l'authentification
des
rsultats
(si
la base
de donnes.
Inspection
disponible).
Bouhlel Mohamed Salah
ResultSet
Cours POO
193
Cours POO
194
Chargement du driver de la BD
Chargement du driver de la BD
JDBC-ODBC bridge driver
Application java
Driver JDBC
Driver ODBC
Les mthodes du driver JDBC font appel des
fonctions en langage C d'un driver ODBC.
SGBD
Cours POO
195
Cours POO
196
Chargement du driver de la BD
Chargement du driver de la BD
Application java
Driver en JAVA
Driver
Partie Native
Les mthodes du driver JDBC font appel des
fonctions d'une bibliothque crite dans un
autre langage que Java, qui accdent au SGBD
Protocole du
SGBDR
SGBD
Cours POO
197
198
1. Chargement du driver
z
Application java
Driver en JAVA
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Protocole rseau
du SGBD
z
SGBD
Cours POO
Cours POO
Serveur middleware
SGBD
Chargement du driver de la BD
Protocole du
middleware
199
Class.forName("oracle.jdbc.driver.OracleDriver");
Cours POO
200
2. Etablissement de la connexion
1. Chargement du driver
z
Cours POO
201
Cours POO
2. Etablissement de la connexion
2. Etablissement de la connexion
Exemple :
202
Cours POO
203
Cours POO
204
2. Etablissement de la connexion
2. Etablissement de la connexion
Cours POO
205
Cours POO
Cours POO
207
206
Cours POO
208
Ex : requte de slection
String req = "SELECT * FROM personne" ;
ResultSet rs = stmt.executeQuery ( req ) ;
La m
mthode executeQuery est susceptible de g
gnrer une exception du
type SQLException :
La m
mthode executeUpdate est susceptible de g
gnrer une exception du
type SQLException :
Cours POO
Ou
209
Cours POO
4. Inspection du rsultat
4. Inspection du rsultat
z
Linstruction :
Cours POO
211
210
Cours POO
212
4. Inspection du rsultat
Cours POO
Soit la table
personne suivante :
213
5. fermeture
try
{
stmt=
stmt=con.createStatement();
con.createStatement();
String req=
req= "select * from personne" ;
rs = stmt.executeQuery (req)
req) ;
while(
while(rs.next())
rs.next())
{
System.out.print("id
System.out.print("id = "+ rs.getInt (1) +",\
+",\t ");
System.out.print("nom
("nom
=
"+
rs.getString
(2) +",\
System.out.print
+",\t ");
System.out.print("
prenom = "+ rs.getString (3) +"\
System.out.print("prenom
+"\n ");
}
Cours POO
214
ResultSet
Statement
Connection
Exemple :
try {
rs.close();
stmt.close();
con.close();
} catch(SQLException e){}
}
catch(SQLException
(); }
catch(SQLException e){e.printStackTrace
e){e.printStackTrace();
Cours POO
215
Cours POO
216
Exemple Complet :
import java.sql.*;
class Test {
public static void main(String[] args) {
Connection con=null;
Statement stmt=null;
ResultSet rs=null;
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(ClassNotFoundException e)
{System.out.println("impossible de charger le drivers");}
try {
String url="jdbc:odbc:test";
con=DriverManager.getConnection(url,"","");
}catch(SQLException e)
{System.out.println("impossible de crer une connexion");}
Bouhlel Mohamed Salah
Cours POO
217
Chargement du driver de la BD
Cours POO
219
Cours POO
218