Livres
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).
Sabeur ELKOSANTINI
sabeur.elkosantini@isima.rnu.tn
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
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
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 :
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
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
Plan
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
public static void main (String args[]) { afficher (5); } public void afficher (int val ) {
} }
S. Elkosantini
S. Elkosantini
24
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 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;
%= ^=
S. Elkosantini
27
S. Elkosantini
28
() Plus fort
++ , --
*,/,%
+,-
<,>
==,!=
&&, ||
=, += , -= Plus faible
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
i=2; j=++i;
S. Elkosantini
29
A. U. : 09-10
S. Elkosantini
30
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
S. Elkosantini
31
A. U. : 09-10
S. Elkosantini
32
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
A. U. : 09-10
S. Elkosantini
A. U. : 09-10
S. Elkosantini
34
S. Elkosantini
35
A. U. : 09-10
S. Elkosantini
36
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
do while :
do { Bloc dinstructions ; } while ( condition logique)
Exemple :
for (i = 0 ; i > 10; i++ ) { System.out.println (i); }
A. U. : 09-10
S. Elkosantini
39
A. U. : 09-10
S. Elkosantini
40
10
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); }
A. U. : 09-10
S. Elkosantini
41
S. Elkosantini
42
A. U. : 09-10
S. Elkosantini
43
A. U. : 09-10
S. Elkosantini
44
11
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
A. U. : 09-10
S. Elkosantini
47
A. U. : 09-10
S. Elkosantini
48
12
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
?
49 A. U. : 09-10
S. Elkosantini
Plan
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++
Acclrer Freiner
A. U. : 09-10
S. Elkosantini
51
A. U. : 09-10
S. Elkosantini
52
13
S. Elkosantini
53
A. U. : 09-10
S. Elkosantini
54
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
A. U. : 09-10
S. Elkosantini
57
A. U. : 09-10
S. Elkosantini
58
Le mot clef new est utilis pour crer une instance dynamique d'un objet chaque fois qu'on en a besoin.
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
A. U. : 09-10
S. Elkosantini
61
A. U. : 09-10
S. Elkosantini
62
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
Freiner(); Prix;
A. U. : 09-10
S. Elkosantini
65
A. U. : 09-10
S. Elkosantini
66
S. Elkosantini
67
A. U. : 09-10
S. Elkosantini
68
17
A. U. : 09-10
S. Elkosantini
69
A. U. : 09-10
S. Elkosantini
70
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
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
A. U. : 09-10
S. Elkosantini
S. Elkosantini
74
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
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.
A. U. : 09-10
S. Elkosantini
77
A. U. : 09-10
S. Elkosantini
78
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
S. Elkosantini
79
A. U. : 09-10
S. Elkosantini
80
20
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
S. Elkosantini
81
A. U. : 09-10
S. Elkosantini
82
Forme
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
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()
Redfinition Polymorphisme
A. U. : 09-10
dessiner() dessiner(int p)
85
Triangle
S. Elkosantini
S. Elkosantini
86
class Quad extends Moto { int nb-roues; Quad (int k, int p){ k super(k, p); nb_roues = 4; } }
S. Elkosantini
88
22
Forme
Carre
dessiner() effacer()
89
Cercle
Implmentation
S. Elkosantini
A. U. : 09-10
S. Elkosantini
90
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; }
class magasinier extends Employe { public magasinier(String n) { super (n); salaire = 250; } void affiche () { System.out.println("Je suis un magasinier"); }
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
Lhritage
A. U. : 09-10
S. Elkosantini
93
A. U. : 09-10
S. Elkosantini
94
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
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
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
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
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
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
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
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.
A. U. : 09-10
S. Elkosantini
105
A. U. : 09-10
S. Elkosantini
106
S. Elkosantini
107
A. U. : 09-10
S. Elkosantini
108
27
Plan
instanceof
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
// // // // // // // : //
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
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.
A. U. : 09-10
S. Elkosantini
113
A. U. : 09-10
S. Elkosantini
114
S. Elkosantini
S. Elkosantini
116
29
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
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
A. U. : 09-10
S. Elkosantini
S. Elkosantini
120
30
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
S. Elkosantini
S. Elkosantini
124
31
S. Elkosantini
S. Elkosantini
126
A. U. : 09-10
S. Elkosantini
127
A. U. : 09-10
S. Elkosantini
128
32
A. U. : 09-10
S. Elkosantini
129
A. U. : 09-10
S. Elkosantini
130
A. U. : 09-10
S. Elkosantini
131
A. U. : 09-10
S. Elkosantini
132
33
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).
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
A. U. : 09-10
S. Elkosantini
135
A. U. : 09-10
S. Elkosantini
136
34
char c = (char)System.in.read();
A. U. : 09-10
S. Elkosantini
137
A. U. : 09-10
S. Elkosantini
138
S. Elkosantini
S. Elkosantini
140
35
S. Elkosantini
S. Elkosantini
142
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
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
Excuter la requte
A. U. : 09-10
S. Elkosantini
147
A. U. : 09-10
S. Elkosantini
148
37
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 { }
S. Elkosantini
149
A. U. : 09-10
S. Elkosantini
150
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
Excuter la requte
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
Excuter la requte
Excuter la requte
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
Excuter la requte
Excuter la requte
S. Elkosantini
157
A. U. : 09-10
S. Elkosantini
158
Excuter la requte
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
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"); }
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
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
JTree
JFrame
JTabbedPane
JScrollPane
S. Elkosantini
163 A. U. : 09-10
JFileChooser
S. Elkosantini
164
41
JMenuBar
JProgressBar
JScrollPane
A. U. : 09-10
S. Elkosantini
165
A. U. : 09-10
S. Elkosantini
166
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
Composants lmentaires
S. Elkosantini
167
A. U. : 09-10
S. Elkosantini
168
42
Ou aussi :
setTitle() getMenuBar() getContainPane() setJMenuBar(JMenuBar m) remove()
A. U. : 09-10
JFrame
S. Elkosantini
169
A. U. : 09-10
S. Elkosantini
170
A. U. : 09-10
S. Elkosantini
171
A. U. : 09-10
S. Elkosantini
172
43
S. Elkosantini
173
A. U. : 09-10
S. Elkosantini
174
}
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
Composants lmentaires
A. U. : 09-10
S. Elkosantini
177
A. U. : 09-10
S. Elkosantini
178
A. U. : 09-10
S. Elkosantini
179
A. U. : 09-10
S. Elkosantini
180
45
add(Component c) SetLayout(LayoutManager m) .
JScrollPane
JToolBar
A. U. : 09-10
S. Elkosantini
181
A. U. : 09-10
S. Elkosantini
182
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
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