Sommaire: Développement Orienté Objet
– L’interface SERIALIZABLE et les Flux d’objet
a) Classes de java.io consernées
b) exemple Persistance de chaine ou d’entier
c) Serialisation d’un VECTEUR
d ) cas salarie
e ) Rappels sur le Dictionnaire : HASHTABLE
/Les Flux de Fichiers ASCII
a) les Classes du package Java.IO
– Classe File = fichier ascii
-Classe FileReader = Lecteur de Fichier
-Classe BufferedReader = Buffer de lecture Fichier
-Classe FileWriter = Ecriveur de Fichier
– Classe BufferedWriter = Buffer d’ecriture Fichier
– Classe RandomAccessFile : Fichier Direct
B ) Exemple : Package BipUtil
– MODELE STATIQUE OBJET
– Code JAVA Extrait de biputil
/ Les SGBD
a – le package java.SQL et la norme JDBC
Java et les SGBD
Différents types de pilotes JDBC
Connexion avec une base de données
Les différentes étapes pour utiliser JDBC
Exemple : liste des salariés avec passerelle jdbc-odbc
♣ Extrait du cours
1 – L’INTERFACE SERIALIZABLE ET LES FLUX D’OBJET
La sérialisation d’un objet doit permettre de transporter celui-ci à travers un flux, ou de le stocker dans un fichier afin qu’il soit possible de reconstruire cet objet à l’identique à un moment donné. Pour être sérialisé un objet doit être sérialisable, c’est à dire avec la clause implements Serializable codée dans son entête.
Le concepteur d’une classe peut décider que certaines variables d’instance n’auront pas à être sérialisées, parce que ce sont des données transitoires qui ne font pas partie de l’état persistant de l’objet. De telles données, que l’on ne souhaite ni sauvegarder ni restaurer, doivent être déclarées avec le modificateur transient.
De même toute variable déclarée static sera ignorée lors de la sérialisation.
a) Classes de java.io consernées
OBJECT -à INPUTSTREAM -à OBJECTINPUTSTREAM —(utilise )à FILEINPUTSTREAM
OBJECT -à OUTPUTSTREAM -à OBJECTOUTPUTSTREAM —(utilise )à FILEOUTPUTSTREAM
b) Exemple Persistance de chaîne ou d’entier à partir des classes String et Integer qui sont sérialisables
package tp4;
import java.io.*;
import biputil2.*;
public class Serial1 {
public static void main (String[] args) throws Exception
{
Persiste op=new Persiste();
String st1=new String(« Bonjour »); // instanciation d’un objet st1 de type String
Integer i2=new Integer(55); // instanciation d’un objet i2 de type Integer
System.out.println(« \n1 = ecrire une chaine »);
System.out.println(« 2 = Lire une chaine »);
System.out.println(« 3 = ecrire un Entier »);
System.out.println(« 4 = Lire un Entier »);
int opt = Keyboard.getInt();
while (opt != 0)
{
if ( opt == 1 )
op.Enregistre(st1);
if ( opt == 2 ) {
Object stLu = op.Lit();
op.Affiche(stLu);
}
if ( opt == 3 )
op.Enregistre(i2);
if ( opt == 4 ){
Object ILu = op.Lit();
op.Affiche(ILu);
}
System.out.println(« \n1 = ecrire une chaine »);
c) Serialisation d’un Vecteur
Une Classe Liste serializable contenant un vecteur est passée en paramètre à une classe Fichier contenant des méthodes Ouvrir , Lire et Enregistrer
et Fermer implémentant les méthodes readObject et writeObject
package tp4_2;
/**
* <p>Titre : </p>
* <p>Description : Classe sérialisable</p>
* <p>Copyright : Copyright (c) 2002</p>
* <p>Société : </p>
* @author non attribué
* @version 1.0
*/
import java.io.*;
import java.util.*;
public class Liste implements Serializable
{
private Vector listeMot;
public Liste () // constructeur
{
listeMot = new Vector();
}
public void ajout (String mot)
{
listeMot.addElement (mot);
}
public void affiche ()
{
System.out.println(« Nombre d’elements du vecteur : » + listeMot.size());
int i;
for (i = 0; i < listeMot.size(); i++)
{
System.out.println( i + » » + listeMot.elementAt(i).toString());
}
}
}
package tp4_2;
/**
* <p>Titre : </p>
* <p>Description : Classe permettant la sérialization et la désérialization (sauvegarde et
restauration)</p>
* <p>d’une classe sérialisable (Liste) dans un fichier </p>
* <p>Copyright : Copyright (c) 2002</p>
* <p>Société : </p>
* @author non attribué
* @version 1.0
*/
import java.util.*;
import java.io.*
d ) cas salarie
Il s’agit de rendre persistant les salaries en y implemantant l’interface Serializable pour pouvoir utiliser
les méthode Read et writeObject
VOIR à SalariePersistSol.doc
E ) Rappels sur le Dictionnaire : HASHTABLE
Permet de stocker en mémoire une collection d’objets avec des clefs
Hashtable numbers = new Hashtable();
numbers.put(« one », new Integer(1));
numbers.put(« two », new Integer(2));
numbers.put(« three », new Integer(3));
Pour retrouver un nombre :
Integer n = (Integer)numbers.get(« two »);
if (n != null)
{
System.out.println(« two = » + n);
}
2-LES FLUX DE FICHIERS ASCII
a) les Classes du package Java.io
1- Classe File = fichier ASCII – Déclaration du fichier
File fichier = new File(“c:\fichier.txt”) ;
If ( !fichier.exists() )
System.out.printll(« \nFichier inconnu) ;
2 -Classe FileReader = Lecteur de Fichier
// constructeur : FileReader(File) : à partir d’un fichier
FileReader fr = new FileReader(fichier) ;
// autre manière, avec le chemin du fichier
FileReader fr = new FileReader(« c:\fichier.txt « ));
3-Classe BufferedReader = Buffer de lecture Fichier
// c’est avec cet objet que l’on peut réellement lire le fichier
// constructeur : BufferdReader (FileReader) : à partir d’un lecteur de fichier
BufferdReader br = new BufferdReader( fr ) ;
// autre maniere :
BufferedReader br = new BufferedReader(new FileReader(« fichier.txt »));
Méthode :
public void close() throws IOException ; // fermeture du flux
public int read() throws IOException : // Read a single character.
public String readLine() throws IOException ;
// Read a line of text. A line is considered to be terminated by any one of a line feed (‘\n’), a
carriage return (‘\r’), or a carriage return followed immediately by a linefeed.
Exemple : String strLigne = new String() ;
Try
{
SrtLigne= br.readLine() ;
}
Catch ( IOException e )
{
System.out.println(« \nErreurt lecture « + e ) ;
}
// OK
If ( strLigne==null)
System.out.println(« \n Fin de fichier ») ;
else
System.out.println(« \n » + strLigne ) ;