quelques classes. la classe object il s agit de la classe principale, elle contient les fonctions :...

46
Quelques classes

Upload: internet

Post on 03-Apr-2015

104 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Quelques classes. La classe Object Il s agit de la classe principale, elle contient les fonctions : protected Object clone() qui crée et retourne une

Quelques classes

Page 2: Quelques classes. La classe Object Il s agit de la classe principale, elle contient les fonctions : protected Object clone() qui crée et retourne une

La classe Object Il s ’agit de la classe principale, elle contient les

fonctions : protected Object clone() qui crée et retourne une copie de l ’objet boolean equals(Object obj) qui détermine si obj est égal à l ’objet

courant. protected void finalize() appelé par le ramasse miettes s ’il n ’y a

plus de référence à l ’objet Class getClass() retourne la classe courante de l ’objet int hashCode() retourne une clé pouvant être utilisé pour un tri void notify() réveille un processus en attente sur l ’objet void notifyAll() réveille tous les processus en attente String toString() retourne une chaîne représentant l ’objet void wait() mets en pause le processus courant en attendant un

réveil

Page 3: Quelques classes. La classe Object Il s agit de la classe principale, elle contient les fonctions : protected Object clone() qui crée et retourne une

La classe String (1)

Les chaînes sont constantes, leurs valeurs ne peuvent être changées après leurs créations.

StringBuffer permet l ’utilisation de chaînes "dynamiques".

Construction : String str = "abc"; est équivalent à char data[] = {'a', 'b', 'c'};String str = new String(data);

La classe String comporte des méthodes d’accès aux caractères, de comparaisons, de recherche, d’extraction, de copie, de conversion minuscules/majuscule, ...

Page 4: Quelques classes. La classe Object Il s agit de la classe principale, elle contient les fonctions : protected Object clone() qui crée et retourne une

La classe String (2)

L ’opérateur (+) est surchargé pour permettre la concaténation, et à la conversion implicite d’objets en chaîne.

Toute conversion se fait de manière automatique en faisant appel à la méthode toString() héritée de la classe Object. Il est donc possible de surcharger cette méthode dans les nouvelles classes créées.

Page 5: Quelques classes. La classe Object Il s agit de la classe principale, elle contient les fonctions : protected Object clone() qui crée et retourne une

La classe String (3)

char charAt(int index) retourne le caractère de la position index int compareTo(String anotherString) compare la chaîne à une autre, en gérant les

majuscules-minuscules. Retourne 0 en cas d’égalité, un entier négatif si la chaîne est inférieure à l’autre, et positif si la chaîne est supérieure à l’autre chaîne.

int compareToIgnoreCase(String str) idem que la précédente, mais ignore la case. String concat(String str) ajoute la chaîne str à la fin de la chaîne. boolean endsWith(String suffix) teste si la chaine se termine par le suffixe. boolean equals(Object anObject) nécessaire pour comparer deux chaînes, traite la case. boolean equalsIgnoreCase(String anotherString) idem, mais ignore la case. void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) copie les caractères de

la chaîne dans un tableau de caractères. int indexOf(int ch) retourne l’index de la première occurrence du caractère.

On trouve aussi int indexOf(int ch, int fromIndex) ; int indexOf(String str)  et int indexOf(String str, int fromIndex)

Ainsi que int lastIndexOf(int ch) ; int lastIndexOf(int ch, int fromIndex) ; int lastIndexOf(String str) ; int lastIndexOf(String str, int fromIndex) ;.

int length() retourne la longueur String replace(char oldChar, char newChar) retourne une nouvelle chaîne après le

remplacement de toutes les occurrences du caractère. boolean startsWith(String prefix) teste si la chaîne commence par le préfixe. String substring(int beginIndex, int endIndex) extrait une sous-chaîne. String toLowerCase() ; String toUpperCase() change la case. String trim() efface les espaces avant et après.

Page 6: Quelques classes. La classe Object Il s agit de la classe principale, elle contient les fonctions : protected Object clone() qui crée et retourne une

Des classes très utiles (import java.util.*)

Interfaces : Collection, Comparator, Enumeration, EventListener, Iterator, List, ListIterator, Map, Map.Entry,Observer, Set, SortedMap, SortedSet

Classes : AbstractCollection, AbstractList, AbstractMap, AbstractSequentialList, AbstractSet, ArrayList, Arrays, BitSet, Calendar, Collections, Date, Dictionary, EventObject, GregorianCalendar, HashMap, HashSet, Hashtable, LinkedList, ListResourceBundle, Locale, Observable, Properties, PropertyPermission, PropertyResourceBundle, Random, ResourceBundle, SimpleTimeZone, Stack, StringTokenizer, TimeZone, TreeMap, TreeSet, Vector, WeakHashMap

Page 7: Quelques classes. La classe Object Il s agit de la classe principale, elle contient les fonctions : protected Object clone() qui crée et retourne une

Quelques classes de java.util

La classe Vector est la plus utilisée. Elle permet de stocker des objets dans un ensemble de longueur variable.

addElement(objet) permet d’ajouter un objet en queue,

get(index) permet de récupérer l’objet positionné à l’index donné,

find() permet de récupérer la position de l ’objet,

isEmpty() teste si le vecteur est vide,

size() donne la taille du vecteur.

Page 8: Quelques classes. La classe Object Il s agit de la classe principale, elle contient les fonctions : protected Object clone() qui crée et retourne une

Quelques classes de java.util

La classe Stack hérite directement de la classe Vector et ajoute entre autres les méthodes :

push(objet) : ajoute un objet en tête ; pop() : retire le premier objet ; peek() : renvoie une référence au premier objet sans

le retirer ; empty() : teste si la pile est vide.

Une pile peut aussi contenir des objets de différents types.

Page 9: Quelques classes. La classe Object Il s agit de la classe principale, elle contient les fonctions : protected Object clone() qui crée et retourne une

Quelques classes de java.util

La classe Hashtable peut être vue comme un dictionnaire composé de deux vecteurs : un vecteur pour la clé et un vecteur pour l’objet.

Une table de clés possède les méthodes : put(clé, objet) : get(clé) : containskey(clé) : containsvalue(objet) : isEmpty() : entre autres...

Page 10: Quelques classes. La classe Object Il s agit de la classe principale, elle contient les fonctions : protected Object clone() qui crée et retourne une

Quelques classes de java.util

La classe Set définit un ensemble ne pouvant contenir qu’un exemplaire d’un objet.

Cette classe dispose, entre autres, des méthodes :

add(objet) qui n’ajoute l’objet que s’il n’est pas déjà présent

contains(objet) ;

remove(objet) ;

isEmpty().

Page 11: Quelques classes. La classe Object Il s agit de la classe principale, elle contient les fonctions : protected Object clone() qui crée et retourne une

Quelques classes de java.util

L ’interface Enumeration ne contient que deux méthodes :

nextElement() : retourne l ’objet (à caster) courant et passe à l’élément suivant,

hasMoreElements() : indique la présence d’au moins un élément.

elle est utilisée surtout pour la lecture des éléments d’un vecteur : for(Enumeration e=vecteur.elements();e.hasMoreElements();)

System.out.println(e.nextElement()) ;

Remarque : elements() est la méthode qui retourne une énumération à partir du vecteur.

Page 12: Quelques classes. La classe Object Il s agit de la classe principale, elle contient les fonctions : protected Object clone() qui crée et retourne une

Gestion d ’exceptions

Page 13: Quelques classes. La classe Object Il s agit de la classe principale, elle contient les fonctions : protected Object clone() qui crée et retourne une

Les exceptions

La gestion des exceptions est très importante, voire primordiale, dans tous systèmes informatiques. Elle confère un aspect beaucoup plus professionnel aux applications.

Eviter les applications qui plantent sans information précise, ex :

Page 14: Quelques classes. La classe Object Il s agit de la classe principale, elle contient les fonctions : protected Object clone() qui crée et retourne une

Les exceptions (2)

Les exceptions sont des instances des classes héritant des classes

java.lang.Error (pour des erreurs graves quasi impossibles à gérer : plus de mémoire, classe manquante, ...)

java.lang.Exception (pour des exceptions attendues sinon probables pouvant être gérée : débordement d ’un tableau, erreur de calcul, ...).

Ces deux classes implémentent l’interface Throwable

Page 15: Quelques classes. La classe Object Il s agit de la classe principale, elle contient les fonctions : protected Object clone() qui crée et retourne une

Les exceptions (3)

La classe Exception possède deux constructeurs Exception() et Exception (String msg) ).

Elle hérite de l ’interface Throwable de : getMessage qui permet de récupérer le message de

l’exception s’il existe. toString, qui retourne la classe et le message sous

forme de chaîne. printStackTrace, qui fait appel à toString, mais qui en

plus indique l’endroit du programme où a été levée l’exception.

Page 16: Quelques classes. La classe Object Il s agit de la classe principale, elle contient les fonctions : protected Object clone() qui crée et retourne une

Capture d’une exception

Pour récupérer, ou attraper, une exception :

….try

{…. //endroit où pourrait apparaître une exception }catch (type_exception_1 e1)

{ …. // traitement de l’exception de type 1 }catch (type_exception_2 e2)

{ …. // traitement de l’exception de type 2 }finally

{ …. // dans tous les cas, passer par ici }….

Page 17: Quelques classes. La classe Object Il s agit de la classe principale, elle contient les fonctions : protected Object clone() qui crée et retourne une

Exemple

...total = 0try

{somme = a + b;moyenne = somme / total;nb_moy = nb_moy + 1

}catch(Exception e)

{System.out.println(«  division par

0 ...»);moyenne = 0;nb_moy = nb_moy + 1

}...

Exception levée

Partie abandonnée

reprise du cours normal du programme

Exception attrapée et gérée

Page 18: Quelques classes. La classe Object Il s agit de la classe principale, elle contient les fonctions : protected Object clone() qui crée et retourne une

Des classes d ’Exception

ClassNotFoundException, CloneNotSupportedException, IllegalAccessException, .InstantiationException, InterruptedException, NoSuchFieldException, NoSuchMethodException, RuntimeException, ArithmeticException, ArrayStoreException, ClassCastException, IllegalArgumentException, IllegalThreadStateException, NumberFormatException, IllegalMonitorStateException, IllegalStateException, IndexOutOfBoundsException, ArrayIndexOutOfBoundsException, StringIndexOutOfBoundsException, NegativeArraySizeException, NullPointerException, SecurityException, UnsupportedOperationException

Page 19: Quelques classes. La classe Object Il s agit de la classe principale, elle contient les fonctions : protected Object clone() qui crée et retourne une

Exemple (2)

...total = 0try

{somme = a + b;moyenne = somme / total;nb_moy = nb_moy + 1;

}catch(ArithmeticException e)

{System.out.println(«  division par 0 ...»);moyenne = 0;nb_moy = nb_moy + 1;

}catch(Exception e)

{System.out.println(«... erreur inconnue ...»);

}

...

Exception levée

Autres erreurs

Erreur de calcul attrapée et gérée

Page 20: Quelques classes. La classe Object Il s agit de la classe principale, elle contient les fonctions : protected Object clone() qui crée et retourne une

Propagation d ’une exception

Si une exception n ’est pas gérée dans une procédure, elle se propage hors de la procédure,

Il faut donc que cette procédure soit capable de propager l ’exception (utilisation du mot clé throws),

Si à la fin du programme, une exception n  ’a pas été attrapée, la pile des méthodes traversées par l'exception est affichée.

Page 21: Quelques classes. La classe Object Il s agit de la classe principale, elle contient les fonctions : protected Object clone() qui crée et retourne une

Exemple (3)

void moyenne() throws Exception{

total = 0somme = a + b;moyenne = somme / total;nb_moy = nb_moy + 1

}public static void main(Strig args[]){

try {moyenne(); }catch(Exception e) {

System.out.println(«  division par 0 ...»);}

}

Exception levée

Exception attrapée et gérée

Exception propagée

Page 22: Quelques classes. La classe Object Il s agit de la classe principale, elle contient les fonctions : protected Object clone() qui crée et retourne une

Définir son exception

Il est possible de définir une exception en la faisant dériver de la classe Exception :

class ExceptionMoyenne extends Exception{

public String toString(){

return "Problème de moyenne";}

}

Le mot clé throw permet de lancer son exception.

Page 23: Quelques classes. La classe Object Il s agit de la classe principale, elle contient les fonctions : protected Object clone() qui crée et retourne une

Exemple (4)

void moyenne() throws ExceptionMoyenne{

total = 0somme = a + b;if (total==0) then throw (new ExceptionMoyenne());moyenne = somme / total;nb_moy = nb_moy + 1

}public static void main(Strig args[]){

try {moyenne(); }catch(ExceptionMoyenne e) {

System.out.println(e.getMessage());}

}

Exception lancée

Exception attrapée et gérée

Exception propagée

Page 24: Quelques classes. La classe Object Il s agit de la classe principale, elle contient les fonctions : protected Object clone() qui crée et retourne une

Les Entrées-Sorties

Page 25: Quelques classes. La classe Object Il s agit de la classe principale, elle contient les fonctions : protected Object clone() qui crée et retourne une

La classe Java.lang.System

Utilisation des classes et interfaces du package java.io

Il existe trois flux (flots) : System.in : flux d ’entrée,

System.out : flux de sortie standard,

System.err : flux de sortie pour message d ’erreur.

Les entrées sorties peuvent générer une exception de type IOException à gérer

Page 26: Quelques classes. La classe Object Il s agit de la classe principale, elle contient les fonctions : protected Object clone() qui crée et retourne une

Exemple (read)

import java.io.*;class Lire {

public static void main(String[] argv){

int b, nb = o;try{

while((b = System.in.read())!=10){

nb++;system.out.println(b);

}}catch(IOException e){ …}

}}

Page 27: Quelques classes. La classe Object Il s agit de la classe principale, elle contient les fonctions : protected Object clone() qui crée et retourne une

Flux d ’entrées

InputStream dont dérivent les classes ByteArrayInputStream, FileInputStream, FilterInputStream, InputStream, ObjectInputStream, PipedInputStream, SequenceInputStream et StringBufferInputStream

Reader (orientée caractères) dont dérivent les classes BufferedReader, LineNumberReader, CharArrayReader, FilterReader, PushbackReader, InputStreamReader, FileReader, PipedReader, StringReader

Page 28: Quelques classes. La classe Object Il s agit de la classe principale, elle contient les fonctions : protected Object clone() qui crée et retourne une

Flux de sorties

OutputStream dont dérivent les classes

ByteArrayOutputStream, FileOutputStream, FilterOutputStream, ObjectOutputStream, OutputStream, PipedOutputStream

Writer (orientée caractères) dont dérivent les classes

BufferedWriter, CharArrayWriter, FilterWriter, OutputStreamWriter, PipedWriter, PrintWriter, StringWriter

Page 29: Quelques classes. La classe Object Il s agit de la classe principale, elle contient les fonctions : protected Object clone() qui crée et retourne une

Gestion de fichiers

La classe File permet d’accéder aux caractéristiques des fichiers et répertoires.

Trois constructeurs : File(File dir, String name) ; File(String path, String name); File(String path).

Les différentes méthodes sont : canRead() ; canWrite() ; delete() ; equals(Object

obj) ; exists() ; getAbsolutePath() ; getCanonicalPath() ; getName() ; getParent() ; getPath() ; hashCode() ; isAbsolute() ; isDirectory() ; isFile() ; lastModified() ; length() ; list(FilenameFilter filter) ; list() ; mkdir() ; mkdirs() ; renameTo(File dest) ; toString().

Page 30: Quelques classes. La classe Object Il s agit de la classe principale, elle contient les fonctions : protected Object clone() qui crée et retourne une

Exemple (File)

public static void main(String args[]){ File f = new File("C:\\ProgJava\\Fichiers", "Essai.java"); System.out.println("Essai.java est dans le répertoire " +

f.getPath()); if (f.exists()) {

System.out.println("Essai.java est dans le répertoire " + f.getPath());System.out.println(" droits en lecture, écriture" + f.canRead() + "," + f.canWrite() );

}}

Page 31: Quelques classes. La classe Object Il s agit de la classe principale, elle contient les fonctions : protected Object clone() qui crée et retourne une

Exemple (FileInputStream)

FileinputStream fis;byte[] b = new byte[1024];

try {

fis = new FileInputStream(" toto.txt ");} catch (FileNotFoundException e) {…}try {

int i =fis.read(b);}catch (IOException e) {…}String s = new String (b);

Page 32: Quelques classes. La classe Object Il s agit de la classe principale, elle contient les fonctions : protected Object clone() qui crée et retourne une

Exemple de filtre ( DataInputStream )

Lecture de données typées, y compris les chaînes de caractères pouvant être lues ligne par ligne… N ’est plus recommandée depuis java 1.1

public static void main(String args[]){ File f = new File("C:\\ProgJava\\Fichier", "Essai.java"); if (f.exists()) {

String chaine = ""; try {

FileInputStream fis = new FileInputStream(f);DataInputStream bis = new DataInputStream(fis);chaine = bis.readLine();bis.close();fis.close();

} catch (Exception e) {} System.out.println(chaine); }}

Page 33: Quelques classes. La classe Object Il s agit de la classe principale, elle contient les fonctions : protected Object clone() qui crée et retourne une

Exemple (FileOutputStream)

FileinputStream fis;byte[] b = new byte[1024];

try {

fis = new FileInputStream(" toto.txt ");} catch (FileNotFoundException e) {…}try {

int i =fis.read(b);}catch (IOException e) {…}String s = new String (b);

Page 34: Quelques classes. La classe Object Il s agit de la classe principale, elle contient les fonctions : protected Object clone() qui crée et retourne une

Java.io.FileOutputStream

Exemple d ’écriture dans un fichier :

public static void main(String args[]){ File f = new File("C:\\ProgJava\\fichier", "Essai.txt"); try {

FileOutputStream fos = new FileOutputStream(f);String s = new String (" Coucou ");int longueur = s.length();byte[] buffer = s.getBytes();for(int i = 0; i < longueur; i++) fos.write(buffer[i]);fos.close();

} catch (Exception e) {}}

Page 35: Quelques classes. La classe Object Il s agit de la classe principale, elle contient les fonctions : protected Object clone() qui crée et retourne une

Exemple de filtre ( DataOutputStream )

Lecture de données typées, y compris les chaînes de caractères …

public static void main(String args[]){ File f = new File(" C:\\ProgJava\\fichier", "Essai.txt"); try {

FileOutputStream fos = new FileOutputStream(f);DataOutputStream dos = new DataOutputStream(fos);dos.writeBytes(" coucou ");dos.close();fos.close();

}catch (Exception e) {}

}}

Page 36: Quelques classes. La classe Object Il s agit de la classe principale, elle contient les fonctions : protected Object clone() qui crée et retourne une

Depuis le JDK 1.1 et Java2

Notion de flot de caractères (characters Streams) :

On ne travaille plus uniquement sur des bytes, mais sur des caractères

Apparition de 2 classes : Writer et Reader FileReader <-> FileInputStream FileWriter <-> FileOutputStream

Echange facile de données avec accents (unicode)

Page 37: Quelques classes. La classe Object Il s agit de la classe principale, elle contient les fonctions : protected Object clone() qui crée et retourne une

Récapitulation

Flot de caractères Description

Reader Classe Abstraite pour flot d ’entrée (InputStream)

BufferedReader Bufférise les entrées ligne par ligne

LineNumberReader Garde trace du nb de lignes lues

CharArrayReader Lit un tableau de caractères

InputStreamReader Ttransforme un flot de byte et car. Unicode

FileReader Transforme des bytes lus depuis un fichier en car.

FilterReader Classe abstraite pour filtrer les caractères d ’entrées

PipedReader Lecture depuis PipeWriter

StringReader Lit depuis une chaîne de caractères

Page 38: Quelques classes. La classe Object Il s agit de la classe principale, elle contient les fonctions : protected Object clone() qui crée et retourne une

Récapitulation

Flot de caractères Description

Writer Classe Abstraite pour flot de sortie (OutputStream)

BufferedWriter Bufférise les sorties ligne par ligne

CharArrayWriter Ecrit un tableau de caractères

inputStreamWriter Transforme un flot de car. Unicode en flot de bytes

FileWriter Transforme un fichier de car. en flot de bytes

PrintWriter Ecrit des valeurs et des objs dans un Writer

PipedWriter Ecrit dans un PipeWriter

StringWriter Ecrit dans une chaîne de caractères

Page 39: Quelques classes. La classe Object Il s agit de la classe principale, elle contient les fonctions : protected Object clone() qui crée et retourne une

Exemple (FileWriter)

public static void main(String args[]){

File f = new File("C:\\Progjava\\fichier", "Essai.txt");try{

FileWriter fw = new FileWriter(f);PrintWriter pw = new PrintWriter(fw);// ou PrintWriter pw = new PrintWriter(new

FileWriter(f));pw.println(" coucou ");pw.close(); fw.close();

}catch (Exception e) {}

}

Page 40: Quelques classes. La classe Object Il s agit de la classe principale, elle contient les fonctions : protected Object clone() qui crée et retourne une

Exemple (FileReader)

public static void main(String args[]){

String chaine = "";File f = new File("C:\\Progjava\\fichier", "Essai.txt");try{

FileReader fr = new FileReader(f);BufferedReader br = new BufferedReader(fr);

// ou BufferedReader br = new BufferedReader(new FileReader(f));chaine = br.readLine();br.close(); fr.close();

}catch (Exception e) {} System.out.println(chaine);

}

Page 41: Quelques classes. La classe Object Il s agit de la classe principale, elle contient les fonctions : protected Object clone() qui crée et retourne une

Exemple (Saisie clavier)

public static void main(String args[]){

String chaine = "";try{

InputStreamReader isr = new InputStreamReader(System.in);

BufferedReader br = new BufferedReader(isr);chaine = br.readLine();

}catch (Exception e) {}System.out.println(chaine);

}

Page 42: Quelques classes. La classe Object Il s agit de la classe principale, elle contient les fonctions : protected Object clone() qui crée et retourne une

La sérialisation

Signifie persistance,

Pour éviter la perte des données à la fin de l ’exécution

Si un objet contient un autre objet, ce dernier est aussi sérialisé, et on obtient un arbre de sérialisation

Page 43: Quelques classes. La classe Object Il s agit de la classe principale, elle contient les fonctions : protected Object clone() qui crée et retourne une

Sérialisation (2)

Les objets transients Ce sont des objets qui ne peuvent pas

être sérialisés (processus, flux de données)

Si ils sont inclus dans un objet sérialisé, il faut indiquer qu ’ils sont transient

idem si on ne veut pas que certaines parties d ’un objet soient sérialisées

Page 44: Quelques classes. La classe Object Il s agit de la classe principale, elle contient les fonctions : protected Object clone() qui crée et retourne une

Syntaxe pour la sérialisation

La classe doit implémenter l ’interface serializable (pas de méthode à implémenter)

Exemple :import java.io.*;

class MaClasse implements Serializable {

public transient Thread mathread;private String nom;private int total;

Bidon reservoir; ...

Page 45: Quelques classes. La classe Object Il s agit de la classe principale, elle contient les fonctions : protected Object clone() qui crée et retourne une

Sauvegarde d ’un objet

public static void main(String args[]){

Bidon b1 = new Bidon("b1", 25);Bidon b2 = new Bidon("b2", 50);File f = new File("C:\\Progjava\\fichier", "Essai.obj");try{

FileOutputStream fos = new FileOutputStream(f);ObjectOutputStream oos = new ObjectOutputStream(fos);oos.writeObject(b1);oos.writeObject(b2);oos.close(); fos.close();

}catch (Exception e) {}

}

Page 46: Quelques classes. La classe Object Il s agit de la classe principale, elle contient les fonctions : protected Object clone() qui crée et retourne une

Lecture d ’un objet persistant

public static void main(String args[]){

File f = new File("C:\\Progjava\\fichier", "Essai.obj");try{

FileInputStream fis = new FileInputStream(f);ObjectInputStream ois = new ObjectInputStream(fis);Bidon b1 = (Bidon) ois.readObject();Bidon b2 = (Bidon) ois.readObject();ois.close(); fis.close();

}catch (Exception e) {}

}