Introduction À Java
Introduction À Java
systemesdeproduction.blogspot.com
Identificateurs
Types primitifs et types de rfrence
Tableaux et chanes de caractres
Arithmtique et oprateurs
Instructions de contrle
8. Les collections
Interfaces
Implmentations HashSet , TreeSet , ArrayList , LinkedList
Algorithmes
10. Multithreading
Dfinition
Raison dtre
Cration
Gestion
11. Annexes
Java et ses concurrents
Les utilitaires de Java
Prsentations
Nom
Activit / Centres dintrt
Exprience de programmation
Motivations pour suivre le cours / Intrt pour Java
Attentes par rapport au cours
Rfrences Web
The Java Tutorial from Sun
http://java.sun.com/docs/books/tutorial/
The Java Developer Connection
http://developer.java.sun.com/developer/index.html
Introduction Java
I. Introduction et historique
Survol du chapitre
Quest-ce que Java ?
Java comme langage de programmation
La plateforme Java
La Java Virtual Machine
Les interfaces de programmation dapplication (API)
MyProgram.java
Java Compiler
MyProgram.class
= bytecode
JVM
Mac
JVM
Windows
JVM
Unix
Considration basique
Excution ralentie cause de linterprteur ?
Le code natif gnr par linterprteur est-il aussi rapide
que celui ralis par un compilateur classique (par ex C)?
Plusieurs processus peuvent tre excuts en mme
temps
Comparable au multitche dun OS
Le temps du CPU est divis (sliced)
Toutes les bibliothques Java
La JVM dfinit :
Les instructions de la CPU
Les diffrents registres
Le format des fichiers .class
Le tas ( Heap ) des objets garbage-collects
Lespace mmoire
Compiler
MyProgram.o
010110
Compiler
MyProgram.class
Chaque fois que le
programme est excut
Interpreter
010110
Bref Historique
1991: Dveloppement de OAK
langage simple, portable et orient objets
pour la programmation dappareils lectroniques mnagers
emprunte la portabilit du Pascal (VM) et la syntaxe de C++
Introduction Java
II. Premire application en Java
EX 2.1
Application HelloWorld
Crer un fichier texte : HelloWorld.java
Rgle de bonne pratique : 1 classe par fichier et 1 fichier par classe
public class HelloWorld
{
public static void main (String[]args)
{
EX 2.2
{
public void paint(Graphics g)
{
g.drawString("Hello the World", 50, 25);
}
}
EX 2.2
Introduction Java
III. Syntaxe du langage Java
Survol du chapitre
Conventions dcriture
Commentaires dans le code source
Identificateurs
Mots-cl
Types primitifs et types de rfrences
Les tableaux ( Array )
La classe String
Arithmtique et oprateurs
Instructions de contrle
Packages
Conventions dcriture
Classes
class BankAccount
class RacingBike
Interfaces
interface Account
Mthodes
deposit()
getName()
Packages
package coursTechnofutur3.bank ;
Variables
int accountNumber
Constantes
MAXIMUM_SIZE
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
On ne peut utiliser ce que lon veut :
Interdiction dutiliser les mots-cls
Commencent 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
P r im it iv e D a t a T y p e s
In te g ra l
b y te
8 b it s - 1 2 8 t o 1 2 7
s h o r t 1 6 b it s - 3 2 7 6 8 t o 3 2 7 6 7
in t
3 2 b it s - 2 ^ 3 1 t o 2 ^ 3 1 -1
lo n g 6 4 b it s - 2 ^ 6 3 t o 2 ^ 6 3 -1
T e x tu a l
c h a r 1 6 b its 0 t o 6 5 5 3 5
F lo a t in g
f lo a t 3 2 b it s 1 .4 E - 4 5 3 . 4 E 3 8
d o u b le 6 4 b it s 4 .9 E - 3 2 4 1 . 8 E 3 0 8
L o g ic a l
o n e b it : t ru e o r fa ls e
Dclaration et initialisation :
int
short
int x=12;
long
byte
double
float
double x=23.2323;
char
boolean
int u = 3;
t=7;
Initialisation de t la valeur 7
u=t;
m=9;
char c;
Dclaration
c=a;
Initialisation
int b = 8;
Affectation de la valeur de b a
a=b;
a=8
b=8
Rfrence:
Adresse
// dclaration
// cration
// dclaration et cration
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
[0]
ox0adfc12
p1
[1]
p2 = new Point(11,16);
p3 = new Point(12,17);
[0]
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;
matriceDePoints[1][1] = p4;
matriceDePoints[1][2] = p5;
[1]
[1]
[2]
14,19
ox0agrc57
p5
La classe String
String nest pas un type primitif, cest une classe
Dclaration de deux String:
String s1, s2;
Initialisation :
s1 = "Hello";
s2 = "le monde";
Dclaration et initialisation :
String s3 = "Hello";
Concatnation :
String s4 = s1 + " " + s2;
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
v1 != v2
gal
diffrent
Oprateurs logiques:
Oprateur
Usage
Renvoie TRUE si
&&
&
||
|
expr1 || expr2
expr1 | expr2
! expr1
!=
expr1 != expr2
Arithmtique et oprateurs
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
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
}
for(int j=20;j>4;j--){
if (i==5) continue;
if (i==7)
break outer; // if i=7, you jump outside the loop and continue
,+j);
package bank
Exemple:
class NormalAccount
class SparingAccount
class BankAccount
package technofutur3.bank
class SparingAccount
class NormalAccount
package technofutur3.mediatheque
import technofutur3.bank.NormalAccount
package mediatheque
class NormalAccount
Exercices
Ding Ding Bottle
Ecrire un programme qui compte de 1 100
Affiche ces nombres lcran
EX 3.1
Calcul de factorielle
Ecrire un programme qui calcule la factorielle dun nombre
EX 3.2
Exercices
Etudiants
EX 3.3
Vous recevez une une les notes de vos N tudiants (/10). N est donn par
lutilisateur au dbut.
Notez pour chaque tudiant sil russit ou choue et, la fin, indiquez le
nombre de ceux qui chouent, le nombre de ceux qui russissent, la moyenne
totale et les deux moyennes de ceux qui chouent et russissent
Introduction Java
IV. Premiers concepts orients objets
package bank;
Les concepts de lOO
import java.lang.*;
Orient objet?
Dclaration
de la classe
Class Body
Variables dinstance
ou champs
Dfinition du
constructeur
Mthodes daccs
Dfinition
des
mthodes
}
Exercices
Les GSM
Crer une classe GSM
Quelles sont les variables dtats accessibles et non accessibles?
Quelles sont les fonctionnalits offertes lutilisateur?
EX 4.1
Appareil de Communication
Tlphone
GSM
Fixe
Walkie-Talkie
Tlfax
Quid du multi-hritage?
Possible ou non dun langage un autre
Exercices
Les tres vivants
Subdiviser les tre vivants en une hirarchie de classes
A chaque niveau dans la hirarchie, indiquer:
Quelles sont les variables dtats accessibles et non accessibles aux autres ?
Quelles sont les comportements exploitables par les autres ?
Quelles sont les comportements internes, cachs aux autres ?
Quelle hirarchie de classes pourrait-on proposer ?
EX 4.2
Pourquoi la modlisation?
Avant de programmer quoi que ce soit, il faut donc modliser les classes et
leurs relations au minimum
Comment?
UML 1.1
UML 1.0
UML partners
UML 0.9
Web - June 96
OOPSLA 95
Other methods
Booch method
OMT
30
OOSE
Design View
Classes, interfaces,
collaborations
Implementation View
Components
Use cases
Active classes
Deployment View
Nodes
La Banque
Grer le
distributeur
Le client
Retirer
de l argent
Effectuer la
Consulter
un compte
maintenance
Un
employ
paul : Client
le systme
Insrer carte
Demander code
Vrifier carte
...
Vrifier code
Nom Classe
Attributs
Mthodes()
BankAccount
MyProgram
- owner : String
- number : String
- solde : int
- interest : double
deposit(int):int
withdraw(int):int
addALoan(Loan l):void
payYourLoans():void
calculInterest():int
isReimbursed(int):void
Bank
Loan
- amount : int
- mensuality : int
NormalAccount
calculInterest():int
SparingAccount
calculInterest():int
Loan(int,int,BankAccount)
reimbourse():void
paul
le distrib.
la carte de P.
la reserve
la banque
le compte de P.
retirer(500)
lireNCompte()
retirerDeLArgent(500,88219)
dbiter(500)
sortirDesBillets(5)
sortirBillets ()
Langages et plateformes
Java
Trs pur et strictement OO
Neutre architecturalement (Multi-plateformes)
Ramasse-miettes, pas de multihritage, nombreuses librairies disponibles
C#
Trs proche de Java
Conu par Microsoft
Introduction Java
V. Programmation oriente objets en Java
Survol du chapitre
La cration dobjets: Constructeurs et mot-cl new
Les variables: Dclaration et porte
Les mthodes: Dclaration, interface et surcharge
Lencapsulation: public , private et protected
Les membres dinstance et de classe: static
Utilisation de lhritage: this et super
Conversion de types
Polymorphisme
Classes abstraites
Interfaces
public BankAccount(String
n,int s,int i)
{
name=n ;
solde=s;
interest=i;
}
public BankAccount(String n)
{
name=n ;
solde=0;
interest=10;
}
Les variables
Les variables
optionnel
La signature de la variable :
Les modificateurs daccs: indiquent le niveau daccessibilit de la variable
[static]: permet la dclaration dune variable de classe
[final]: empche la modification de la variable
[transient]: on ne tient pas compte de la variable en srialisant lobjet
[volatile]: pour le multithreading
Le type de la variable (ex: int, String, double, RacingBike,)
Le nom de la variable (identificateur)
Les variables
Avantages
Rend les programmes plus faciles corriger
Limite le risque derreurs lies au remploi dun nom pour diffrentes variables
Exercices
Analyser la classe Point
EX 5.1
EX 5.2
Les variables
Rfrence:
Adresse
class Point{
int x=7, y=10;
Point(int x,int y){this.x=x;this.y=y;}
void move(int dx,int dy){x+=dx;y+=dy;}
}
Les variables
????
????
x
y
0
0
????
x
y
7
10
3. Excution du constructeur
????
2
3
4. Cration du pointeur
p ox0123abcd
y
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
Exercice
Classe MyPoint
Lire le code et prvoir ce qui apparatra lcran lexcution
Observer en particulier les mcanismes de cration et dassignation de
variables de rfrences dans la classe
EX 5.3
Sa dclaration
Son corps
Signature
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
Exemple:
int solde ;
Lencapsulation (1/2)
Raisons dtre
Lencapsulation (2/2)
classe
package
sous classe
private
protected
public
[aucun]
world
Exercice
EX 5.4a
Ville
- nbHabitants : int
- nomVille : String
+ Ville(String)
+ decrisToi(): void
+ getNomVille(): String
+ getNbHabitants(): int
+ setNbHabitants(int): void
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(), Integer.parseInt(String s), main(String[] args)
Les mthodes statiques ne peuvent pas accder aux variables dinstances
(elles sont au-dessus des variables dinstances)
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
}
Exercice
EX 5.5
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);
}
class BankAccount {
public void computeInterest(){
solde+=300;
//annual gift
}}
class NormalAccount extends BankAccount {
public void computeInterest(){
super.computeInterest();//call the overriden method
solde*=1.07;
//annual increase
}}
Exercice
EX 5.4b
Types de rfrences:
Vers une classe parent ou une interface implmente (ou risque derreur)
Dans ce cas, loprateur de cast nest pas ncessaire (en fonction du contexte)
Peuvent toujours tre casts vers OBJECT
Ex: Voiture VhiculesMotoriss Vhicules Object
Exercice
EX 5.6
Conversion de types
Analyser le code de lapplication Circulation
Observer les mcanismes de conversion de types
Dterminer les conversions valides et celles qui provoqueront une
erreur la compilation
Corriger la classe Circulation pour que lapplication puisse tre
compile et excute correctement
Analyser ensuite la mme application avec cette fois la classe
Circulation2 pour classe principale (sans erreurs) et en observer
les mcanismes de conversion de types
Quels risques pourraient se prsenter en utilisant ces techniques sur
des collections htrognes?
Polymorphisme (1/2)
Dfinition
Polymorphisme (2/2)
Exercice
EX 5.4c
Animal
int age
move():void
eat():void
runAway():void
Cat
Dog
move():void
eat():void
move():void
eat():void
runAway():void
<<interface>>
GraphicalObject
draw(Graphics g):void
intersects(Object o):boolean
Rectangle
Oval
int width,height,x,y
int width,height,x,y
Square
Square(int x,int y,int size)
Exercice
EX 5.7
Exercice
EX 5.7
BankAccount
MyProgram
- String owner
- String number
- int solde
- double interst
deposit(int):int
withdraw(int):int
addALoan(Loan l):void
payYourLoans():void
calculInterest():int
isReimbursed(int):void
Bank
Loan
- int amount
- int mensuality
NormalAccount
calculInterest():int
SparingAccount
calculInterest():int
Loan(int,int,BankAccount)
reimbourse():void
Exercice
EX 5.8
Envoi de messages
Ecrire un programme le plus simple possible pour envoyer un message dun
objet A un objet B, en plaant nanmoins le main dans une classe
spcialement ddie cet effet
Introduction Java
VI. Structure des API Java
Survol du chapitre
Introduction
Organisation gnrale des API
Packages
JAVA
JAVAX
ORG
Introduction
JAVAX
Contient des API rcrits depuis Java 2 et qui sont destins les remplacer
ORG
API provenant de spcifications dfinies par des organismes internationaux
Packages
JAVA
Package
Description
java.applet
java.awt
java.beans
java.io
java.lang
java.math
java.net
java.nio
java.rmi
java.security
java.sql
java.text
java.util
Packages
JAVAX
Package
Description
javax.imageio
javax.naming
javax.net
javax.print
javax.rmi
javax.security
javax.sound
javax.sql
javax.swing
javax.transaction
javax.xml
Packages
ORG
Package
Description
org.ietf
org.omg
org.w3c
org.xml
Introduction Java
VII. Interfaces graphiques et Gestion dvnements
Survol du chapitre
Introduction
Le modle Model-View-Control (MVC)
Gestion dvnements
Mcanismes et structure
Mise en uvre
Graphisme 2D en Java
La classe Rectangle
Introduction
Le modle MVC
Fondement: Sparer
Les responsabilits relatives la saisie des vnements
Celles relatives lexcution des commandes en rponse aux vnements
Sparer au mieux
La gestion de laffichage
Le contrle du composant
Les informations intgres dans le composant
Avantages:
Un mme vnement peut tre envoy plusieurs objets couteurs
Utile si un vnement est potentiellement intressant pour plusieurs couteurs
Java 2: SWING
Nouveau package
Composants graphiques lgers , en pur Java
Tous les composants sont dtachs de lOS
Look & Feel indpendant de lOS
Les Containers
Sont destins accueillir des composants
Grent laffichage des composants
Ex: Frame, Panel, Window
Les Components
Constituent diffrents lments de laffichage (boutons, barres de menus, etc.)
Ex: Button, Canvas, Label, Scrollbar, Checkbox
Les LayoutManagers
Grent la disposition des composants au sein dun conteneur
*
Component
add
1
Canvas
Button
LayoutManager
Container
1
Frame
BorderLayout
FlowLayout
Panel
Hritage de mthodes:
paint(Graphics g) : Affiche le composant
repaint() : Rafrachit laffichage du composant (rappelle la mthode paint)
getGraphics() : Cre un contexte graphique pour le composant
Etc. voir documentation Java en ligne
Hritage de mthodes:
add(Component c) : Intgre le composant spcifi la fin du container
setLayout(LayoutManager l) : Configure le LayoutManager du container
Etc. voir documentation Java en ligne
La classe Frame
Composant du plus haut niveau
La fentre dune application est une instance de cette classe
Le Frame contient les diffrents composants graphiques de lapplication
Ne peut tre intgr dans un autre conteneur
Types principaux:
BorderLayout: divise le conteneur en 5 zones
FlowLayout: rajoute les composants au fur et mesure
GridLayout: applique une grille au conteneur pour aligner les composants
CardLayout: pour un conteneur qui contient plusieurs cartes
GridBagLayout: grille de cellules lmentaires
Rpartition
La largeur lemporte pour le Nord et le Sud
La hauteur lemporte pour lEst et lOuest
Le centre occupe tout ce qui reste
Utilisation
add(unBouton, BorderLayout.NORTH)
new BorderLayout(int, int)
Intervalles horizontal et vertical entre les lments
NORTH
WEST CENTER
SOUTH
EAST
Utilisation
new FlowLayout (int alignment)
alignment: LEFT, CENTER, RIGHT
Utilisation
new GridLayout (int, int)
Dfinit le nombre de lignes et de colonnes
CardLayout
Principe
Pour un container qui contient plusieurs cartes
Seule une carte est visible chaque fois
Lutilisateur peut passer dune carte lautre
Utilisation
new GridBagLayout()
new GridBagConstraints();
Exercice
Une premire application graphique (1/2)
Crer une classe Fenetre hritant de Frame
Construire la fentre dapplication en ajoutant:
Au Nord: un Label
Au Centre: un Panel
Contenant lui-mme trois Button
A placer dans un vecteur
Au Sud: un Button
EX 7.1a
Gestion dvnements
Gestion dvnements
Gestion dvnements
Gestion dvnements
XXXAdapter
1
addXXXListener
contrle
*
J VM
Exemples :
XXXEvent
OS
Contrle
Souris
MyXXXListener
Clavier
Gestion dvnements
Mise en uvre
Avantages et inconvnients
Meilleur sur le plan orient objet
La classe peut hriter dune autre classe
Consistance
Avantages et inconvnients
Code simple (ladapteur redfinit dj les mthodes, etc.)
La classe ne peut plus hriter dune autre classe
Gestion dvnements
Gestion dvnements
Gestion dvnements
Mise en uvre Clavier
Gestion dvnements
void
void
void
void
void
void
void
windowClosed(WindowEvent e) {}
windowIconified(WindowEvent e) {}
windowOpened(WindowEvent e) {}
windowClosing(WindowEvent e) {System.exit(0);}
windowDeiconified(WindowEvent e) {}
windowActivated(WindowEvent e) {}
windowDeactivated(WindowEvent e) {}
Gestion dvnements
Mise en uvre Actions
Exercice
EX 7.1b
Exercice
EX 7.2
Calculatrice
Crer une classe Calculette hritant de Frame et y ajouter:
Graphisme 2D
Fonctionnement
Tout ce qui est ncessaire aux graphismes en 2D est fourni par la
classe Graphics
Chaque composant est toujours dot dun objet de ce type
Graphics g
Graphisme 2D
Classe java.awt.Rectangle
Classe fournie dans le package java.awt
Idale pour servir de squelette la plupart des objets graphiques
On peut inscrire toutes les formes dans un rectangle
Attributs publics:
int x,y, width, height
Mthodes publiques
contains(int x, int y): boolean
Renvoie true si les coordonnes (x,y) sont contenues dans le rectangle
Exercice
EX 7.3
Paint (1/4)
Lobjectif du projet est la ralisation dun diteur graphique permettant
de dessiner des segments de droites colors
(une version BETA de Paint 1.0)
La ralisation de lditeur graphique commencera par la construction
dune fentre (Frame), support de lapplication, que nous
personnaliserons grce divers lments : boutons (Button), listes
droulantes (Choice), zone de dessin (Canvas), etc.
Ensuite nous grerons les vnements gnrs par lutilisateur (clic de
souris, ) pour donner vie cette application
Enfin en utilisant le contexte graphique fourni par la JVM, nous
aborderons les mcanismes de construction graphique en 2D
Introduction Java
VIII. 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
Fournies pour acclrer le dveloppement
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
List
Duplicats permis
SortedSet
Duplicats interdits
Interfaces
Map
Interfaces
Iterator
Exemple:
static void filter(Collection c) {
for (Iterator i = c.iterator(); i.hasNext(); )
if (! cond(i.next()))
i.remove();
}
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 (1/3)
TreeSet (SortedSet)
Contient une structure permettant dordonner les lments
Nettement moins rapide
A nutiliser que si la collection doit tre trie ou doit pouvoir tre parcourue
dans un certain ordre
Implmentations
Sets (2/3)
Implmentations
Sets (3/3)
Implmentations
Lists (1/2)
LinkedList
A utiliser pour
Ajouter rgulirement des lments au dbut de la liste
Supprimer des lments au milieu de la liste en cours ditration
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 la position des lments min(liste) et max(liste)
Sur base dun comparateur min(liste, comparateur) et max(liste, comparateur)
Exercice
EX 8.1
Paint (2/4)
Dfinissez les classes Droites et Dessin permettant dassurer la persistance de
votre uvre malgr les redimensionnements de la fentre, rductions,
changements de focus Utilisez pour ce faire la classe java.util.Vector.
Redfinissez la mthode paint(Graphics g) hrite de la classe abstraite
Component.
Adaptez aussi les mthodes lies au boutons Dfaire et Annuler afin
quils suppriment respectivement la dernire droite traces et toutes les droites
du dessin.
Implmentez linterface Comparable au sein de la classe Dessin afin de
permettre le tri des droites sur base de leur longueur et redfinissez cette fin
la mthode compareTo(Object o)
Ajoutez un bouton permettant de trier les droites du dessin dans le vecteur et
vrifiez que la commande Dfaire supprime dsormais les droites par ordre
de longueur et non plus en fonction de lordre dans lequel elles ont t traces.
Introduction Java
IX. Gestion des exceptions
Survol du chapitre
Introduction
Hirarchie des exceptions
Traitement des exceptions
Interception dexceptions: bloc try catch finally
Lancement (gnration) par une mthode: throws et throw
Introduction
E rro r
I O E x c e p t io n
N u llP o in t e r E x c e p t io n
F ile N o t F o u n d E x c e p t io n
A r it h m e t ic E x c e p t io n
E O F E x c e p t io n
A W T E rro r
V ir t u a lM a c h in e E r r o r
O u tO fM e m o ry E rro r
Animal
Exception
int age
RuntimeException
move():void
eat() throws RuntimeException:void
runAway():void
Cat
BadFoodException
move():void
eat() throws Exception:void
Dog
move():void
eat() throws BadFoodException:void
Exercice
EX 9.1
Paint (3/4)
Prvoir linterception dexceptions de type
ArrayIndexOutOfBoundsException dans les mthodes de la classe
Dessin et provoquer dlibrment une sortie des limites du vecteur
pour vrifier son bon fonctionnement
Crer une nouvelle exception DroiteTropLongueException , qui
devra tre lance chaque fois que lutilisateur tente de tracer une
droite dont la longueur dpasse une certaine limite
Lancer cette exception dans la mthode termineDroite(int, int) de la
classe ZoneGraphique
Intercepter cette nouvelle exception dans la mthode
mouseReleased(MouseEvent) de la classe GestionSouris et faire en
sorte quelle provoque laffichage dun message derreur dans la barre
dtat
Introduction 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
Introduction
Pourquoi le multithreading?
Un programme moderne est compos de
Une interface graphique
Quelques composantes pouvant agir de manire autonome
Sans multithreading
Les composantes ne pourraient agir que lorsque linterface est suspendue
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()
Exercice
EX 10.1
Paint (4/4)
Crer une classe Balle hritant de Thread
Dfinir ses variables et ses mthodes daffichage paint(Graphics g) et
deplaceToi()
Redfinir la mthode run() contenant une boucle infinie dans laquelle
le dplacement de la balle est provoqu
Instancier deux balles dans la zone graphique et lancer leurs Thread
associs
Implmenter linterface Runnable dans la classe ZoneGraphique
afin que lcran soit automatiquement rafrachi intervalles rguliers.
Redfinir la mthode run() et lancer le Thread dans le constructeur de
la classe
Introduction Java
XI. Annexes
Survol du chapitre
Java et ses concurrents
Java v/s CGI
Java v/s Microsoft .Net
Java v/s Perl
Fonctionnalit quivalente
Pages Web dynamiques: JSP ASP
Objets distribus: DCOM RMI, EJB
Accs DB: ODBC JDBC
Java
Code Java Bytecode Multiples OS
.NET
Tout Code MS IL Windows
Aspects communs:
Langages usage gnral
Interprts
Portables
Larges librairies disposition
Diffrences
Perl: pour administrateurs systmes, faiblement typ, intgration facile avec le
shell
Java: pour dveloppeurs dapplications, fortement typ, objets distribus avec
les EJB
Modle Client/Serveur:
Java peut tre utilis sur un client en tant quapplet et sur un serveur
Perl peut tre utilis sur un serveur, mais pas en tant quapplet
java
Interprteur java, lance des programmes
javadoc
Gnrateur de documentation dAPI
jar
Utilitaire darchivage et de compression
javah
Gnrateur de fichiers C/C++ .h
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 bankStream.MyProgram
Lancer Javadoc
Se mettre dans le rpertoire parent de vos packages
Pour crer la javadoc, taper javadoc -d c:\mydir\html
Conditions
demo
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.