Cours Java
Cours Java
Cours Java
Adil Kellouai
Plan du cours
1. Introduction gnrale
2. Base du langage Java
3. Programmation oriente objets en Java
4. Les collections
5. La gestion des Exceptions
6. Multithreading
Rappel Java
I. Introduction gnrale
Ouverture:
Support intgr dInternet
Connexion intgre aux bases de donnes (JDBC)
Plateforme Java
Plateforme = environnement hardware ou software sur
lequel le programme est excut.
La Java Platform se compose de:
la Java Virtual Machine (Java VM)
Plateforme Java
Applet
Abstract Windowing Toolkit (AWT) et Swing pour les interfaces graphiques
Basic Networking (URL, Socket TCP or UDP-,IP)
Evolved Networking (Remote Method Invocation)
Internationalization
Security
..
Plateforme Java
Compiler
MyProgram.o
010110
Compiler
MyProgram.class
Chaque fois que le
programme est excut
JVM
010110
Introduction Java
II. Bases du langage
Survol du chapitre
Packages
Les textes entre /** et */ sont utiliss pour crer des commentaires que
lexcutable JAVADOC pourra traiter afin de produire une documentation (cf.
documentation de lAPI Java)
/** Commentaires destins
la documentation */
Identificateurs
Un identificateur (identifier) permet de dsigner une classe, une
mthode, une variable
Rgles de dfinition des identificateur :
Interdiction dutiliser les mots-cls
Doit commencer par :
Une lettre
Un $
Un _ (underscore)
Mots-cl
abstract
boolean
break
byte
case
catch
char
class
const
continue
default
do
double
else
extends
final
finally
float
for
goto
if
implements
import
instanceof
int
interface
long
native
new
package
private
protected
public
return
short
static
strictfp
super
switch
synchronized
this
throw
throws
transient
try
void
volatile
while
Rfrence:
Adresse
Chart Title
Primitive Data Types
Integral
byte
8bits -128 to 127
short 16bits -32768 to 32767
int
32bits -2^31 to 2^31-1
long 64 bits -2^63 to 2^63-1
Textual
Floating
float 32bits 1.4E-45 3.4E38
double 64bits 4.9E-324 1.8E308
Logical
a=b;
a=8
Affectation de la valeur de b a
b=8
Rfrence:
Adresse
int[] nombres;
// dclaration
nombres = new int[10];
// cration
int[] nombres = new int[10]; // dclaration et cration
nombres[0] = 28;
// initialisation du 1er lment
Exemple:
Crer et initialiser une matrice contenant deux tableaux de 2 et 3 points respectivement
Crer 5 objets de type Point
Affecter ces 5 objets aux 5 lments de la matrice
matriceDePoints
10,15
ox0adfc12
p1
p2 = new Point(11,16);
p3 = new Point(12,17);
[0]
[1]
11,16
ox0adfc43
p2
12,17
dy0adfc14
p3
p4 = new Point(13,18);
p5 = new Point(14,19);
matriceDePoints[0][0] = p1;
matriceDePoints[0][1] = p2;
[0]
13,18
ox0fdfc17
p4
matriceDePoints[1][0] = p3;
[1]
[2]
matriceDePoints[1][1] = p4;
matriceDePoints[1][2] = p5;
[1]
14,19
ox0agrc57
p5
La classe String
String nest pas un type primitif, cest une classe
Arithmtique et oprateurs
Arithmtique lmentaire
Symbole Signification
()
Parenthse
Produit
Division
Modulo
Addition ou concatnation
Soustraction
Arithmtique et oprateurs
Oprateurs de comparaison
Pour comparer deux valeurs:
Oprateur
Exemple
Renvoie TRUE si
>
v1 > v2
>=
v1 >= v2
<
v1 < v2
<=
v1 <= v2
==
v1 == v2
gal
!=
v1 != v2
diffrent
Oprateurs logiques:
Oprateur
Usage
Renvoie TRUE si
&&
&
||
expr1 || expr2
expr1 | expr2
! expr1
!=
expr1 != expr2
Arithmtique et oprateurs
Oprateur
Exemple
quivalent
+=
expr1 += expr2
-=
expr1 -= expr2
*=
expr1 *= expr2
/=
expr1 /= expr2
%=
expr1 %= expr2
Un bloc
Est une suite dinstructions entre accolades { et }
Dlimite la porte des variables qui y sont dclares
Une dclaration
Constitue la signature dun lment (classe, variable ou mthode)
Annonce la dfinition de cet lment
Est (normalement) toujours suivie dun bloc dinstructions
Type dinstruction
Dcision
Boucle
Traitement dexceptions
Branchement
if (expression)
{
//instructions
}
else
{
//instructions dans les autres cas
}
case 1 : instructions;
break;
case 2 : instructions;
break;
default : instructions;
}
FOR
for (initialisation; condition; mise jour de valeurs){
// instructions
}
Initialisation: excuter lorsque le programme rentre pour la premire
fois dans la boucle
Condition : remplir pour recommencer le bloc dinstructions
Mise jour: instruction excute chaque fois que la boucle est termine
Exemples:
for (int i=0 ; i<10 ; i++) {
System.out.println("The value of i is : " + i);
}
WHILE DO WHILE
while (test logique) {
//instructions
}
Si le code de la boucle doit tre excut la premire fois de toute faon:
do {
// code to perform
} while (logical_test)
Boucle infinie:
while (true) {
//instructions
}
CONTINUE [LABEL]
outer:
for (int i=0 ; i<10 ; i++)
for(int j=20;j>4;j--){
if (i==5) continue;
// suite du programme
,+j);
package cours.java
package cours.java
class Chapitre
class Chapitre
class Paragraphe
package formation
class Paragraphe
import cours.java.Chapitre
package cours.cpp
class Chapitre
Exercices
Pair/Impair
Ecrire un programme qui gnre les multiples dun nombre donn
Affiche ces nombres lcran
Remplace les pairs par pair
Remplace les impairs par impair
Calcul de factorielle
Vrification si un entier est premier
Rappel Java
III. Les commandes de base
java
Interprteur java, lance des programmes
javadoc
Gnrateur de documentation dAPI
jar
Utilitaire darchivage et de compression
compile le fichier mentionn, qui doit se trouver dans le package par dfaut
javac be\newco\*.java d c:\classes
compile tout le package be.newco et gnre du code compil dans c:\classes, qui
doit exister
Java
Lance un programme principal
Exemples:
java test.MyProgram
archivage de tout fichier .class, trouv dans le rpertoire courant et tout sousrpertoire, dans le fichier myjarfile.jar
jar xf myjarfile.jar
Extrait tout fichier contenu dans myjarfile.jar vers une structure de rpertoires
linterprteur java reconnat les fichiers .jar et peut les traiter comme
un rpertoire.
Introduction Java
IV. Programmation oriente objets en Java
Survol du chapitre
La cration dobjets: Constructeurs et mot-cl new
Polymorphisme
Classes abstraites
Interfaces
public BankAccount(String
n,int s)
{
name=n ;
solde=s;
}
public BankAccount(String n)
{
name=n ;
solde=0;
}
Les variables
Les variables
Avantages
Rend les programmes plus faciles corriger
Limite le risque derreurs lies au remploi dun nom pour diffrentes variables
Les variables
Rfrence:
Adresse
class Point{
int x=0, y=0;
Les variables
????
????
x
y
0
0
2. Excution du constructeur
????
x
y
2
3
3. Cration du pointeur
p ox0123abcd
x
y
2
3
Les variables
Il ny a dsormais plus de
rfrence vers lancien
Point start , il sera donc
dtruit par le Garbage
Collector
Point p=end;
p.x=12;
start=p;
start ox0123abcd
x
y
4
3
end
oxcafebabe
x
y
23 12
32
oxcafebabe
Sa dclaration
Son corps
Au minimum:
La mthode possde un identificateur et un type de retour
Si la mthode ne renvoie rien le type de retour est void
La surcharge de mthodes
La surcharge est un mcanisme qui consiste a dupliquer une
mthode en modifiant les arguments de sa signature
Java ne permet pas de surcharger une mthode en modifiant son
type de retour
Exemple:
int solde ;
Lencapsulation (1/2)
Raisons dtre
Lencapsulation (2/2)
classe
package
sous classe
private
protected
public
[aucun]
world
solde
solde
soldePrim
Account1
Account2
Mthodes statiques
Fournissent une fonctionnalit une classe entire
Cas des mthodes non destines accomplir une action sur un objet
individuel de la classe
Exemples: Math.random(),
class AnIntegerNamedX {
x est une variable
int x;
dinstance, donc
static public int x() { return x; }
inaccessible pour la
static public void setX(int newX) { this.x = newX; }mthode static setX
}
BankAccount
int solde
}
class NormalAccount extends BankAccount {
public void job(){solde+=1000;}
NormalAccount
job(): void
Dans le constructeur
Il existe toujours un constructeur. Sil nest pas explicitement dfini, il sera un
constructeur par dfaut, sans arguments
this est toujours une rfrence sur lobjet en cours (de cration) lui-mme
super permet dappeler le constructeur de la classe parent, ce qui est
obligatoire si celui-ci attend des arguments
class MyClass{
int x;
MyClass(int x){
this.x=x;// constructeur
}
}
parent
parent
class Employee {
String name,firstname;
Address a;
int age;
Employee(String name,String firstname,Address a,int age){
super();
this. firstname= firstname;
this.name=name;
this.a=a;
this.age=age;
}
Employee(String name,String firstname){
this(name,firstname,null,-1);
}
//annual gift
}}
class NormalAccount extends BankAccount {
public void computeInterest(){
super.computeInterest();//call the overriden method
solde*=1.07;
//annual increase
}}
double d = 3.1416;
int i = (int) d;
Types de rfrences:
Entre classe avec relation dheritage/implmentation (ou risque derreur)
Dans ce cas de cast vers le parent, loprateur de cast nest pas ncessaire
Ex: Voiture Vehicule Object
Polymorphisme (1/2)
Dfinition
class Bank{
BankAccount[] theAccounts = new BankAccount[10];
Polymorphisme (2/2)
Les interfaces
Certaines classes sont conues pour ne contenir prcisment que la
signature de leurs mthodes, sans corps. Ils sont appels interface.
Ne contient que la dclaration de mthodes, sans dfinition (corps)
Permet de dclarer des constantes globales (public static final)
Une classe peut implmenter une ou plusieurs interfaces
Permet de sparer les fonctionnalits offertes par une API de leurs
implmentations
Une classe implmente une interface en utilisant le mot rserv
implements
public interface Runnable {
public void run();
}
API Java
I. Les collections
Survol du chapitre
Introduction
Quest-ce quune Collection?
Le Java Collections Framework
Interfaces
Implmentations
HashSet et TreeSet
ArrayList et LinkedList
Algorithmes
Tri
Autres: Recherche, Mlange, etc.
Introduction
Utilis pour:
Stocker, retrouver et manipuler des donnes
Transmettre des donnes dune mthode une autre
Introduction
Contient des:
Interfaces
Types de donnes abstraits reprsentant des collections
Permettent de manipuler les collections indpendamment de leur reprsentation
Organises en une hirarchie unique
Implmentations
Implmentations concrtes des interfaces Structures de donnes rutilisables
Algorithmes
Mthodes standards fournissant des oprations comme le tri, la recherche, etc.
Interfaces
Structure
Map
Un objet qui tablit des correspondances entre des cls et des valeurs
Ne peut en aucun cas contenir des duplicats
Chaque cl ne peut correspondre qu une valeur au plus
Interfaces de comparaison
Permettent le tri des objets du type implmentant linterface
Deux versions: Comparator et Comparable
Iterator
Permet de grer les lments dune collection
Interfaces
Collection (1/2)
La racine de la structure des collections
Sans ordre spcifique
Duplicats permis
Bulk Operations
addAll(Collections), clear(), containsAll(Collections)
Interfaces
Collection (2/2)
Trois variantes principales:
Set
Duplicats interdits
Sans ordre spcifique
List
Duplicats permis
Contient un ordre spcifique intrinsque
SortedSet
Duplicats interdits
Contient un ordre spcifique intrinsque
Interfaces
Map
Interfaces
Comparaison (1/3)
Deux interfaces
Comparable
Fournit une mthode de comparaison au sein dune classe
Impose de redfinir une seule mthode public int compareTo(Object o)
qui renvoie un entier:
1 si lobjet courant > lobjet o fourni dans la mthode
0 si lobjet courant = lobjet o fourni dans la mthode
-1 si lobjet courant < lobjet o fourni dans la mthode
Comparator
Permet de dfinir une classe servant de comparateur une autre
Impose de redfinir une seule mthode
public int compare(Object o1, Object o2) qui renvoie un entier:
1 si o1 > o2
0 si o1 = o2
-1 si o1 < o2
Interfaces
Comparaison (2/3)
Exemple dimplmentation de Comparable
import java.util.*;
public class Name implements Comparable {
private String firstName, lastName;
public Name(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
public int compareTo(Object o) {
Name n = (Name) o;
int lastCmp = lastName.compareTo(n.lastName);
if(lastCmp==0)
lastCmp = firstName.compareTo(n.firstName);
return lastCmp;
}
}
Interfaces
Comparaison (3/3)
Les types primitifs contiennent toujours un ordre naturel
Implmentations
Structure
Implmentations
Sets
HashSet (Set)
Plus rapide
Noffre aucune garantie en termes de dordre
TreeSet (SortedSet)
Contient une structure permettant dordonner les lments
Moins rapide
A nutiliser que si la collection doit tre trie ou doit pouvoir tre parcourue
dans un certain ordre
Implmentations
Lists (1/2)
LinkedList
A utiliser pour
Ajouter rgulirement des lments au dbut de la liste
Implmentations
Lists (2/2)
Algorithmes
Tri
Algorithmes
Autres
Mlange
Collections.shuffle(liste)
Inversion de lordre
Collections.reverse(liste)
Rinitialisation des lments (remplace tous les lmnts par lobjet spcifi)
Collections.fill(liste, objetParDefaut)
Recherche dextrema
Sur base de lordre des lments sils sont Comparable min(liste) et max(liste)
Sur base dun comparateur min(liste, comparateur) et max(liste, comparateur)
Introduction Java
IX. Gestion des exceptions
Survol du chapitre
Introduction
Introduction
Chart Title
Throwable
Exception
RunTime Exception
Error
IOException
NullPointerException
FileNotFoundException
ArithmeticException
EOFException
AWTError
VirtualMachineError
OutOfMemoryError
Si une exception peut survenir, mais que la mthode nest pas cense
la traiter elle-mme, il faut la remonter la mthode appelante
Il faut prciser que la mthode peut lancer ces exceptions
ajouter une clause throws la signature de la mthode
public void writeList() {
PrintWriter out = new PrintWriter(new FileWriter("OutFile.txt"));
for (int i = 0; i < vector.size(); i++)
out.println("Valeur = " + vector.elementAt(i));
}
Une mthode avec une proprit throws peut lancer des exceptions avec
throw
Toute exception ou erreur lance pendant lexcution provient dun throw
Fonctionne avec les exceptions qui hritent de Throwable (la classe de base)
Le dveloppeur peut crer de nouvelles classes dexceptions
et les lancer avec throw
class MyException extends Exception {
MyException(String msg){
System.out.println("MyException lancee, msg =" + msg);
}
}
void someMethod(boolean flag)throws MyException {
if(!flag) throw new MyException(someMethod);
Une fois lexception lance avec throw, il faut soit lattraper (avec catch), soit
la re-lancer. Si vous la re-lancez, votre mthode doit le dclarer
public void connectMe(String serverName) throws ServerTimedOutException {
boolean success;
int portToConnect = 80;
success = open(serverName, portToConnect);
if (!success) {
throw new ServerTimedOutException("Connection impossible", 80);
}
}
public void connectMe(String serverName) {
boolean success;
int portToConnect = 80;
success = open(serverName, portToConnect);
if (!success) {
try{ throw new ServerTimedOutException("Connection impossible ", 80);
} catch(ServerTimedOutException stoe){ }
}
}
Exercice
Traitement de fichier
Ecrire un programme qui copie le contenu un fichier sur le disque vers
un autre en utilisant la classe BufferedReader, FileReader, FileWriter
Gerer les exceptions lies au programme
API Java
X. Multithreading
Survol du chapitre
Introduction
Dfinition
Raison dtre
Cration de Thread
Par implmentation
Par hritage
Gestion de Thread
Mthodes de gestion
Diagrammes dtat
Introduction
Gre un processus
A accs la mmoire, quil partage avec dautres threads
Multithreading gr par la JVM
Introduction
Pourquoi le multithreading?
Le multithreading
Permet de raliser plusieurs processus indpendants en parallle
Permet de grer les files dattente
Permet au besoin de synchroniser les diffrents processus entre eux
Cration de Thread
Mise en uvre (1/3)
Avantages et inconvnients
Meilleur sur le plan orient objet
La classe peut hriter dune autre classe
Consistance
Avantages et inconvnients
Code simple (lobjet est un Thread lui-mme)
La classe ne peut plus hriter dune autre classe
Cration de Thread
Mise en uvre (2/3)
Cration de Thread
Mise en uvre (3/3)
Object.notify()
Object.notifyAll()
t.sleep()
En attente
dbut
fin
Object.wait()
Fin du sleep()
t.yield()
t.start()
Active
Activable
Scheduler
Ensemble de files ligibles
Fin de run()
Une des files ligibles, pas
ncessairement celle avec la plus
grande priorit.
Exercice
Ecrire un programme qui permet de suivre lordonnancement des
taches entre deux thread.