IFT 1170, Hiver 2005
Chapitre 9 : Interfaces, fichiers binaires
154
Interface :
Pourquoi ?
Le Java ne supporte pas l'héritage multiple comme C++ :
super classe
A1
super classe
A2
super classe
A3
etc …
classe dérivée en
C++
B
En Java une classe n'a pas le droit d'hériter directement deux super-classes. Par
contre, Java permet à une classe d'être dérivée d'une seule super-classe mais
implémente une ou plusieurs interfaces.
super classe
en Java
A
interface
I1
interface
I2
etc
sous-classe B
dérivée de A
implémente I1, I2, etc
De plus, une interface contient souvent ses méthodes abstraites qui présentent certaines
comportements assez générales ( hasMoreElements() : avoir encore d’éléments,
nextElement() : prochain élément pour les structures linéaires, writeInt() : écrire un
entier, writeDouble() : écrire un réel, … pour les fichiers binaires, run() : déplacer, pour
animation, …). Ces méthodes abstraites seront réalisées dans les classes qui
implémentent cette interface.
IFT 1170, Hiver 2005
Chapitre 9 : Interfaces, fichiers binaires
155
Cas 1 de Java : StringTokenizer
classe Object
java.util
interface Enumeration
Method Summary
boolean
hasMoreElements() : avoir encore d’éléments
retourne true si cette énumération contient encore des
elements : false sinon
Object
nextElement() : prochain élément
retourne l’élément suivant de cette énumération.
Par défaut, toutes ces méthodes sont abstraites
et public.
java.util class StringTokenizer
extends Object
implements java.util.Enumeration
StringTokenizer chaine = new StringTokenizer(“Java est populaire”);
while ( chaine.hasMoreElements() )
System.out.println( chaine.nexElement() );
nous donne :
Java
est
populaire
IFT 1170, Hiver 2005
Chapitre 9 : Interfaces, fichiers binaires
156
Cas 2 de Java : Vector
super classe
en Java
AbstractList
interface
List
interface
Cloneable
interface
Serializable
public class Vector
extends AbstractList
implements List, Cloneable, Serializable
(note : Vector n’implémente pas l’interface Enumeration mais une de ses
méthodes retourne un objet de la « classe » Enumeration)
. . .
// cette méthode retourne une énumération des éléments de ce
// vecteur
public final Enumeration elements();
. . .
Pour afficher tous les éléments d’un vecteur v :
for (Enumeration elem = v.elements() ; elem.hasMoreElements() ; )
System.out.println(elem.nextElement());
IFT 1170, Hiver 2005
Chapitre 9 : Interfaces, fichiers binaires
157
Cas 3 de Java : fichiers binaires
Java utilise le terme Reader/Writer pour désigner les suites de
caractères dans le traitement des fichiers de type texte. Pour la
lecture d’un fichier texte, on lit souvent ligne par ligne (avec
Entree.readLine()) et extraire des sous-chaînes de la chaîne lue puis
faire la conversion en type voulu (exemple, avec Integer.parseInt(sous-
chaîne)).
Contenu d’un fichier de type texte :
Je suis une ligne
Je suis une autre ligne
etc ….
Je suis la dernière ligne
Le Java peut détecter les caractères fin de ligne et fin de fichier.
Java utilise le terme STREAM (flux, flot) pour désigner des suites
d'octets (bytes) dans le traitement des fichiers binaires :
Contenu d’un fichier binaire :
1 entier
1 réel
1 caractère
1 entier
1 réel
1 caractère
etc …
writeInt()
writeDouble()
WriteChar()
writeInt()
writeDouble()
WriteChar()
etc …
Il y a InputStream pour la lecture et OutputStream pour l'écriture.
Dans le cours IFT 1176, on traite aussi les fichiers à accès direct.
Pour localiser un fichier à écrire son contenu, Java combine 2 objets
des deux classes DataOutputStream et FileOutputStream :
DataOutputStream aCreer = new DataOutputStream
( new FileOutputStream(nomFile));
On implémente et utilise des méthodes de l’interface DataOutput :
public abstract void writeInt(int valeur);
public abstract void writeChar(int v);
public abstract void writeDouble(double val);
etc ….
pour écrire un entier, un caractère ou un réel dans le fichier binaire.
public class DataOutputStream
extends FilterOutputStream
implements DataOutput
Dans ce cas ci, l’interface DataOutput est un groupe de méthodes
abstraites indiquant que DataOutputStream est dotée d’un comportement
supplémentaire par rapport aux méthodes héritées de sa super-classe
FilterOutputStream.
IFT 1170, Hiver 2005
Chapitre 9 : Interfaces, fichiers binaires
158
Les deux pages suivantes décrivent des schémas de la création et de la
lecture d’un fichier binaire.
Gestion de fichiers:
Quelques classes + interfaces utilisées pour
la création d'un fichier binaire :
classe Object
OutputStream
FilterOutPutStream
public void close();
FileOutputStream
public FileOutputStream String name);
etc . . .
DataOutput (une interface)
public abstract void writeInt(int valeur);
public abstract void writeChar(int v);
public abstract void writeDouble(double val);
etc . . .
DataOutputStream
public DataOutputStream(OutputStream os);
public final void writeInt(int valeur);
public final void writeChar(int v);
public final void writeDouble(double val);
etc . . .
public class java.io.DataOutputStream
extends java.io.FilterOutputStream
implements java.io.DataOutput
1 / 17 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !