Académique Documents
Professionnel Documents
Culture Documents
Poo
Poo
et de Communication de Sfax
POO : Java
Responsable
Tarak CHAARI
T. CHAARI
tarak.chaari@gmail.com
POO : Java
Objectifs de ce cours
T. CHAARI
Contenu
POO : Java
T. CHAARI
POO : Java
Chapitre
1
C'est quoi Java ?
T. CHAARI
POO : Java
POO : Java
1993,
avec
l'intrt
grandissant
d'Internet,
ce
T. CHAARI
POO : Java
POO : Java
Supporte
des
applications
rseaux
communication java.net)
URL : permet l accs des objets distants
T. CHAARI
(protocoles
de
POO : Java
T. CHAARI
ByteCode
est
POO : Java
Bytecode
Prog.java
COMPILATEUR
JAVA
Class1.class
Code source
Class2.class
POO : Java
Bytecode
JVM
Prog.class
INTERPRETEUR
DE BYTECODE
Rsultats
POO : Java
T. CHAARI
POO : Java
Systme dexploitation
T. CHAARI
MVJ
Code Java
POO : Java
POO : Java
Une
mthode
main() avec
=> main(String[] args)
un
type
de
retour
void.
T. CHAARI
Fichier XXX.java
POO : Java
// Commentaire
POO : Java
Fichier PremierProgramme.java
// Ce programme se contente dafficher le message Ca Marche
class PremierProgramme
{
public static void main(String args[] )
{
System.out.println("Ca Marche");
}
}
T. CHAARI
POO : Java
Fichier PremierProgramme.java
// Ce programme se contente dafficher le message Ca Marche
T. CHAARI
POO : Java
class PremierProgramme
{
}
Le mot class veut dire que nous allons dfinir une nouvelle
classe Java, suivi du nom de cette classe.
En Java, les majuscules et les minuscules sont considrs
comme des caractres diffrents.
PremierProgramme
PREMIERProgramme.
T. CHAARI
nest
pas
identique
POO : Java
}
main() { : signifie que nous allons dfinir une mthode
appele main.
Le mot main indique que cette mthode est la mthode
principale de la classe.
Un interprteur Java a pour fonction dexcuter les
instructions contenues dans le bloc dinstruction de la
mthode principale main, du programme quon lui soumet.
T. CHAARI
POO : Java
T. CHAARI
une
POO : Java
T. CHAARI
class PremierProgramme
{
static void affiche( )
{
System.out.println("Ca Marche");
}
public static void main(String args[] )
{
affiche( );
}
}
T. CHAARI
POO : Java
T. CHAARI
POO : Java
T. CHAARI
POO : Java
POO : Java
Un diteur de texte
Etapes :
Ecrire
le
code
source
du
programme
PremierProgramme.java dans un fichier portant le
nom de la classe.
Respecter
la
casse
(majuscules/minuscules).
des
Compiler
le
code
PremierProgramme.java.
source:
caractres
javac
POO : Java
Simple
diteurs
dveloppement
T. CHAARI
ou
environnement
de
POO : Java
ECLIPSE : www.eclipse.org
T. CHAARI
Etapes :
Crer un projet.
File new Java Project
Project name Test
POO : Java
T. CHAARI
POO : Java
T. CHAARI
POO : Java
T. CHAARI
Excuter le ByteCode
POO : Java
T. CHAARI
POO : Java
Sites Web :
T. CHAARI
POO : Java
Chapitre
2
Les bases du langage
T. CHAARI
POO : Java
POO : Java
Commentaires en lignes
Les commentaires lignes dbutent avec les symboles
``//'' et qui se terminent la fin de la ligne.
...
Ils sont utiliss pour des commentaires courts qui
tiennent sur une ligne.
T. CHAARI
POO : Java
Commentaires multilingnes :
Un commentaire multiligne commence
caractres ``/*'' et se terminent par ``*/''.
par
les
de
POO : Java
T. CHAARI
POO : Java
POO : Java
byte
short
int
long
16
32
64
-128
..
127
-32768
..
32767
-231 .. 231-1
-263 .. 263-1
POO : Java
Taille en bits
Exemple
valeur
T. CHAARI
de
float
double
32
64
3.25
3.25
POO : Java
T. CHAARI
POO : Java
T. CHAARI
POO : Java
T. CHAARI
POO : Java
Syntaxe :
Type identificateur [= constante ou expression];
int NbredeMois = 12 ; int NbredeMois = 4*3 ;
int nbrDeDoigts = 012 ;
boolean Unboolean = false ;
float Unfloatant = 1.3f ;
char Uncaractre = 'c' ; char Uncaractre = \n' ;
String Unstring= " bonjour \n " ;
Et ventuellement, un modificateur daccs ou de
visibilit : final float pi=3.14159
T. CHAARI
POO : Java
type doprations :
daffectation
numrique,
de comparaison,
logique,
sur les chanes de caractres,
de manipulations binaires.
T. CHAARI
le nombre doprandes :
unaire,
binaire,
ternaire.
POO : Java
Action
Exemple
ngation
i=-j
++
incrmentation de 1
i=j++ ou i=++j
--
dcrmentation de 1
i=j-- ou i=--j
T. CHAARI
POO : Java
Oprateurs
binaires
Action
Exemple
addition
i = j+k;
+=
-
i += 2;
soustraction
-=
*
*=
/
T. CHAARI
i= i - j
x=2*y;
x *=x;
x= x * x
i =j/k;
/=
division
(tronque si les
arguments sont entiers)
x /= 10;
modulo
i = j %k;
%=
i= i + 2
i = j - k;
i -= j;
multiplication
Syntaxe
quivalente
i %=2
x= x /10
i= i %2
POO : Java
T. CHAARI
Oprateurs
relationnels
Action
Exemple
<
x<i;
>
i>100;
<=
j<=k;
>=
c>=a;
==
gal
i==20;
!=
diffrent de
c!=z;
POO : Java
T. CHAARI
Oprateurs
logiques
Action
Exemple
ngation
!p;
&
ET
p & (i<10)
OU
p|q
Syntaxe
quivalent
POO : Java
T. CHAARI
POO : Java
Rsultat daffichage
int i = 4 ;
if ( i %2 != 0 ) System.out.print (" i est impair ");
}
}
Attention
:
L'expression
logique
obligatoirement de type boolean.
T. CHAARI
attendue
est
POO : Java
Syntaxe
if (expression boolenne )
{
instruction 1 ;
instruction i ;
}
else
{
instruction j ;
instruction n ;
}
if (i % 2 == 0 )
{
}
else
{
}
Rsultat daffichage
i est pair
T. CHAARI
POO : Java
Syntaxe
if (expression boolene 1)
public class if_else_ifApplication {
{
instruction 1 ;
public static void main(String[ ] args)
{
instruction i ;
int i = 1, j =2 ;
}
if (i == j )
{
else if (expression boolene 2 )
System.out.println (" i est gal j " );
{
instruction j;
}
else if ( i>j)
instruction m ;
{
System.out.println (" i est suprieur j" );
}
}
else
else
{
{
instruction m+1 ;
System.out.println (" i est positive " );
}
}
Rsultat daffichage
i est positive
T. CHAARI
Exemple
POO : Java
Syntaxe
switch (variable)
{
case valeur 1 :
instr1_1; instr1_2;
break;
...
case valeur N :
instrN_1; instrN_2;
break;
default: /* optionnel */
instrD_1; instrD_2; ...
break;
Rsultat daffichage
1
T. CHAARI
POO : Java
{
somme = somme + compteur;
}
System.out.println (somme );
}
}
T. CHAARI
Rsultat daffichage
Fonctionnement :
initialisation du compteur,
comparaison avec max,
ralisation des instructions,
Incrmentation du compteur et on recommence.
POO : Java
compteur++;
System.out.println (somme );
}
T. CHAARI
Rsultat daffichage
6
POO : Java
do
{
}
while (compteur < max ) ;
System.out.println (somme );
}
}
T. CHAARI
Rsultat daffichage
6
POO : Java
Utilisation :
Pour sortir dune structure de boucle avant que la
condition du test soit remplie.
Quand la boucle rencontre une instruction break, elle se
termine immdiatement en ignorant le code restant.
public class BreakApplication {
public static void main(String[ ] args)
{
int compteur =0;
System.out.println (compteur );
compteur++;
}
T. CHAARI
if (compteur == 5) break;
Rsultat daffichage
0
1
2
3
4
POO : Java
Utilisation :
Pour ignorer le reste de la boucle et reprendre
lexcution litration suivante de la boucle.
public class ContinueApplication {
public static void main(String[ ] args)
{
int compteur =0;
T. CHAARI
System.out.println (compteur );
0
1
2
3
5
POO : Java
POO : Java
Objectif :
changer le type d'une donne si besoin.
Comment ? :
Prfixer loprande par le type choisi.
Encadrer le type choisi par des parenthses.
Exemple :
double d = 2.5 ;
long l = (long) d ;
T. CHAARI
POO : Java
T. CHAARI
POO : Java
float k= 1.2 f ;
i = k;
Erreur de compilation
}
Solution :
T. CHAARI
= (int)
k;
POO : Java
}
}
Rsultat daffichage :
T. CHAARI
65
POO : Java
Objectif :
Si un oprateur s'applique sur deux arguments de type
diffrent un des deux arguments sera converti dans le type de
l'autre.
Exemple :
public class ProgrammeSoustraction {
public static void main(String[ ] args)
{
int i;
i = A-1;
Conversion implicite
System.out.print( i ) ;
}
}
T. CHAARI
Rsultat daffichage :
64
POO : Java
Invocation de la
mthode Afficher
POO : Java
Attention :
Il n'y a pas de conversion possible (implicite ou
explicite) entre un type entier et le type boolean :
int i = 0;
If ( i )
{
..
}
If ( i != 0 )
{
..
}
T. CHAARI
// Erreur la compilation
// Ok
POO : Java
monodimensionnel
int[ ] tableau_Entier;
quivalent : int tableau_Entier[ ];
multidimensionnel
Color rgb_cube[ ][ ][ ];
Cration et initialisation
int[] primes = {1, 2, 3, 5, 7};
int[] tableau_Entier = new int[50];
tableau_Entier[0]= 3;
rgb_cube = new Color[256][256][256];
T. CHAARI
POO : Java
T. CHAARI
Rsultat daffichage
50
java.lang.ArrayIndexOutOfBoundsException: 51
POO : Java
Exercice 1
Ecrire
le
code
dune
mthode
afficherTableau
T. CHAARI
POO : Java
T. CHAARI
tableau_Entier[0]=2;
tableau_Entier[1]=5;
afficherTableau(tableau_Entier);
}
}
Exercice 2
POO : Java
ordre invers.
T. CHAARI
POO : Java
T. CHAARI
POO : Java
T. CHAARI
Chapitre
3
Le Concept Objet de Java
POO : Java
Principe POO
T. CHAARI
POO : Java
Principe POO
T. CHAARI
POO : Java
Principe POO
T. CHAARI
POO : Java
Classe : Dfinition
T. CHAARI
POO : Java
Classe : Notations
T. CHAARI
POO : Java
T. CHAARI
POO : Java
Classe : Attributs
T. CHAARI
POO : Java
T. CHAARI
POO : Java
Objet : Dfinition
T. CHAARI
POO : Java
Objet : Notations
T. CHAARI
POO : Java
T. CHAARI
POO : Java
Affectation et comparaison
T. CHAARI
POO : Java
Affectation et comparaison
T. CHAARI
POO : Java
T. CHAARI
POO : Java
Cration dobjets
T. CHAARI
POO : Java
Cration dobjets
T. CHAARI
POO : Java
Cration dobjets
T. CHAARI
POO : Java
Cration dobjets
T. CHAARI
POO : Java
Constructeur de Voiture
T. CHAARI
POO : Java
Constructeur de Voiture
T. CHAARI
POO : Java
T. CHAARI
POO : Java
T. CHAARI
POO : Java
Exercice
T. CHAARI
POO : Java
Solution
T. CHAARI
class Point
{
double x,y;
Point (double a, double b)
{
x=a;
y=b;
}
Point ()
{
x=0;
y=0;
}
void deplacer
(double dx, double dy)
{
x=x+dx;
y=y+dy;
}
}
POO : Java
T. CHAARI
POO : Java
Appel de mthodes
T. CHAARI
POO : Java
Appel de mthodes
T. CHAARI
POO : Java
Objet courant
T. CHAARI
POO : Java
T. CHAARI
POO : Java
T. CHAARI
Solution(1/2)
void afficher(){
System.out.println("("+
this.x+","+this.y+")");
Point (double x, double y) { }
this.x=x;
double distance(Point p){
this.y=y;
return Math.sqrt((this.x}
p.x)*(this.x-p.x)+(this.yp.y)*(this.y-p.y));
Point (Point p) {
}
this.x=p.x;
this.y=p.y;
void deplacer(double dx, double
}
dy){
this.x=this.x+dx;
Point () {
this.y=this.y+dy;
this.x=0;
}
this.y=0;
}
}
POO : Java
class Point {
double x,y;
T. CHAARI
POO : Java
Solution(2/2)
class TestPoint {
public static void main(String[] arguments);
{
Point p1 = new Point(3,1); // cration (appel constructeur)
Point p2 = new Point(); // cration (appel constructeur)
Point p3 = new Point(p1); // cration (appel constructeur)
T. CHAARI
p3.afficher(); // (0,-1)
}
}
POO : Java
Passage de paramtres
T. CHAARI
POO : Java
T. CHAARI
POO : Java
T. CHAARI
POO : Java
Encapsulation
T. CHAARI
POO : Java
Encapsulation
T. CHAARI
POO : Java
Encapsulation
T. CHAARI
POO : Java
T. CHAARI
POO : Java
API Java
T. CHAARI
POO : Java
T. CHAARI
POO : Java
T. CHAARI
POO : Java
Variables de classe
T. CHAARI
POO : Java
Variables de classe
T. CHAARI
POO : Java
Constantes de classe
T. CHAARI
POO : Java
T. CHAARI
POO : Java
Mthode de classe
T. CHAARI
POO : Java
Mthode de classe
T. CHAARI
POO : Java
T. CHAARI
POO : Java
Exercice
- Ecrire le code dune classe Division
qui offre deux mthodes diviser
La premire
dinstance
une
mthode
T. CHAARI
est
Ecrire
le
POO : Java
Solution (1/2)
Public class Division
{
private double a,b;
Division (double a, double b)
{ this.a=a; this.b=b;}
T. CHAARI
Solution (2/2)
POO : Java
T. CHAARI
POO : Java
Chapitre
5
Programmation Oriente
Objet Avance Java
T. CHAARI
POO : Java
T. CHAARI
Classe String
Classe Date
Classe Personne
POO : Java
Classe Date :
class Date {
private int j;
private int m;
private int a;
// jour
// mois
// an
Date( )
{ j=1 ; m=1 ; a=1900 ; }
Date(int j, int m, int a)
POO : Java
class Personne {
private String nom;
private String prnom;
private Date naissance;
Personne(String nom, String prnom, int jour, int mois, int an)
{
this.nom=nom;
this.prnom=prnom;
naissance=new Date(jours,mois,an);
}
void affiche()
{
System.out.println("Identit Personne : ");
System.out.println(nom+ " " +prnom);
naissance.affiche();
}
}
T. CHAARI
POO : Java
class ApplicationPersonne {
Identit Personne :
Jacques DUPONT
1/2/1947
POO : Java
T. CHAARI
POO : Java
Principe :
Lhritage permet de crer une sous catgorie dobjets partir
dune autre catgorie (classe) plus gnrale. Par exemple, Voiture
est une sous catgorie de Vehicule. Etudiant est une sous catgorie
de Personne.
Dans ce cas, on dit que la classe fille (Etudiant) est une extension
par hritage de sa classe mre (Personne).
La classe fille reprend toutes les caractristiques de sa classe mre et
y ajoute dautres plus spcifiques.
Par exemple, dans la classe Personne on trouve les attributs
nom et prnom.
La classe Etudiant ajoute numro dinscription en plus de nom
et prnom qui sont dj automatiquement repris par hritage de
la classe Personne.
T. CHAARI
POO : Java
Syntaxe :
T. CHAARI
POO : Java
Exemple :
Une classe mre Compteur , qui permet de crer
des compteurs classiques.
Dispose de mthodes dincrmentation et de dcrmentation.
class Compteur {
private int valeur ;
Compteur() { valeur = 0 ; }
void inc( ) {valeur ++ ; }
void dec( ) {valeur --; }
int vaut() { return valeur ; }
}
T. CHAARI
POO : Java
Exemple :
Une classe drive CompteurControl de la classe
mre Compteur permet de crer des compteurs
capables de contrler lincrmentation des compteurs
classiques.
class Compteur_Control extends Compteur
{
class Compteur {
private int valeur ;
Compteur() { valeur = 0 ; }
void inc( ) {valeur ++ ; }
void dec( ) {valeur --; }
int vaut() { return valeur ; }
}
T. CHAARI
POO : Java
Utilisation de super() :
Compteur_Control(int maxval)
{
super( );
this.maxval = maxval;
}
T. CHAARI
POO : Java
);
de
la
de
en
POO : Java
}
T. CHAARI
c.dec( );
// Premire dcrmentation
c.dec( );
// Deuxime dcrmentation
System.out.println("valeur : "+c.vaut( ) );
POO : Java
class Compteur {
}
classCompteur_Controle
Compteur_Controleextends
extends Compteur
Compteur
class
{{
..
..
voidinc()
inc()
void
{{
if(vaut(
valeur) << maxval
if(
maxval )) super.inc(
super.inc( ););
}}
}}
POO : Java
class Compteur {
}
void inc()
{
if( valeur < maxval ) super.inc( );
}
T. CHAARI
POO : Java
c2 = c1; // Erreur
POO : Java
Exercice:
T. CHAARI
POO : Java
Dans
certains
(mthodes)
dune
cas,
certains
classe
ne
comportements
peuvent
tre
compltements dfinis
Exemple:
pas
POO : Java
T. CHAARI
POO : Java
Exemple :
class abstract FormeEuclidienne
{
public abstract double perimetre();
}
class Cercle extends FormeEuclidienne
{
...
public double perimetre() { return 2 * Math.PI * r ; }
}
class Rectangle extends FormeEuclidienne
{ ...
public double perimetre() { return 2 * (height + width); }
}
T. CHAARI
POO : Java
Exemple :
- Chaque case du tableau peut avoir diffrentes formes
possibles polymorphisme
FormeEuclidienne[ ] formes = { new Circle(2),
new Rectangle(2,3),
..
};
T. CHAARI
somme_perimetres += formes[i].perimetre( );
POO : Java
Principe de linterface :
Une interface est introduite par le mot cl interface,
et se comporte comme une classe dont toutes les
mthodes sont abstract et dont tous les attributs sont
final.
Les mots cls final et abstract napparaissent pas dans
la dfinition dune interface.
Une interface est un moyen de prciser les services
qu'une classe peut rendre. Cest un modle
d'implmentation.
T. CHAARI
POO : Java
T. CHAARI
POO : Java
Appareil_Electrique
T. CHAARI
POO : Java
classe Radio.
T. CHAARI
POO : Java
interface
Bidule
{
void f( );
}
Plusieurs
ralisations
possibles
spcification (polymorphisme).
dune
mme
POO : Java
T. CHAARI
POO : Java
T. CHAARI
Exercice
Lhritage - Hirarchie
POO : Java
T. CHAARI
FormeGraphique
FormeEuclidienne
Ellipse
Trapeze
Cercle
Rectangle
Carre
Exercice
Ecrire le code des classes suivantes:
POO : Java
qui
hritent
de
la
classe
T. CHAARI
Indications
POO : Java
T. CHAARI