Vous êtes sur la page 1sur 47

Bibliographie

Livres

Programmation oriente objet II


2e anne S.I.L

Michel Divay , Java et la programmation oriente objet , Dunod eds, 2006. Renaud P l k , J R d Pawlak Jean-Philippe Retaill , Lionel S i t i Programmation Phili R t ill Li l Seinturier, P ti oriente aspect pour Java / J2EE , Eyrolles eds, 2004. Bruce Eckel, Thinking in Java , 2nd revision, 2000 (Disponible sur internet).

Autres supports de cours

Sabeur ELKOSANTINI
sabeur.elkosantini@isima.rnu.tn

Cours de Jean-Michel DOUDOUX :


http://www.jmdoudoux.fr/java/dej/

Cours de Mickal BARON :


http://mbaron.ftp-developpez.com/javase/java.pdf

A. U. : 08-09

S. Elkosantini

A. U. : 09-10

S. Elkosantini

Plan

Plan

Chapitre 1 : Introduction Chapitre 2 : Les premiers pas en Java Chapitre 3 : POO avec Java

Chapitre 1 : Introduction Chapitre 2 : Les premiers pas en Java Chapitre 3 : POO avec Java

A. U. : 09-10

S. Elkosantini

A. U. : 09-10

S. Elkosantini

Introduction
Historique de la POO
Les annes 60 : le langage Simula 67 langage de simulation informatique Simula-67,
Les premiers pas de la programmation oriente objet

Introduction
Historique de la POO
Les L annes 90 : l d' d l' t i d l POO : lge d'or de l'extension de la
Standardisation de C++ Apparition du langage de programmation Java

Les annes 70 : SmallTalk , apparition des concepts de base :


objet, encapsulation, polymorphisme, hritage , etc.

Depuis, volution de loriente objet:


Analyse par objet (AOO). La conception oriente objet COO Les bases de donnes orientes objets (SGBDOO)

Les annes 80 : La Monte en puissance de l orient objet lorient


Apparition de nouveaux langages : Objective C ,C++, Eiffel, Common Lisp Object System

A. U. : 09-10

S. Elkosantini

A. U. : 09-10

S. Elkosantini

Introduction
Programmation procdurale Vs Programmation OO
Programmation procdurale (C, Cobol, Fortran, Pascal, etc.) :
Programmes structurs en procdures et f P t t d t fonctions, ti Des problmes en cas de modification de la structures des donnes, Chaque fonction ou procdure rsout une partie du problme,

Introduction
Programmation par Objets ?
Unit logique : lobjet Objet est dfini par : Une identit : permet de distinguer un objet dun autre objet. Un tat : reprsent par des attributs (variables) qui stockent des valeurs. Un comportement : dfini par des mthodes (procdures) qui modifient des tats. Moto
Couleur : noir Vitesse : 150 Km/h Acclrer Freiner

Programmation OO (Java, C++, C#, Delphi, etc.):


Unit logique : objet, Programmation par composants , Facilit de lvolution du code, Amliorer la conception et la maintenance des grands systmes,

A. U. : 09-10

S. Elkosantini

A. U. : 09-10

S. Elkosantini

Introduction
Le langage Java : historique Le langage Java

Introduction

1990 - St Sun Microsystems (James Gosling, Naughton, Sheridan) : projet de langage petits systmes 1991 : Introduction du langage Oak 1993 : Essor dInternet : adapter Java au Web 1993 1995 : adaptation dOak pour le Web (Excution dapplets) 1995 : prsentation de Java TM par Sun et mise disposition gratuite du JDK sur le net

Prsente dans de trs nombreux domaines dapplication : des serveurs dapplications aux tlphone portables et cartes puces (JME) Quelques chiffres (Java One 2005):

4,5 millions de dveloppeurs Java 700 millions de PC quips d'une JVM 708 millions de tlphones Java 600 millions de priphriques mobiles 1 milliard de Java Cards

A. U. : 09-10

S. Elkosantini

A. U. : 09-10

S. Elkosantini

10

Introduction
Qualits majeures de Java
Simple ( p (compar C++) p )
Gre les dbordements mmoire. Gre lui-mme la dsallocation mmoire (ramasse-miettes). Pas de manipulation explicite de pointeurs. Pas de surcharge doprateurs.

Introduction
Le principe de la machine virtuelle

Fondamentalement Orient-Objet : pas de fonctions/procdures : que des mthodes ! Portable : principe de machine virtuelle

A. U. : 09-10

S. Elkosantini

11

A. U. : 09-10

S. Elkosantini

12

Introduction
Le principe de la machine virtuelle

Introduction
Un programme Java, pour voir

Le byte-code est :
proche d'un langage machine indpendant de la plateforme d'excution (matriel + OS)
Source : cours de Genoud

A. U. : 09-10

S. Elkosantini

13

A. U. : 09-10

S. Elkosantini

14

Introduction
Un programme Java, pour voir
dition du programme source : // Exemple de p g p programme minimal : Salut.java j import java.io.*; //. public class Salut { public static void main (String args[]) { System.out.println("Salut tout le monde"); } }
Compilation : C:\Temp\> j C \T \ javac Salut.java S l j gnration du fichier .. i d fi hi

Introduction
Java Vs C++
En C++:
// Exemple de programme minimal : Salut.cpp #include <stdio.h> // void main () { std::cout<<"Salut tout le monde"; }

En Java:
// Exemple de programme minimal : Salut java Salut.java import java.io.*; //. public class Salut { public static void main (String args[]) { System.out.println("Salut tout le monde"); } }
15 A. U. : 09-10

Excution :

D:\Temp\> java Salut

A. U. : 09-10

S. Elkosantini

S. Elkosantini

16

Introduction
Les diffrentes application Java
Les applications indpendantes:

Introduction
Les diffrentes plateformes Java
Fourni les compilateurs, outils, runtimes, et APIs pour crire, dployer, et excuter des applets et applications dans la langage de programmation Java Destine au dveloppement dapplications dentreprise (business applications) robustes et interoprables. Simplifier le dveloppement et le dploiement dapplications distribues et articules autours du web. Environnement dexcution optimis pour les dispositifs lgers :

Les applets : Programmes excutes dans lenvironnement dun navigateur Web et chargs au travers de pages HTML


A. U. : 09-10

Carte puce (smart cards) Tlphones mobiles Assistants personnels (PDA)

S. Elkosantini

17

A. U. : 09-10

S. Elkosantini

18

Introduction
Les diffrentes plateformes Java : organisation

Introduction
Les diffrentes plateformes Java : organisation
Plateforme dfinie par SUN pour le dveloppement dapplications rparties Base sur un ensemble de technologies Java

JDK

Servlets, JSP(Java Server Pages), JSF (Java Server Faces) : pages web dynamiques EJB (Entreprise Java Beans) : objets mtiers JDBC : API d'accs des SGBD JNDI (Java Naming an Directory Interface) : API pour nommage des objets JTA (Java Transaction API) ; API pour gestion des transactions JAAS (Java Authentication and Authorization Service) Et de nombreuses autres

JRE


19 A. U. : 09-10

JRE (Java Runtime Environnement) pour l'excution de code java compil JDK (Java Developper's Kit) outils de base pour le dveloppement d'applications Java
A. U. : 09-10

S'appuie sur un modle d'architecture multi-tiers (multi-couches)


S. Elkosantini S. Elkosantini
20

Plan

Les premiers pas en Java

Plan

Chapitre 1 : Introduction Chapitre 2 : Les premiers pas en Java Chapitre 3 : POO avec Java

Les oprateurs mathmatiques , logiques et de conversion Les boucles et les structures de contrles Les tableaux Les commentaires

A. U. : 09-10

S. Elkosantini

21

A. U. : 09-10

S. Elkosantini

22

Les premiers pas en Java


La structure dun programme Java
import j i t java.io.*; i * public class Salut {

Les premiers pas en Java


Les types primitifs
Ne pas confondre les types primitifs et les objets Les types primitifs :
Entiers : byte (1 octet) - short (2 octets) - int (4 octets) - long (8 octets) Flottants : float (4 octets) - double (8 octets) Boolens : boolean (true ou false) Caractres : char Quelle est la diffrence ??

public static void main (String args[]) { afficher (5); } public void afficher (int val ) {

} }

System.out.println( System.out.println( le nombre afficher est +val); val);

Dclaration en java : Int a, b, c ; float x; char ch Boolens u, b;


23 A. U. : 09-10

Des erreurs ??!!

Nom du fichier = nom de la classe


A. U. : 09-10

S. Elkosantini

S. Elkosantini

24

Les premiers pas en Java

Les premiers pas en Java

Les valeurs flottantes


Utilise la norme IEEE 754 pour reprsenter les valeurs virgule flottante flottante. Calcul scuris : Existe +0.0 et -0.0 +Infinity et -Infinity NaN (Not A Number) double[] values={ 0.0, -0.0}; for(double v:values) { System.out.println(3/v); System.out.println(v/0.0); } Rsultat :
Infinity NaN -Infinity NaN

Infini et NaN
La norme IEEE 754 introduit trois valeurs particulieres par types de flottants +Infinity est le rsultat de i/0 avec i positif -Infinity est le rsultat de i/0 avec i ngatif NaN est le rsultat de 0/0 x == x est faux si x vaut Double.NaN On doit tester NaN avec Float.isNaN() ou Double.isNaN()

3.0 est un double (64bits), 3.0f (ou 3.0F) est un float (32 bits)
A. U. : 09-10

S. Elkosantini

25

A. U. : 09-10

S. Elkosantini

26

Les premiers pas en Java

Les premiers pas en Java


Les oprateurs et laffectation

Les constantes
Le mot cl final permet de dclarer une constante: la valeur ne doit pas tre modifie pendant lexcution du programme. Dclaration en java : final int n=10, m ; n=n+1;

Les oprateurs mathmatiques


Oprateur = += -= *= /= Exemple Note = 18 Note+ = 2 Note- = 2 Note* = 1.5 Note/ = 2 Note% = 2 Note^ = 2 Equivalent Note = 18 Note = Note + 2 Note = Note - 2 Note = Note * 1.5 Note = Note / 2 Note = Note % 2 Note = Note ^ 2

double nb1; float nb2; nb1/nb2 = ..


Quel est le type du rsultat de lopration ?

Le lt t d li t ti L rsultat de linstruction est . t

%= ^=

float nb1; int nb2; nb1 + nb2 = .

Il est impossible de crer ou d'obtenir un tableau de valeurs constantes en Java !!


A. U. : 09-10 A. U. : 09-10

S. Elkosantini

27

S. Elkosantini

28

Les premiers pas en Java


Les oprateurs et laffectation
Priorit

Les premiers pas en Java


Les oprateurs et laffectation
lincrmentation et la dcrmentation automatique Incrmentation : Nb++ ou ++Nb

() Plus fort

++ , --

*,/,%

+,-

<,>

==,!=

&&, ||

=, += , -= Plus faible

Dcrmentation : Nb-- ou --Nb

Quelle est la diffrence ??

i=2; j=i++; Les instructions Quel est le rsultat de chaque final int N=50; instruction ?? short p=10; char c=2*N+3; // la variable c contient . byte b= 10*N; // le rsultat est .
A. U. : 09-10

Quelles sont les valeurs de i et j dans les deux cas ?

i=2; j=++i;

S. Elkosantini

29

A. U. : 09-10

S. Elkosantini

30

Les premiers pas en Java


Les oprateurs et laffectation
Autres oprateurs
Oprateur && || == != ! Loprateur ET logique Loprateur OU logique Oprateur dgalit Oprateur de diffrence Loprateur ngation

Les premiers pas en Java


Les oprateurs et laffectation

double nb1; double nb2; boolean res1, res2; res1 = ( nb1==nb2) res2= ( nb1==nb2) && (nb1>10)

Conversion de types primitifs byte b=3; // ok car -128<=3<=127 int i=b; float f=i; // ok mais peut-tre perte double d=2.0 int j=d; // erreur de compilation int j2=(int)d; // ok

Les oprateurs de conversion (cast) int i = 200; long l = (long)i; long l2 = (long)200;
A. U. : 09-10

Source : cours de Genoud

S. Elkosantini

31

A. U. : 09-10

S. Elkosantini

32

Les premiers pas en Java


Les oprateurs et laffectation
Les oprateurs bits bits
Oprateur & | ^ ~ Loprateur ET Loprateur OU Oprateur OU exclusif Loprateur ngation

Les premiers pas en Java


Les oprateurs et laffectation
Les oprateurs de dcalage :
Manipules d bit M i l des bits, Utilisables uniquement avec des types primitifs entiers, Les oprateurs sont :

o o

Nb << n : dcalage vers la gauche du nombre Nb de n bits Nb >> n : dcalage vers la droite du nombre Nb de n bits

Exemple : p

Nb1 Nb2 Nb1 & Nb2 Nb1 | Nb2 Nb1 ^ Nb2 ~Nb1

00000101 00000011 . . . .
33

Exemple : N=10000101 int N = 6;

N<< 2 donne ........ N>>1 donne .......

A. U. : 09-10

S. Elkosantini

A. U. : 09-10

S. Elkosantini

34

Les premiers pas en Java


Les boucles et les structures de contrles
if else Syntaxe: if (condition logique) Instructions excutes si la condition logique est vraie else Instructions excutes si la condition logique est fausse Exemple 1: If (moyenne >= 10) System.out.println( ltudiant a russi); else System.out.println( ltudiant doit repasser ses examens);
A. U. : 09-10

Les premiers pas en Java


Les boucles et les structures de contrles
if else Exercice 1: Ecrire la partie du programme Java qui vrifie si un entier n est paire ou impaire et affiche le rsultat.

S. Elkosantini

35

A. U. : 09-10

S. Elkosantini

36

Les premiers pas en Java

Les premiers pas en Java


Les boucles et les structures de contrles

Les boucles et les structures de contrles


switch casedefault switch case default Syntaxe:
switch(expression) {case constante_1: suite dinstructions; break; ... case constante_n: suite dinstructions; break; default : suite dinstruction;}

switch casedefault
Exercice 2: Ecrire la partie du programme Java qui affiche: o Trs bien si la note est A, o Bien si la note est B, o Insuffisant si la note est C, o un message derreur sinon

A. U. : 09-10

S. Elkosantini

37

A. U. : 09-10

S. Elkosantini

38

Les premiers pas en Java

Les premiers pas en Java

Les boucles et les structures de contrles


Les b L boucles it ti l itratives while :
while ( condition logique) { ... // code a excuter dans la boucle }

Les boucles et les structures de contrles


Les boucles itratives for :
for (initialisation du compteur ; condition ; modification) { ... // code a excuter dans la boucle }

do while :
do { Bloc dinstructions ; } while ( condition logique)

Exemple :
for (i = 0 ; i > 10; i++ ) { System.out.println (i); }

Quel est le rsultat de la boucle ?

A. U. : 09-10

S. Elkosantini

39

A. U. : 09-10

S. Elkosantini

40

10

Les premiers pas en Java

Les premiers pas en Java


Les boucles et le calcul flottant

Les boucles et les structures de contrles


Les boucles itratives for :
for (decl/var :array/iterable) { ... // code a excuter dans la boucle }

IEEE 754, pour chaque opration +, , *, / On calcul le rsultat prcis infinie On arrondie au nombre reprsentable le plus proche Attention l'utilisation des flottants dans les boucles

Exemple :
public static void main(String[] args) { for(String s:args) System.out.println(s); }

for(double v=0.0;v!=1.0;v=v+1.0) { System.out.println(v); } // Boucle infinie // utilis plutot '<'


A. U. : 09-10

A. U. : 09-10

S. Elkosantini

41

S. Elkosantini

42

Les premiers pas en Java


Les boucles et les structures de contrles
Exercice : La suite de Syracusep avec p > 1 est dfinie de la faon suivante : a0 = p an+1 = an/2 si an est pair an+1 = 3 an + 1 si an est impair Ecrire une mthode static int syracuse (int p, int n) qui calcule la valeur du nieme terme de la suite Syracusep.

Les premiers pas en Java

Les boucles et les structures de contrles


break et continue break : permet de sortir dune boucle sans excuter la suite des instructions continue : arrte l'excution de l'itration courante, et l'excution reprend en dbut de boucle avec l'itration suivante

A. U. : 09-10

S. Elkosantini

43

A. U. : 09-10

S. Elkosantini

44

11

Les premiers pas en Java


Les tableaux
Tableau unidimensionnels Dclaration : ou int [] tab; int tab[]; tab
NULL

Les premiers pas en Java


Les tableaux
Tableau multidimensionnels Dclaration : type [][] tab; tab
NULL

Pas de dimensions dans la dclaration Dimensionnement: int [] tab = new int [3] tab

Dimensionnement: tab = new type [2][3]; tab . . . ou aussi tab = new type [2]; tab [0] = new type[2]; tab [1] = new type[3] 2 1 . . . . . . . . . . . . . . .

Allocation dans la mmoire selon le type du tableau Initialisation: tab [0]=3; tab [1]=2; tab [2]=1 ou autrement , int [] tab={3,2,1};
A. U. : 09-10

tab

tab

S. Elkosantini

45

A. U. : 09-10

S. Elkosantini

46

Les premiers pas en Java


Les tableaux
Exercice 3:
Soit T une matrice carre de 3 lignes et 3 colonnes. Ecrire un algorithme qui affiche un message informant si la matrice est symtrique ou pas.

Les premiers pas en Java


Les tableaux
Exercice 4:
Ecrire un algorithme qui tri un tableau en utilisant la mthode de tri par insertion.

A. U. : 09-10

S. Elkosantini

47

A. U. : 09-10

S. Elkosantini

48

12

Les premiers pas en Java

Les premiers pas en Java


Les commentaires

Les vecteurs
La classe vecteur permet de g p grer des listes contenant p plusieurs types yp La taille du vecteur est dynamique, contrairement celle dun tableau. Dclaration : Vector v = new Vector() Vector v = new Vector(5) Ajout dlment dans le vecteur : v.addElement(new Integer(1)); // Ajouter un premier lment v.addElement(new Float(1.9999)); // Ajouter un autre lment for (int i=2; i<10; i++) { int lastInt = ((Number) v.lastElement()).intValue(); v.addElement(new Integer(i + lastInt)); } // Ajouter dautres lments
A. U. : 09-10

Importance des commentaire


Claret du code Rutilisation facile du code Gnration automatique du javadoc ou le Help du programme dvelopp Quel est la diffrence ?

Deux types de commentaire


Commentaire classique /* */ ou // Gnration dun fichier (HTML) de documentation /** */
/** * Ceci est un commentaire pour Javadoc

?
49 A. U. : 09-10

* @author Sabeur * @version 2.0 */


S. Elkosantini
50

S. Elkosantini

Plan

POO avec Java


Les objets et les classes en Java
Moto
Couleur Vitesse_limite

Chapitre 1 : Introduction Chapitre 2 : Les premiers pas en Java Chapitre 3 : Le concept dobjets Chapitre 4 : POO avec Java Chapitre 5 : et avec C++

Limplmentation de cette classe en Java est :

Acclrer Freiner

A. U. : 09-10

S. Elkosantini

51

A. U. : 09-10

S. Elkosantini

52

13

POO avec Java


La visibilit des variables et des attributs

POO avec Java


La visibilit des variables et des attributs
public class LocalVariable { private static double sum(double[] values) { double sum=0.0; for(double v:values) { sum+=v; } // v n'est plus accessible return sum; // values et sum pas accessible } private static void test(int i) { for(int i=0;i<5;i++) // erreur doIt(i); } Une variable pour porte le bloc dans } lequel elle est dfinie

Les paramtres sont aussi considrs comme des variables locales


A. U. : 09-10

S. Elkosantini

53

A. U. : 09-10

S. Elkosantini

54

POO avec Java


Les mthodes
En Java, il est impossible de dfinir du code hors d u e mthode. Ja a, poss b e d o s d'une t ode. Une mthode est spare en 2 parties :
La signature (types des paramtres, type de retour). Le code de la mthode.
int valeur(){ int amortissement; amortissement = 0.05; return P i P i * amortissement * A Prix Prix i Age; }

POO avec Java


et le constructeur en Java
C aque appe un constructeur cre u ou e Chaque appel u co st ucteu c e un nouvel objet ( sta ce) qu ob t au (instance) qui obit patron dfini par la classe :

linstance cre aura les attributs et le comportement dfinis dans la classe. rservation dun espace mmoire pour la mmorisation de ltat.

Le constructeur est gnralement loccasion dinitialiser les attributs ( personnaliser ltat de linstance). Il peut y avoir plusieurs constructeurs pour une mme classe. Plusieurs initialisations possibles.

Le code d'une mthode est constitu de diffrents blocs imbriqus. Chaque bloc dfinit et utilise des variables locales.
A. U. : 09-10

S. Elkosantini

55

A. U. : 09-10

S. Elkosantini

56

14

POO avec Java


et le constructeur en Java

POO avec Java


et le constructeur en Java
Moto Et si les paramtres du constructeur portent le mme nom que les attributs ??
Couleur Vitesse_limite Moto Acclrer Freiner

La L construction en JAVA : t ti new + nom de la classe (paramtres) Cest le constructeur


Produit p1 = new Produit ( Portable , 1) ; p ( , ) Produit p2 = new Produit () ; Comment programmer la classe Produit ??

Limplmentation de cette classe en Java est :

A. U. : 09-10

S. Elkosantini

57

A. U. : 09-10

S. Elkosantini

58

POO avec Java


Linstanciation
Moto Couleur Vitesse_limite Acclrer Freiner

POO avec Java


Le cycle de vie dun objet
La c at o d u objet ou, autrement dit, .. a cration dun aut e e t d t, Objet obj ; obj
NULL

Le mot clef new est utilis pour crer une instance dynamique d'un objet chaque fois qu'on en a besoin.

Moto : Kawasaki Couleur : noir Vitesse_limite : 200 Acclrer Freiner

Moto : Yamaha Couleur : rouge C l Vitesse_limite : 250 Acclrer Freiner

Cette opration dclare uniquement le nom et le type de lobjet. Les attributs et les mthodes ne sont pas encore crer. p

A. U. : 09-10

S. Elkosantini

59

A. U. : 09-10

S. Elkosantini

60

15

POO avec Java


Le cycle de vie dun objet
La c at o d u objet ou, autrement dit, .. a cration dun aut e e t d t, Objet obj ; obj
NULL

POO avec Java


Les objets, les classes et linstanciation en Java
Accs aux att buts et mthodes d u objet pa t d u aut e objet . ccs attributs t odes dun partir dun autre Nomobjet.Nommethode() ; Nomobjet.NomAttribut; Lenvoi de messages entre objets : . Il ne faut pas oubli les paramtres dans les messages

Objet obj = new Objet() ; obj

Attribut 1 Attribut 2 Mthode 1

Cest ce moment que lallocation mmoire est ralise

Les cascades sont possibles : Magasin.produit.nom

A. U. : 09-10

S. Elkosantini

61

A. U. : 09-10

S. Elkosantini

62

POO avec Java


Les objets, les classes et linstanciation en Java
Dans le t a te e t de lune de ses mthodes, u objet peut avoir senvoyer a s e traitement u e t odes, un a o s e oye un message (pour accder un de ses attributs ou invoquer une des ses mthodes). Utilisation de lauto-rfrence, en java : this. Exemple : on se place dans une mthode de la classe Moto :

POO avec Java


Les objets, les classes et linstanciation en Java
Lappel lobjet cou a t : ut sat o du mot c this appe objet courant utilisation ot cl this.methode() ; this.attribut; Exemple dutilisation public class Moto { int Vitesse; int Prix; Moto( int Vitesse , int Prix){ }
63 A. U. : 09-10

Lors du traitement, lobjet appelant la mthode est une instance de la classe , j pp Moto. this.Freiner() signifie envoyer this (= moi-mme) le message Freiner()

A. U. : 09-10

S. Elkosantini

S. Elkosantini

64

16

POO avec Java


Les objets, les classes et linstanciation en Java
S Si pas d a b gu t, le mot c this peut t e oub : dambigut, e ot cl t s tre oubli this.Freiner () ; this.Prix; Exercice 5 :
Ecrire une classe Livre, caractrise par les attributs titre, auteur et anne et par les mthodes suivantes : - Une mthode affichant les caractristiques dun livre - Une mthode qui prend en paramtre un livre et qui permet dafficher les deux livres et de le comparer le nom du livre pass en paramtre.

POO avec Java


Les objets, les classes et linstanciation en Java
Exercice 6 :
Crer une classe Segment q est dfinie p ses extrmits ( g qui par (des p points) et p sa ) par couleur. Avec cette classe, on peut calculer la longueur dun segment, le dplacer et changer sa couleur.

Freiner(); Prix;

A. U. : 09-10

S. Elkosantini

65

A. U. : 09-10

S. Elkosantini

66

POO avec Java


La surcharge La surcharge
La surcharge de mthodes : un mcanisme donnant la possibilit d'appeler plusieurs mthodes avec le mme nom. Des mthodes surcharges peuvent avoir des types de retour diffrents condition quelles aient des arguments diffrents.
Exemple : la surcharge de la mthode somme
int somme( int p1, int p2){ return (p1 + p2); } float somme( float p1 float p2){ p1, return (p1 + p2); } float somme( float p1, float p2, float p3){ return (p1 + p2 + p3); } int somme( float p1, int p2){ return (int(p1) + p2); }
A. U. : 09-10

POO avec Java


Exercice 7:
1. Crez une classe avec un constructeur par dfaut qui imprime un message. 2. Ajoutez cette classe un constructeur surcharg qui prend un String en argument et qui l'imprime avec votre message. 3. Crez, dans le programme principale, deux instances de cette objet pour tester les deux constructeurs.

S. Elkosantini

67

A. U. : 09-10

S. Elkosantini

68

17

POO avec Java


La manipulation des objets
Laffectation et la co pa a so : a ectat o a comparaison Objet a= new Objet (); Objet b= new Objet (); a=b; Quel est la diffrence entre les deux instances a et b ?

POO avec Java


La manipulation des objets
Laffectation et la co pa a so : a ectat o a comparaison Objet a = new Objet (); Objet b = new Objet (); boolean rep = (a == b) ; Que signifie cette comparaison ?

Vrifier si les deux objets ont la mme rfrence.

A. U. : 09-10

S. Elkosantini

69

A. U. : 09-10

S. Elkosantini

70

POO avec Java


La manipulation des objets
Quel est le rsultat de linstruction BMW==Mercedes ? Laffectation et la co pa a so : a ectat o a comparaison
Voiture : BMW Puissance : 9 Couleur: noir Acclrer Freiner Voiture : Mercedes Puissance: 9 Couleur : noir Acclrer Freiner

POO avec Java


La destruction des objets
Le destructeur de classe consiste en une mthode qui sera appele lors de e dest ucteu c asse co s ste e u e t ode qu se a appe e o s toute destruction d'un objet. Avant que l'objet ne soit recycl par le ramasse-miettes, le systme appelle la mthode finalize :
finalize est une mthode dans laquelle on pourra implmenter proprement la fermeture ventuelle de fichiers/sockets ouverts ou tout autres oprations. En Java, le ramasse-miettes (ou le garbage collector), est un mcanisme qui soccupe de la libration ou non dune zone mmoire. Cest un mcanisme automatique. Le systme essaye d'abord d'appeler l'objet finalize avant de jeter l'objet
A. U. : 09-10

Les deux objets ont les mmes valeurs dattributs mais la rfrence est diffrente. Comment crer deux objets avec la mme rfrence

A. U. : 09-10

S. Elkosantini

71

S. Elkosantini

72

18

POO avec Java


La destruction des objets
class Moto { int vitesse; String couleur; Moto() { .. } System.out.println("L'objet a t cr");

POO avec Java


Encapsulation en Java
Il existe trois niveaux de visibilit : ex ste t o s eaux s b t
Priv : en Java, private publique: en Java, public protg: en Java, protected

Compte_Bancaire
- Num_RIB - Nom - Montant + Crditer() + Dbiter()

public String var1; p public int methode1(); () protected char var2; protected void methode2(); private int var3; private void methode3();
73 A. U. : 09-10

void finalize() { System.out.println("Objet nettoy de la mmoire"); }

A. U. : 09-10

S. Elkosantini

S. Elkosantini

74

POO avec Java


Encapsulation en Java
Lide de restreindre la visibilit des mthodes et des att buts : de est e d e a s b t t odes attributs

POO avec Java


Encapsulation en Java
Exemple : Application pou la gest o des co ptes e ba ques. xe p e pp cat o pour a gestion comptes en banques.

Rendre priv les attributs caractrisant ltat de lobjet et de fournir des mthodes publiques permettant de modifier/accder lattributs.

La classe Banque ayant comme attribut solde. Dans un premier temps, lattribut est dclar comme publique.

Quel est linconvnient dun tel programme ? Des getters et des setters Attribut Montant : getMontant () : le getter setMontant () : le setter Quelle amlioration proposez-vous ?

A. U. : 09-10

S. Elkosantini

75

A. U. : 09-10

S. Elkosantini

76

19

POO avec Java


Laccs aux classes en Java
Comment rendre une classe priv ou protg en Java ?

POO avec Java


Encapsulation en Java
+ Compte_Bancaire
- Num_RIB - Nom - Montant + Crditer() + Dbiter()

On ne peut pas rendre une classe priv ou protg, parce que . On peut rendre une classe (dune bibliothque) publique.
La classe de la bibliothque est accessible pour les utilisateurs.

Implmenter cette classe en java

Que se passe t-il si on ne mets rien avant le mot class ?

A. U. : 09-10

S. Elkosantini

77

A. U. : 09-10

S. Elkosantini

78

POO avec Java


Le mot cl static
Aucune mthodes ni attributs nest accessible avant li t A th d i tt ib t t ibl t linstanciation d l i ti de la classe en utilisant le mot cl .
La zone mmoire nest pas encore alloue.

POO avec Java


Le mot cl static
class StaticTest { static int i = 47; } Et dans une autre classe: StaticTest st1 = new StaticTest(); StaticTest st2 = new StaticTest();

Les mthodes et les attributs sont alors associs lobjet et non la classe. et si on veut que la donne ou la mthode n'est pas spcifiquement rattache un objet instance dune classe ? Utilisation du mot cl static
A. U. : 09-10

Comment incrmenter lattribut i ?

S. Elkosantini

79

A. U. : 09-10

S. Elkosantini

80

20

POO avec Java


Forme

POO avec Java


Lhritage
Limplmentation en Java de la classe Triangle
dessiner () effacer() deplacer() getcouleur() t l () setcouleur()

Lhritage
Rectangle En Java, en utilisant le mot cl extends
class Forme { // . { g class Rectangle extends Forme { // . { class Triangle extends Forme { // . {
A. U. : 09-10

Forme

Triangle

Cercle

Et le mot cl protected ?

Carre

RetournerHor() RetournerVer()

Triangle

Cercle

Cest quoi une mthode final dune classe mre?

S. Elkosantini

81

A. U. : 09-10

S. Elkosantini

82

POO avec Java


Lhritage : le polymorphisme
Limplmentation en Java de la classe Triangle
dessiner () effacer() deplacer() getcouleur() setcouleur()

POO avec Java


Forme
dessiner () effacer() Limplmentation en Java de la classe Triangle rectangle deplacer() getcouleur() setcouleur()

Forme

Lhritage plusieurs niveaux

dessiner() effacer()

Carre

Triangle
dessiner() effacer()

dessiner() effacer()

Cercle

dessiner() effacer()

Carre

Triangle
dessiner() effacer()

dessiner() effacer()

Cercle

Triangle rectangle

Triangle isocle

A. U. : 09-10

S. Elkosantini

83

A. U. : 09-10

S. Elkosantini

84

21

POO avec Java


Lhritage : la redfinition et le polymorphisme
La dfi iti L redfinition : redfinir d mthodes h it d l super-classe. dfi i des th d hrites de la l
La sous-classe doit imprativement conserver la dclaration de la mthode parent (mme type et nombre de paramtres et valeur de retour)

POO avec Java


Lhritage : laccs aux mthodes de la super classe
Pour invoquer une mthode d'une classe parent, il suffit d'indiquer la mthode prfixe par super.
class Forme { void effacer (){ { System.out.println(la forme est efface);} } class Rectangle extends Forme { void effacer (){ { System.out.println(le rectangle est effac); super.effacer(); } }
A. U. : 09-10

Le polymorphisme : ajoute des mthodes dans la sous-classe. Exemple : Touts les classes de Java hritent de la classe Object. Il hritent Forme ainsi des mthodes telles que getClass() clone() toString() getClass(), clone(), toString().

dessiner () effacer()

Quel est le rsultat ?

Redfinition Polymorphisme
A. U. : 09-10

dessiner() dessiner(int p)
85

Triangle

S. Elkosantini

S. Elkosantini

86

POO avec Java


Lhritage : laccs au constructeur de la super classe
Pour appeler le constructeur de la classe parent il suffit d'crire super(paramtres) avec les paramtres adquats. Il est obligatoire dans un constructeur d'une classe fille de faire appel explicitement ou implicitement au constructeur de la classe mre.
class Moto { Moto (){ this(0,100) ;} Moto (int km){ this(km,100) ;} Moto (int km, int prix){ this.km = km ; this.prix=prix;} }
A. U. : 09-10

POO avec Java


Lhritage : le transtypage
Le transtypage : Traiter un type driv comme s'il tait son type de base. Appel aussi transtypage ascendant, surtypage ou pcasting. Changer un type vers son type de base revient remonter dans le diagramme d'hritage : cest le transtypage ascendant . Crer trois objets de type cercle, carr et triangle. Ecrire dans la classe principale les mthodes permettant dafficher la couleur de chaque instance.

class Quad extends Moto { int nb-roues; Quad (int k, int p){ k super(k, p); nb_roues = 4; } }

Et sil ny a pas de constructeur dans la classe mre ?


S. Elkosantini
87 A. U. : 09-10

S. Elkosantini

88

22

POO avec Java


Lhritage : le transtypage
Le transtypage en java : Forme f = new Triangle () ; On cr un objet Triangle appel f et qui est assigne au type Forme, ce qui semblerait tre une erreur (assigner un type un autre).
dessiner () effacer()

POO avec Java


Lhritage : le transtypage
La classe mre Forme tablit l'interface commune pour toutes les classes filles . toutes les formes peuvent tre dessines et effaces. Les classes drives redfinissent ces mthodes pour fournir un comportement unique pour chaque type de forme spcifique. Forme f = new Triangle () ; Classe Forme Interface Triangle
dessiner() effacer()

Forme

Selon le diagramme suivant, quelle mthode dessiner () va tre excuter ? f.dessiner() ;


dessiner() effacer()
A. U. : 09-10

Classe Triangle Interface Implmentation

Linstance f Li t Interface Implmentation

Carre

dessiner() effacer()
89

Cercle

Implmentation

S. Elkosantini

A. U. : 09-10

S. Elkosantini

90

POO avec Java


Lhritage : le transtypage
Pour lexemple suivant : Forme f = new Trianglerectangle () ; Interface Implmentation Interface Implmentation I l t ti Interface Implmentation
A. U. : 09-10

POO avec Java


dessiner () effacer() getcouleur()

Forme

Lhritage : le transtypage
Rcapitulation : Dans quel cas le transtypage et le polymorphisme sont utiliss ? .

Classe Forme

dessiner() effacer()

Carre

Triangle
dessiner() effacer()

dessiner() effacer()

Cercle

class Emloye { String nom; int id, salaire; public Emloye(String n) { nom=n; }

Classe Trianglerectangle Triangle rectangle Linstance f Triangle isocle

class magasinier extends Employe { public magasinier(String n) { super (n); salaire = 250; } void affiche () { System.out.println("Je suis un magasinier"); }

Selon le diagramme suivant, quel est le rsultat de linstruction f.dessiner() ?

Dans le programme principal, crer un magasinier en utilisant le transtypage et excuter la mthode affiche de lobjet crer. Quel est le rsultat ?

S. Elkosantini

91

A. U. : 09-10

S. Elkosantini

92

23

POO avec Java


Lhritage
Exercice 8: Crer une hirarchie d'hritage de Rongeur: Souris, Gerbille, et Hamster. Dans la classe de base, fournir des mthodes qui sont communes tous les Rongeurs, et les redfinir dans les classes drives pour excuter des comportements diffrents dpendant du type spcifique du Rongeur. Crer un tableau de Rongeur, le remplir avec diffrent types spcifiques de Rongeurs, et appeler vos mthodes de la classe de base pour voir ce qui arrive.

POO avec Java


Exercice 9: Ecrivez les classes ncessaires au fonctionnement du programme suivant. Donnez uniquement le nom des classes et les mthodes (sans dtailler le contenu). public class T tB ti bli l TestBatiments { t public static void main(String args[]){ Batiments[] B=new Batiments[3] ; B [0] = new Appartement(Atef) ; B [1] = new Villa(Walid) ; B [2] = new Studio(Anis) ; For (int i = 0; i<3 ; i++) B [i].affiche() ; } } Le rsultat de ce programme est : Lappartement appartient Atef La villa appartient Walid Le studio appartient Anis

Lhritage

A. U. : 09-10

S. Elkosantini

93

A. U. : 09-10

S. Elkosantini

94

POO avec Java


Classes abstraites
primtre ()

POO avec Java


Classes abstraites

Forme

Il faut donner la signature de la mthode p g primtre () mais pas son p implmentation dans la classe Forme

primtre ()

Carre

primtre ()

Triangle

primtre ()

Cercle

Cest une mthode abstraite

Comment implmenter la mthode primtre () de la classe Forme ? La mthode primtre () ne peut pas tre implment dans la dclaration de la classe Forme, car on ne sait pas comment calculer le primtre d'une forme quelconque
A. U. : 09-10

Syntaxe : S t

abstract public d bl primtre ( ) ; b t t bli double i t

Limplmentation de la mthode sera dans les classes filles permettant ainsi de spcifier un comportement diffrent pour chacune des classes
A. U. : 09-10

S. Elkosantini

95

S. Elkosantini

96

24

POO avec Java


Classes abstraites Classes abstraites

POO avec Java


Limplmentation des classes filles :

Une classe abstraite est une classe contenant au moins une mthode abstraite est appele une classe abstraite Exemple: abstract public class Forme { private String nom; p public Forme (Forme nom) { this.nom=nom; } ( ) abstract public double perimetre( ) ; public void dessiner ( ) {System.out.println ( " Je suis " + this . nom) ; } }

public class Cercle extends Forme{ private double rayon ; public Cercle ( double rayon ) {super ( " cercle " ) ; this . rayon = rayon ; } public double perimetre ( ) { return 2 * Double.PI * this.rayon ; } } public class Rectangle extends Forme{ pr ivate double l a r g e u r ; pr ivate double l o n g u e u r ; public Rectangle ( double l a r g e u r , double l o n g u e ur) {super ( " rectange " ) ; this . l a r g e u r = l a r g e u r ; this . l o n g u e u r = l o n g u e u r ; } public double perimetre( ) { return (this . l a r g e u r + this . l o n g u e u r)/2 ; } }
97 A. U. : 09-10

A. U. : 09-10

S. Elkosantini

S. Elkosantini

98

POO avec Java


Classes abstraites Classes abstraites
Exemple 2 : La prsence dune mthode virtuelle pure dans une classe a 3 consquences: La classe ne peut plus tre instancie, Une classe abstraite n'existe que pour tre hrite, Toute classe fille de cette classe doit redfinir la mthode en question, Une classe fille hritant d'une classe mre abstraite doit implmenter p toutes ses mthodes abstraites, sinon elle est aussi une classe abstraite. Une mthode static ne peut tre abstraite car on ne peut redfinir une mthode static)?

POO avec Java

Mthode b t it Mth d abstraite public abstract class C t I f B bli b t t l CentreInfoBourse { private URL[] urlsCentre; ... abstract protected String lireDonnees(String[] titres); Mthode non abstraite malgr quelle utilise une mthode abstraite

public String calcule(String[] titres) { ... donnees = lireDonnees(titres); // Traitement effectu sur donnees // indpendant du site boursier ...

A. U. : 09-10

S. Elkosantini

99

A. U. : 09-10

S. Elkosantini

100

25

POO avec Java


Classes abstraites
Exemple 2 : public class LesEchos extends CentreInfoBourse { ... public String lireDonnees(String[] titres) { // Implantation pour le site des Echos Implmentation de la mthode ... abstraite } La classe mre dfinit la structure globale de la classe. Elle laisse aux classes filles le soin de dfinir des mthodes (mthode lireDonnees).

POO avec Java


Classes interfaces
Une interface est une classe purement abstraite dont toutes les mthodes sont abstraites et publiques. Une interface est un prototype de classe. Elle dfinit la signature des mthodes qui doivent tre implmentes dans les classes construites partir de ce prototype

Une interface est une classe purement abstraite dont toutes les mthodes sont abstraites et publiques et sans attributs (les mots-cls abstract et public sont optionnels). Syntaxe : inter face NomInterface { . . . }

A. U. : 09-10

S. Elkosantini

101

A. U. : 09-10

S. Elkosantini

102

POO avec Java


Classes interfaces
public interface Figure { public p blic abstract void dessiner () oid (); public abstract void deplacer(int x, int y); public abstract Position getPosition(); } public interface Comparable { /** renvoie vrai si this est plus grand que o */ boolean plusGrand(Object o); } Les mots-cls abstract et public sont optionnels

POO avec Java


Classes interfaces
Comment implmenter les mthodes dune p interface?

Une classe implmente une interface A si elle dclare implements A dans son en-tte. Syntaxe : class Cl S t l Classe i l implements I t f { . . . } t Interface{ La classe doit implmenter toutes les mthodes de l'interface, sinon elle doit tre dclare abstract

A. U. : 09-10

S. Elkosantini

103

A. U. : 09-10

S. Elkosantini

104

26

POO avec Java


Classes interfaces
Une classe peut implmenter plusieurs interfaces .

POO avec Java


Classes interfaces
Une interface peut remplacer une classe pour dclarer une variable, un paramtre, une valeur de retour, etc.

Syntaxe : class A implements Inter1, Inter2,...{ . . . } Exemple Figure f; Une classe peut hriter d'une autre classe et implmenter une ou plusieurs interfaces. f contiendra des objets dont la classe implmentera l'interface Comparable.

Syntaxe : class A extends B implements Inter1, Inter2 ,...{ . . . }

Exemple Figure f=new Cercle();

A. U. : 09-10

S. Elkosantini

105

A. U. : 09-10

S. Elkosantini

106

POO avec Java


Classes interfaces
Une interface ne possde pas de d'attribut. Les interfaces ne sont pas instanciables (comme les classes abstraites). Une interface n'a pas de constructeurs. Une interface peut dfinir des constantes, c'est--dire dfinir des variables dclares publiques, statiques et finale et ayant une valeur constante d'affectation. Exemple : public static final float PI = 3.14f; On ne donne que la signature des mthodes qui sont ncessairement des mthodes d'instance publiques et abstraites : abstract public int f(); Une interface peut hriter d'une autre interface : inter face interface1 extends interface2 { . . .}.
A. U. : 09-10

POO avec Java


Classes interfaces
A quoi sert les interfaces en Java ?
Pour palier le manque dhritage multiple en Java. Pour offrir la possibilit davoir un comportement unique pour certaines classes. Exemple : vhicule et voiture et camion. Dissimuler limplmentation des mthodes Favoriser la rutilisation : si le type d'un paramtre d'une mthode est une interface, cette mthode peut s'appliquer toutes les classes qui implmentent l'interface, et pas seulement toutes les sous-classes d'une certaine classe

S. Elkosantini

107

A. U. : 09-10

S. Elkosantini

108

27

Plan
instanceof

Autres notions Java

Chapitre 1 : Introduction Chapitre 2 : Les premiers pas en Java Chapitre 3 : POO avec Java Chapitre 4 : Autres notions Java Chapitre 5 : Connexion aux bases de donnes Chapitre 5 : Interfaces graphiques a ec Ja a graphiq es avec Java

Loprateur i t L t instanceof permet de savoir quelle classe appartient une f td i ll l ti t instance Si x est une instance dune sous-classe B de A : x instanceof A renvoie true

Pour tester si un objet o est de la mme classe que lobjet courant, il ne f t P t t i bj t td l l l bj t t faut donc pas utiliser instanceof mais le code suivant :
if (o != null && o.getClass() == this.getClass())

A. U. : 09-10

S. Elkosantini

109

A. U. : 09-10

S. Elkosantini

110

Autres notions Java


instanceof
class B{ } class D extends B{ } B{} class C {} B b = new B(); D d = new D(); C c = new C(); b instanceof B b instanceof D d instanceof B d instanceof D b = d; b instanceof B b instanceof D c instanceof B

Autres notions Java


Lobjet String
Cest C t une classe considre comme type simple. l id t i l Ce nest pas un type primitif.

// // // // // // // : //

Initialisation : String txt= cest un texte ; Longueur : txt.length(); Comparaison : txt .equals ( Hello!! ); Accs aux caractres : txt.charAt(5); Concatnation : String mot= en franais ; String txt2 = txt+mot;

A. U. : 09-10

S. Elkosantini

111

A. U. : 09-10

S. Elkosantini

112

28

Autres notions Java


Les packages

Autres notions Java

Lobjet String
Exercice 8:
Ecrire un programme qui permet dafficher les mots dune phrase. Les mots de la phrases sont spars par un espace puis ; .

Un U package est un ensemble d classes voisines, couvrant me mme k t bl de l i i t domaine et associes une fonctionnalit. Les classes doivent tre sauvegarder dans le mme rpertoire.

Dfinition dun package : package nom du package; d un nom_du_package;

Cette instruction est la premire ligne dans les classes concernes.

A. U. : 09-10

S. Elkosantini

113

A. U. : 09-10

S. Elkosantini

114

Autres notions Java


Les packages
Exemple de package Java :
java.lang javax.swing java.net

Autres notions Java


Les exceptions
Les exceptions reprsentent le mcanisme de gestion des erreurs intgr au langage java.
Une exception est un signal qui indique que quelque chose dexceptionnel (comme une erreur) sest produit. Elle interrompt le flot dexcution normal du programme.
class Forme { Que Quel est le rsultat ? e su tat Public static void main (String arg[]) { int a=3,b=0; System.out.println( a/b); } } Exception in thread "main" java.lang.ArithmeticException: / by zero at Forme.main(Forme.java:4)
115 A. U. : 09-10

Pour utiliser les packages dans une classe :


Le package p dfaut: j p g par java.lang g Pour les autres, il faut le signaler en utilisant le mot cl import import monpackage.*; //ou

import monpackage.nomclasse; import TP1.Ex1.*;


A. U. : 09-10

S. Elkosantini

S. Elkosantini

116

29

Autres notions Java


Les exceptions
Il existe 3 trois types d'exceptions organiss comme ceci :

Autres notions Java


Les exceptions
Les Error correspondent des exceptions qu'il est rare d'attraper.

Les RuntimeException que l'on peut rattraper mais que l'on n'est pas oblig.

Les Exception que l'on est oblig d'attraper (try/catch) ou de dire que la mthode appelante devra s'en occuper (throws).

A. U. : 09-10

S. Elkosantini

117

A. U. : 09-10

S. Elkosantini

118

Autres notions Java


Les exceptions
Les exceptions leves par la VM correspondent :
Erreur de compilation ou de lancement
NoClassDefFoundError, ClassFormatError

POO avec Java


Les exceptions : capturer et attraper
Si un bloc de programme ou une mthode gnre une exception elle doit supposer qu'elle sera intercept et leve.
Un bloc dinstruction peut tre surveill. On peut attraper une exception avec linstruction try.

problme d'entre/sortie :
IOException, AWTException

problme de ressource : p
OutOfMemoryError, StackOverflowError

try { // bloc dinstruction Mais, quoi faire avec cette exception dtecte ? La gestion des exceptions avec linstruction catch.
119 A. U. : 09-10

des erreurs de programmation (runtime)


NullPointerException, ArrayIndexOutOfBoundsException, ArithmethicException

A. U. : 09-10

S. Elkosantini

S. Elkosantini

120

30

Autres notions Java


Les exceptions : capturer et attraper

Autres notions Java


Les exceptions : capturer et attraper
public class Forme{ public static void main(String[] args) { int a = 3; int b = 0; try { System.out.println("rsultat = " + (i / j)); } catch (ArithmeticException e) { System.out.println ( erreur arithmtique ); l ( h ) } } }

try { // bloc dinstruction } catch (Type1 id1) { //instruction faire en cas derreur de type 1 }

A. U. : 09-10

S. Elkosantini

121

A. U. : 09-10

S. Elkosantini

122

Autres notions Java


Les exceptions : capturer et attraper
Sil y a plusieurs types dexceptions intercepter, il faut dfinir autant de catch que de type dexceptions. try { // bloc dinstruction } catch (Type1 id1) { //instruction faire en cas derreur de type 1 } catch (Type2 id2) { //i t ti f i en cas d //instruction faire derreur d t de type 2 } catch (Type3 id3) { //instruction faire en cas derreur de type 3 } Un type d'exception donn ne doit pas venir aprs un type d'une exception d'une super classe.
A. U. : 09-10

Autres notions Java


Les exceptions : Mais, cest quoi une exception ?
En Java, les exception sont des objets ayant des mthodes et attributs.

Source : cours de M. Baron


123 A. U. : 09-10

S. Elkosantini

S. Elkosantini

124

31

Autres notions Java


Les exceptions : capturer et attraper
public class Forme{ public static void main(String[] args) { int a = 3; int b = 0; try { System.out.println("rsultat = " + (i / j)); } catch (Exception e) { } catch (ArithmeticException e) { System.out.println ( erreur arithmtique ); } } }
A. U. : 09-10

Autres notions Java


Les exceptions : Lancer ou dclencher
Une mthode dclare quelle peut lancer une exception par le mot cl throws. Dclaration : Moto (String couleur, int vitesse) throws MotoErr{ ... } La i d L cration dune nouvelle exception en utilisant le mot cl th ll i ili l l throw. Dclaration : Moto (String couleur, int vitesse) throws MotoErr{ If (vitesse <0) throw new MotoErr(); }
125 A. U. : 09-10

S. Elkosantini

S. Elkosantini

126

Autres notions Java


Les exceptions : Lancer ou dclencher
Si une mthode peut lancer une mthode, il faut utiliser try catch lors de son appel dans un autre programme public static void main(String[] args) { try { Moto kawazaki=new Moto(Rouge, -15); e.freiner(); } catch (MotoErr e) { System.out.println (erreur dinstanciation); } } Mais, cest quoi MotoErr ?

Autres notions Java


Les exceptions : Lancer ou dclencher

A. U. : 09-10

S. Elkosantini

127

A. U. : 09-10

S. Elkosantini

128

32

Autres notions Java


Les exceptions
Exercice 9:
Dfinissez une rfrence objet et initialisez la null. Essayez d'appeler cette mthode grce cette rfrence. Maintenant enveloppez le code dans une clause try-catch afin de capter l'exception.

Autres notions Java


Les exceptions : Le bloc finally
Sert excuter un code quoi qu'il arrive (fermer un fichier, une connexion, librer une ressources) Dclaration : try{ } finally{ }

Le L catch n'est pas obligatoire. h ' bli i

A. U. : 09-10

S. Elkosantini

129

A. U. : 09-10

S. Elkosantini

130

Autres notions Java


Les exceptions : Le bloc finally
Exemple : ReentrantLock lock = new ReentrantLock(); lock.lock(); try { doSomething(); } finally { lock.unlock() }

Autres notions Java


Les flux
Pour obtenir des donnes, un programme ouvre un flux de donnes sur une source de donnes (fichier, clavier, mmoire, etc). De la mme faon pour crire des donnes dans un fichier, un programme ouvre un flux de donnes. Java fournit un paquetage java.io qui permet de grer les flux de donnes en entre et en sortie, sous forme de caractres (exemple fichiers textes) ou sous forme binaire (octets, byte). Java emploie un stream (flux en anglais) entre la source et la destination des donnes. Toute opration d'entre/sortie en Java suit le schma suivant

A. U. : 09-10

S. Elkosantini

131

A. U. : 09-10

S. Elkosantini

132

33

Autres notions Java


Les flux
Toute opration d'entre/sortie en Java suit le schma suivant : Ouverture d'un flux; Lecture ou criture des donnes; Fermeture du flux. java.io fournit toutes les classes ncessaires la cration, lecture, criture et traitement des flux. Il y a un grand nombre de classes intervenant dans la manipulation des flux (plus de 50).

Autres notions Java


Les flux
Java fournit quatre hirarchies de classes pour grer les flux de donnes: Pour les flux binaires :

o o

La classe InputStream et ses sous-classes pour lire des octets (FileInputStream) La classe OuputStream et ses sous-classes pour crire des octets (FileOuputStream).

Pour les flux de caractres :

o o

La classe Reader et ses sous-classes pour lire des caractres (BufferedReader, FileReader). La classe Writer et ses sous-classes (BufferedWriter, FileWriter).
S. Elkosantini
134

A. U. : 09-10

S. Elkosantini

133

A. U. : 09-10

Autres notions Java


Les flux de caractres
Le casting dun objet class Test { de t d type I InputStream tSt public static void main(String[] argv) { en Reader System.out.println("Veuillez saisir votre nom :"); String inputLine = " "; try { BufferedReader is = new BufferedReader(new InputStreamReader(System.in)); String inputLine; inputLine = is.readLine(); is.close(); Lire la ligne jusquau caractre retour chariot } catch (Exception e) { System.out.println("Intercept : " + e); } if (inputLine != null) System.out.println("Votre nom est :" + inputLine); } }

Autres notions Java


Les flux de caractres
Exemple : lecture partir du clavier avec la classe java.util.scanner:
import java.util.Scanner; public class Saisie { public static void main (String [] args){ System.out.println("Entrez votre nom :"); Scanner input = new Scanner(System in); Scanner(System.in); String nom = input.nextLine(); System.out.println("Bonjour " + nom); }

Exemple : lecture partir du clavier :

A. U. : 09-10

S. Elkosantini

135

A. U. : 09-10

S. Elkosantini

136

34

Autres notions Java


Les flux de caractres
Exemple : lecture partir du clavier avec la classe System.in.read(): Renvoie une valeur de type byte que lon convertira en caractre par un oprateur cast.

Autres notions Java


Les flux de caractres
Exemple : lecture partir du clavier avec la classe System.in.read(): char c; String chaine = ""; while ((c = (char)System.in.read()) != \n) chaine=chaine+c;

char c = (char)System.in.read();

A. U. : 09-10

S. Elkosantini

137

A. U. : 09-10

S. Elkosantini

138

Autres notions Java


Les flux de caractres
Exemple : lecture partir dun fichier et criture dans un autre :
class Test { public static void main(String[] argv) { Reader Flux de try { caractres FileReader in = new FileReader("a_lire.txt"); Writer FileWriter out = new FileWriter("a_ecrire.txt"); int c; while ((c = in.read()) != -1) { Transfert de donnes de in vers out out.write(c); } in.close(); Fermeture des deux out.close(); flux } catch (Exception e) { System.out.println("Intercept : " + e); } } }
A. U. : 09-10

Autres notions Java


Les flux de caractres
Exemple : lecture partir dun fichier et criture dans un autre : class Test { public static void main(String[] argv) { try { FileInputStream = new FileInputStream("a_lire.txt"); FileOutStream out = new FileOutStream("a_ecrire.txt"); int c; while ((c = in.read()) != -1) { out.write(c); } Quelle est la diffrence entre ce programme in.close(); et le programme prcdent ? out.close(); } catch (Exception e) { System.out.println("Intercept : " + e); } } }
139 A. U. : 09-10

S. Elkosantini

S. Elkosantini

140

35

Autres notions Java


Les fichiers
La classe File permet de grer laccs aux fichiers et aux rpertoires. Un rpertoire est gr aussi comme un fichier. La classe File appartient au package java.io. Dclaration : File monFichier = new File("Note.txt"); Il sagit de la cration de lobjet File et non du fichier physique. monFichier.createNewFile();

Autres notions Java


Les fichiers
Quelques mthodes : boolean canRead() : vrifie si le fichier peut tre lu boolean canWrite() : vrifie si le fichier peut modifi boolean delete() : supprime le fichier ou le rpertoire String getPath() : renvoie le chemin du fichier ou du rpertoire String[] list() : renvoie la liste des fichiers et des rpertoires contenu dans le rportoire Il ne faut pas confondre les classes FileReader et FileInputStream et la classe File.
141 A. U. : 09-10

Cration du fichier portant le nom Note.txt.


A. U. : 09-10

S. Elkosantini

S. Elkosantini

142

Autres notions Java


Les fichiers
Autres mthodes : nom du fichier : getName() chemin local vers le fichier : getPath() chemin absolu vers le fichier : getAbsolutePath()/getAbsoluteFile()/isAbsolute() chemin canonique :getCanonicalPath()/getCanonicalFile() chemin vers le rpertoire pre : getParent()/getParentFile() isDirectory() teste si un fichier est un rpertoire

Plan

Chapitre 1 : Introduction Chapitre 2 : Les premiers pas en Java Chapitre 3 : POO avec Java Chapitre 4 : Autres notions Java Chapitre 5 : Connexion aux bases de donnes Chapitre 6 : Interfaces graphiques a ec Ja a graphiq es avec Java

A. U. : 09-10

S. Elkosantini

143

A. U. : 09-10

S. Elkosantini

144

36

Connexion aux bases de donnes


Introduction
Utilisation de l API JDBC pour les bases de donnes : p JDBC pour Java DataBase Connectivity API permet des applications Java d'accder des bases de donnes relationnelles quelconques L API Fournit un ensemble de classes et d interfaces permettant l utilisation lutilisation sur le rseau d un ou plusieurs SGBD partir dun dun d un programme Java.

Connexion aux bases de donnes


Le pilote
Oracle Mysql SQLServer Sybase Informix DB2

JDBC Driver spcifique pour chaque SGBD

BD

Contient toutes les classes ncessaire pour communiquer avec C i l l i i une base de donnes Tous les drivers : http://developers.sun.com/product/jdbc/drivers

A. U. : 09-10

S. Elkosantini

145

A. U. : 09-10

S. Elkosantini

146

Connexion aux bases de donnes


Architecture JDBC

Connexion aux bases de donnes


Les tapes principales

Importer le package java.sql

Charger le driver JDBC

Etablir la connexion la base de donnes

Crer une zone de description dune requte

Fermer les diffrents connexions

Traiter les donnes retournes

Excuter la requte

A. U. : 09-10

S. Elkosantini

147

A. U. : 09-10

S. Elkosantini

148

37

Connexion aux bases de donnes


JDBC
Charger le driver JDBC :
Importer le package java.sql java sql charger le driver JDBC

Connexion aux bases de donnes


JDBC
Charger le driver JDBC :
Importer le package java.sql java sql charger le driver JDBC

Utilisation de la mthode forName de la classe Class Oracle : Class.forName("oracle.jdbc.driver.OracleDriver"); SQL Server 2000: Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); Pont ODBC-JDBC Class.forName( sun.jdbc.odbc.JdbcOdbcDriver ); Class forName("sun jdbc odbc JdbcOdbcDriver");

Utilisation de la mthode forName de la classe Class Quand une classe Driver est charge, elle doit crer une instance d elle mme et s enregistrer auprs du DriverManager Certains compilateurs refusent cette notation et demande plutt : try { }

Class.forName (" driver_name ").newInstance();

catch (ClassNotFoundException a) {System.out.println ("Driver non trouve");}


A. U. : 09-10

S. Elkosantini

149

A. U. : 09-10

S. Elkosantini

150

Connexion aux bases de donnes


JDBC JDBC

Connexion aux bases de donnes

Importer le package java.sql

Charger le driver JDBC

Etablir la connexion la base de donnes

Importer le package java.sql

Charger le driver JDBC

Etablir la connexion la base de donnes

Etablir la connexion la base de donnes :


Pour tablir la connexion avec un SGBD, il faut prciser :
l URL de la base de donnes : jdbc:<sous-protocole>:<nom-BD> le nom de la base de donnes le login utilis ainsi que son mot de passe

Etablir la connexion la base de donnes :


try { String strUrl = "jdbc:microsoft:sqlserver://hostname:1433"; Connection connect = DriverManager.getConnection(strUrl ,user,password); } catch (SQLException c) { System.out.println ( Connexion System out println ("Connexion refuse ou base inconnu "+c);} +c);} catch (Exception d) { System.out.println ("Probleme sur connexion"); }

String strUrl = " db S l "jdbc:microsoft:sqlserver://hostname:1433"; f l //h 33" Connection connect = DriverManager.getConnection(strUrl ,user,password);
Le DriverManager essaye tous les drivers qui se sont enregistrs (chargement en mmoire avec Class.forName()) jusqu ce quil trouve un driver qui peut se connecter la base
A. U. : 09-10

S. Elkosantini

151

A. U. : 09-10

S. Elkosantini

152

38

Connexion aux bases de donnes


JDBC
Importer le package java.sql Charger le driver JDBC Etablir la connexion la base de donnes Crer une zone de description dune requte

Connexion aux bases de donnes


JDBC
Excuter la requte :
3 types d excution :
executeQuery() : pour les requtes (SELECT) qui retournent un ResultSet (tuples rsultants) executeUpdate() : pour les requtes (INSERT, UPDATE, DELETE, CREATE TABLE, DROP TABLE) qui retournent un entier (nombre de tuples traits) execute() : pour requtes inconnus. Renvoie true si la requte a donn lieu la
Importer le package java.sql Charger le driver JDBC Etablir la connexion la base de donnes Crer une zone de description dune requte

Excuter la requte

Crer une zone de description d une requte : dune


En utilisant la classe statement. L objet Statement possde les mthodes ncessaires pour raliser les requtes sur la base associe la connexion dont il dpend A partir de l objet Connexion, on rcupre le Statement associ

Statement st= connexion.createStatement();

creation d un objet ResultSet

ResultSet rs = st.executeQuery("SELECT nom, prenom FROM clients " + "WHERE nom='itey ORDER BY nom");
A. U. : 09-10

S. Elkosantini

153

A. U. : 09-10

S. Elkosantini

154

Connexion aux bases de donnes


JDBC
Excuter la requte :
ResultSet rs = st.executeQuery("SELECT nom, prenom FROM clients " + "WHERE nom='itey ORDER BY nom"); int nb = st.executeUpdate("INSERT INTO dept(DEPT) VALUES(06)");
Importer le package java.sql Charger le driver JDBC Etablir la connexion la base de donnes Crer une zone de description dune requte

Connexion aux bases de donnes


JDBC
Traiter les donnes retournes :
L objet ResulSet (retourn par l excution de executeQuery() ) permet d accder aux champs des tuples slectionns seules les donnes demandes sont transfres en mmoire par le driver JDBC
Importer le package java.sql Charger le driver JDBC Etablir la connexion la base de donnes Crer une zone de description dune requte

Excuter la requte

Traiter les donnes retournes

Excuter la requte

try { ResultSet rs = st.executeQuery( "SELECT * FROM MyTable" ); catch (Exception e){System.out.println(e);}

Le L parcours se fait itrativement ligne par ligne par la mthode next() f it it ti t li li l th d t()
retourne false si dernier tuple lu, true sinon chaque appel fait avancer le curseur sur le tuple suivant initialement, le curseur est positionn avant le premier tuple

A. U. : 09-10

S. Elkosantini

155

A. U. : 09-10

S. Elkosantini

156

39

Connexion aux bases de donnes


JDBC
Traiter les donnes retournes :
On peut identifier chaque colonne de la base de donne Par son index Par son nom L accs aux valeurs des colonnes se fait par les mthodes de la forme getXXX() Lecture du type de donnes XXX dans chaque colonne du tuple courant int val = rs.getInt(3) ; // accs la 3e colonne String prod = rs.getString("PRODUIT")
A. U. : 09-10
Importer le package java.sql Charger le driver JDBC Etablir la connexion la base de donnes Crer une zone de description dune requte

Connexion aux bases de donnes


JDBC
Traiter les donnes retournes :
Parcourir les rsultats dune requte String req= "SELECT note, nom FROM Etudiant "; ResultSet rs = st.executeQuery(req); while(rs.next()) { int i = rs.getInt(" note"); (" ") String s = rs.getString(" nom"); }
Importer le package java.sql Charger le driver JDBC Etablir la connexion la base de donnes Crer une zone de description dune requte

Traiter les donnes retournes

Excuter la requte

Traiter les donnes retournes

Excuter la requte

S. Elkosantini

157

A. U. : 09-10

S. Elkosantini

158

Connexion aux bases de donnes


JDBC
Traiter les donnes retournes :
Correspondance des types
Importer le package java.sql Charger le driver JDBC Etablir la connexion la base de donnes Crer une zone de description dune requte

Connexion aux bases de donnes


JDBC
Fermer l diff F les diffrents connexions : i
Il faut fermer proprement les diffrentes connexion ouverts Sinon le garbage collector s en occupera mais moins efficace
Importer le package java.sql Charger le driver JDBC Etablir la connexion la base de donnes Crer une zone de description dune requte

Traiter les donnes retournes

Excuter la requte

Fermer les diffrents connexions

Traiter les donnes retournes

Excuter la requte

Chaque objet (de type Connection, resultset ou statement) possde une mthode close()
resultset.close(); statement.close(); connection.close();
A. U. : 09-10

S. Elkosantini

159

A. U. : 09-10

S. Elkosantini

160

40

Connexion aux bases de donnes


Importer le package java.sql Charger le driver JDBC

Plan
Etablir la connexion la base de donnes Crer une zone de description dune requte

Exemple complet
Fermer les diffrents connexions

try { Class.forName ("org.gjt.mm.mysql.Driver").newInstance();} catch (ClassNotFoundException a) { System.out.println ("Driver non trouve"); } catch (Exception b) { System.out.println ("Probleme sur chargement de driver JDBC"); }

Traiter les donnes retournes

Excuter la requte

Charger Ch le pilote

try{ conn = DriverManager.getConnection ("jdbc:mysql://127.0.0.1/cbr", "root", "mysql"); Connexion stmt = conn.createStatement(); } catch (SQLException c) { System.out.println ("Connexion refuse ou base inconnu "+c); } catch (Exception d) { System.out.println ("Probleme sur connexion");} try{String req= "SELECT nom FROM Etudiant "; SELECT ; ResultSet rs = stmt .executeQuery(req); while(rs.next()) { System .out.println(rs.getString(" nom"));} catch (SQLException c) { System.out.println ( problme SQL"+c); } rs.close(); stmt .close(); conn.close();
A. U. : 09-10

Prparer, excuter et traiter la requte

Chapitre 1 : Introduction Chapitre 2 : Les premiers pas en Java Chapitre 3 : POO avec Java Chapitre 4 : Autres notions Java Chapitre 5 : Connexion aux bases de donnes Chapitre 6 : Interfaces graphiques a ec Ja a graphiq es avec Java

Fermer la connexion
S. Elkosantini
161 A. U. : 09-10

S. Elkosantini

162

Interfaces graphiques avec Java


Introduction
Java gre aussi les interfaces graphiques, Fentres graphiques : menu, barre doutils, boutons, zone texte, etc. Gestion de la souris Gestion du clavier

Interfaces graphiques avec Java


Exemple
JMenubar

Java offre deux bibliothques principales pour les interfaces graphiques :


La bibliothque java.awt : le dbut du graphique avec Java. Disponible depuis Java 1.1 La bibliothque javax.swing : plus lger que awt et donc moins de ressource mmoire. Disponible depuis Java 2, amliore et tend les possibilits de AWT.
A. U. : 09-10

JTree

JFrame

JTabbedPane

JScrollPane
S. Elkosantini
163 A. U. : 09-10

JFileChooser
S. Elkosantini
164

41

Interfaces graphiques avec Java


Architecture dun objet swing
Un objet swing est constitu principalement de : Un composant mre, appel aussi le composant top-level. Des composants conteneurs intermdiaires, Des composants lmentaires,

Interfaces graphiques avec Java


La classe JComponent
Cest la classe de base de tout composants swing sauf le composant top-level :
Tous les composants Swing hritent de la classe Jcomponent. Les composants ont des Tool Tips. Les composants ont des bordures. JComponent

Que veut dire un composant en Java ? JComponent


getBorder() getGraphics() print() repaint() setVisible()

JMenuBar

JProgressBar

JScrollPane

A. U. : 09-10

S. Elkosantini

165

A. U. : 09-10

S. Elkosantini

166

Interfaces graphiques avec Java


et pour le composant top-level topLes composants top-level ne sont pas des classes JComponant. La bibliothque swing propose trois composants top level :
JFrame, JDialog et JApplet

Interfaces graphiques avec Java


Un exemple :
JFrame JMenuBar Top-level Composant conteneur

JLabel

Les composants top-level possdent un content pane qui contient tous les composants visibles dun top-level. Un U composant top-level peut contenir une b tt l l t t i barre d menu de

JProgressBar ContentPane
A. U. : 09-10

Les diffrents composants de la fentre s f

Composants lmentaires

S. Elkosantini

167

A. U. : 09-10

S. Elkosantini

168

42

Interfaces graphiques avec Java


Les composants top-level : JFrame topUn composant graphique de type JFrame est une fentre contenant une barre de titre, une bordure, trois boutons (minimiser, agrandir et fermer) et le content pane qui contiendra tout les composants lmentaires.

Interfaces graphiques avec Java


Les composants top-level : JFrame topCode Java : J JFrame fenetre = new JFrame (); fenetre.setTitle("Comopsant JFrame"); fenetre.setSize(250,150); fenetre.setVisible(true);

Ou aussi :
setTitle() getMenuBar() getContainPane() setJMenuBar(JMenuBar m) remove()
A. U. : 09-10

JFrame

JFrame fenetre = new JFrame ("Comopsant JFrame"); Un aperu de la classe JFrame :

S. Elkosantini

169

A. U. : 09-10

S. Elkosantini

170

Interfaces graphiques avec Java


Les composants top-level : JFrame topou aussi crer une classe qui hrite de la classe JFrame: public class Fenetre extends JFrame { Fenetre() { this.setTitle("Composant JFrame version 2"); this.setVisible(true); } } Dans le main, on peut par exemple, li t D l i t l linstancier la classe F i l l Fenetre et t t changer sa taille : public static void main(String[] args) { .. }

Interfaces graphiques avec Java


Les composants top-level : JFrame topChangement de licne de la fentre ImageIcon image = new ImageIcon( image.gif"); fenetre.setIconImage(image.getImage()); x Position de la fentre dans lcran fenetre.setLocation (20,50); y Centrer la fentre dans lcran Dimension dim = Toolkit.getDefaultToolkit().getScreenSize(); fenetre.setLocation(dim.width/2 - f.getWidth()/2, dim.height/2 - f.getHeight()/2);

A. U. : 09-10

S. Elkosantini

171

A. U. : 09-10

S. Elkosantini

172

43

Interfaces graphiques avec Java


Les composants top-level : JDialog topCest la classe principale permettant de crer des boites de dialogues. Utilisable pour crer des boites de dialogues personnalises ou pour utiliser celles qui sont dj dfinies en utilisant la classe JOptionPane. Comme JFrame, JDialog contient un conteneur principale (content JFrame pane) qui doit regrouper tout les autres composant lmentaires.
Boite de dialogue prdfinie avec la classe JOptionPane
A. U. : 09-10

Interfaces graphiques avec Java


Les composants top-level : JDialog topCode Java : J JDialog dialogue = new JDialog(); dialogue.setTitle("Ceci est une boite de dialogue"); dialogue.setSize(250,150); dialogue.setVisible(true);

ou aussi crer une classe qui hrite de la classe : . .

S. Elkosantini

173

A. U. : 09-10

S. Elkosantini

174

Interfaces graphiques avec Java


Les composants top-level : JApplet topUne applet est un programme Java s'excutant sur une page WEB. Le recours aux applets est lun des moyens de dynamiser le HTML. Les applets sont cres partir d'une classe Java JAppelet. Contrairement au JFrame et Jdialog, le composant top-level Japplet est destin pour crer des interfaces graphiques dans les pages web. Une fois lapplet est crer en Java et compile, elle doit tre insre dans une page HTML.
Exemple

Interfaces graphiques avec Java


Les composants top-level : JApplet topCode Java : public class Exemple extends JApplet{ JLabel helloLabel = new JLabel ("Bonjour, vous me voyez ?"); JButton b= new JButton ("OK");
// Mthode appele par le navigateur lorsque l'applet est charge

}
A. U. : 09-10

public void init (){ this.getContentPane().setBackground(Color.yellow) ; this.getContentPane().setLayout(null); helloLabel.setSize(200,100); helloLabel.setLocation(10,10); this.getContentPane().add (helloLabel); b.setSize(100,100); b.setLocation(210,10); this.getContentPane().add(b); }
S. Elkosantini

S. Elkosantini

175

A. U. : 09-10

176

44

Interfaces graphiques avec Java


Les composants top-level : JApplet topEt dans le fichier HTML: <HTML> <HEAD> <TITLE>Applet HTML Page</TITLE> </HEAD> <BODY> <H3><HR WIDTH="100%">Applet HTML Page<HR WIDTH="100%"></H3> <P> <APPLET code= "Exemple class" width 350 height=200></APPLET> code Exemple.class width=350 height 200></APPLET> </P> </BODY> </HTML>

Interfaces graphiques avec Java


Rcapitulation JFrame
Top-level

Les diffrents composants de la fentre s f

Composant conteneur intermdiaires

Composants lmentaires

A. U. : 09-10

S. Elkosantini

177

A. U. : 09-10

S. Elkosantini

178

Interfaces graphiques avec Java


Les composants conteneurs intermdiaires
Swing propose plusieurs conteneurs intermdiaire:
JPanel JTabbedPane JScrollPane JOptionPane JTabbedPane JToolBar JMenuBar .

Interfaces graphiques avec Java


Les composants conteneurs intermdiaires : JPanel
Le conteneur JPanel est le plus gnrique. On peut, par exemple, choisir sa couleur de fond, lui ajouter des composant, modifier la disposition de ses composants, etc.
Ce JPanel contient 2 composants lmentaires JPanel

add(Component c) SetLayout(LayoutManager m) findComponentAt(int x , int y) .

A. U. : 09-10

S. Elkosantini

179

A. U. : 09-10

S. Elkosantini

180

45

Interfaces graphiques avec Java


Les composants conteneurs intermdiaires : JScrollPane
Un JScrollPane est un conteneur qui offre des ascenseurs, il permet de visionner un composant plus grand que lui.

Interfaces graphiques avec Java


Les composants conteneurs intermdiaires : Jtoolbar et JMenuBar
Une JToolBar est une barre de doutil Une JMenuBar est une barre de menu
JMenuBar

add(Component c) SetLayout(LayoutManager m) .

JScrollPane

JToolBar

A. U. : 09-10

S. Elkosantini

181

A. U. : 09-10

S. Elkosantini

182

Interfaces graphiques avec Java


Les composants conteneurs intermdiaires : Jtoolbar et JMenuBar
Code Java :
JFrame fenetre = new JFrame (); JMenuBar jMenuBar1 = new javax.swing.JMenuBar(); Menu jMenu1 = new javax.swing.JMenu(); jMenu1.setText("Fichier"); jMenuBar1.add(jMenu1); Menu jMenu2 = new javax.swing.JMenu(); M jM 2 j i JM () jMenu2.setText("Menu"); jMenuBar1.add(jMenu2); fenetre.setJMenuBar(jMenuBar1);

Interfaces graphiques avec Java


Les composants conteneurs intermdiaires : Jtoolbar et JMenuBar
Code Java :

jToolBar1 = new javax.swing.JToolBar(); jButton1 = new javax.swing.JButton(); jButton1.setIcon(new javax.swing.ImageIcon("d:\\livre histoire.gif")); jToolBar1.add(jButton1); jButton2 = new javax.swing.JButton(); jButton2.setText("Coller"); jToolBar1.add(jButton2); jSeparator1 = new javax.swing.JSeparator(); jSeparator1.setOrientation(javax.swing.SwingConstants.VERTICAL); jToolBar1.add(jSeparator1);

A. U. : 09-10

S. Elkosantini

183

A. U. : 09-10

S. Elkosantini

184

46

Interfaces graphiques avec Java


Rcapitulation JFrame
Top-level

Interfaces graphiques avec Java


Les composants lmentaires
Swing propose plusieurs conteneurs intermdiaire:
boutons, CheckBox, Radio Combo box List, menu TextField, TextArea, Label FileChooser, ColorChooser, .

Les diffrents composants de la fentre s f

Composant conteneur intermdiaires

Composants lmentaires
A. U. : 09-10

A. U. : 09-10

S. Elkosantini

185

S. Elkosantini

186

Fin du cours

A. U. : 08-09

S. Elkosantini

187

47