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.

Slides:



Advertisements
Présentations similaires
Sérialisation des objets
Advertisements

Le mécanisme des exceptions
Flots et Sérialisation des objets
SI3 MAM3 Hydro Nathan Cohen Igor Litovsky Christophe Papazian
Au programme du jour …. Un peu plus de structures de données
La classe String Attention ce n’est pas un type de base. Il s'agit d'une classe défini dans l’API Java (Dans le package java.lang) String s="aaa"; // s.
Approfondissement du langage
(Classes prédéfinies – API Java)
Voisin-Polian : Introduction à Java 1 Introduction à Java - les flots - Frédéric VOISIN – Nicole POLIAN FIIFO - « Remise à Niveau »
Plan du cours La sérialisation: – comment stocker et restaurer les Objets? Les interfaces graphiques et la programmation évènementielle. –Comment concevoir.
Programmer en JAVA par Tama
JAV - TD 6 Structures de données JAVA
Tarak Chaari, Stéphane Frénot, Frédérique Laforest, Frédéric Le-Mouël JAV1 JAV – TD 5 Lhéritage en Java.
1 Le mécanisme des exceptions Qu'est-ce qu'une exception? Comment définir et signaler des exceptions? Comment récupérer des exceptions?
Traitement des erreurs en Java
Structures collectives en Java
Structures de données linéaires
COURS DE PROGRAMMATION ORIENTEE OBJET :
Les méthodes en java Une méthode est un regroupement d’instructions ayant pour but de faire un traitement bien précis. Une méthode pour être utilisée.
Les collections d'objets
Langage Oriente Objet Cours 4.
Leçon 6 : Structures de données dynamiques IUP 2 Génie Informatique Méthode et Outils pour la Programmation Françoise Greffier.
88 Utilisation des arrays, des chaînes et des classes conteneurs.
Les exceptions. Quest ce quune exception ? Une erreur dans le programme Due à un bug ou un cas « anormal » Gestion complète en java : JVM Dans dautre.
Page de garde Classes de base du JDK Novembre 2000
1 Cours JAVA / Y.Laborde Java : Les FLUX de données Les flux de données introduction les flux binaires les flux binaires de sortie (FBS) les flux binaires.
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
Java : Héritage & Exceptions
Système d’Exploitation
1 Objectifs de ce cours (I21) Cours JAVA (I21) -Licence 1 Semestre 2 / Y.Laborde Résumé du cours précédent.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 5 – Héritage, Interfaces et Listes génériques.
Rappels Java.
IFT 6800 Atelier en Technologies d’information
Vector, Iterator, LinkedList
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 3 : Classes et Objects.
COURS DE PROGRAMMATION ORIENTEE OBJET :
Structures de données IFT-10541
Les méthodes en java • Une méthode est un regroupement d’instructions ayant pour but de faire un traitement bien précis. • Une méthode pour être utilisée.
1111 Gestion des exceptions Objectifs À la fin de ce cours, vous serez capables de : • Expliquer les concepts de base de la gestion des exceptions.
1212 Entrée et sortie de fichiers Objectifs À la fin de ce cours, vous serez capables de : • Lire à partir de la console • Écrire sur la console.
J201 (JOC) Java Avancé juin 2007 ~ Brigitte Groléas ~
1 Fichers Binaires, Accès Direct et Objets. 2 Données binaires. Il s'agit ici de lire et écrire des données binaires par opposition à du texte. Pour ce.
LIFI-Java 2004 Séance du Mercredi 22 sept. Cours 3.
Cours 9 Exceptions (fin) Généricité. POO-L3 H. Fauconnier2 Chaînage d'exceptions  Une exception peut être causée par une autre.  il peut être utile.
Java : Exceptions H Batatia. 5/03/2004Java12: H.Batatia2 Exemple 1 public class Bonjour { public static void main(String[] args) { System.out.println("Bonjour.
Cours 7 Classes locales Clonage Divers: tableaux.
Cours Les flux ou streams. Cours 162 Flux : objet possédant des méthodes capables de lire ou écrire des flots d’octets sur tout support (mémoire,
CEG3585/CEG3555 Tutorat 2 Hi ver 2013.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Les erreurs communes en Java.
Tutorat en bio-informatique
12/04/ Les exceptions Cours 11 Cours 11.
Entrées / Sorties.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 3 – Classes et objets en Java Master 1 SIGLIS1 Java Lecteur - Chapitre 3 Classes et objets en Java.
Strings et Tableaux en Java
Les sockets.
Les classes et les objets Les données finales class A { … private final int n = 20 ; // la valeur de n est définie dans sa déclaration … } class A { public.
Schéma de conception Factory Method Exemple Sylvain Giroux.
Cours du 5 novembre.
Héritage H. Batatia. plan Notion (que signifie l’héritage) Ecriture en java Héritage multiple (interdit) Instanciation (partie propre et partie héritée)
Cours 4 (14 octobre) Héritage. Chapitre III Héritage.
1 Chapitre III (~70 transparents) Compléments. 2 Au sommaire de ce chapitre 1. Les fichiers Les classes utilitaires
Ingénierie des réseaux - Chapitre 2 bis Les sockets en Java
Fichier et Stream d’Entrée-Sortie IFT1025, Programmation 2 Jian-Yun Nie Version court par Douglas Eck; Version
Introduction à la programmation objet avec java
Héritage Conception par Objet et programmation Java
Traitement des erreurs en Java: les exceptions
Classes abstraites, interface Classe interne Classes enveloppes
JAVA Les Entrées-sorties
Philippe Gandy - 22 septembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Chapitre 21 Collections partie III Set Une collection qui contient des éléments uniques. Deux implémentation :  HashSet : stock les éléments.
Transcription de la présentation:

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 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

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 daccès aux caractères, de comparaisons, de recherche, dextraction, de copie, de conversion minuscules/majuscule,...

La classe String (2) L opérateur (+) est surchargé pour permettre la concaténation, et à la conversion implicite dobjets 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.

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 à lautre, et positif si la chaîne est supérieure à lautre 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 lindex 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.

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

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 dajouter un objet en queue, get(index) permet de récupérer lobjet positionné à lindex 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.

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.

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 lobjet. Une table de clés possède les méthodes : put(clé, objet) : get(clé) : containskey(clé) : containsvalue(objet) : isEmpty() : entre autres...

Quelques classes de java.util La classe Set définit un ensemble ne pouvant contenir quun exemplaire dun objet. Cette classe dispose, entre autres, des méthodes : add(objet) qui najoute lobjet que sil nest pas déjà présent contains(objet) ; remove(objet) ; isEmpty().

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 dau moins un élément. elle est utilisée surtout pour la lecture des éléments dun 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.

Gestion d exceptions

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 :

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 linterface Throwable

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 lexception sil existe. toString, qui retourne la classe et le message sous forme de chaîne. printStackTrace, qui fait appel à toString, mais qui en plus indique lendroit du programme où a été levée lexception.

Capture dune exception Pour récupérer, ou attraper, une exception : …. try {…. //endroit où pourrait apparaître une exception } catch (type_exception_1 e1) { …. // traitement de lexception de type 1 } catch (type_exception_2 e2) { …. // traitement de lexception de type 2 } finally { …. // dans tous les cas, passer par ici } ….

Exemple... total = 0 try { 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

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

Exemple (2)... total = 0 try { 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

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.

Exemple (3) void moyenne() throws Exception { total = 0 somme = 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

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.

Exemple (4) void moyenne() throws ExceptionMoyenne { total = 0 somme = 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

Les Entrées-Sorties

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

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){ …} }

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

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

Gestion de fichiers La classe File permet daccé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().

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() ); }

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);

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); }

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);

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) {} }

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) {} }

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)

Récapitulation Flot de caractèresDescription ReaderClasse Abstraite pour flot d entrée (InputStream) BufferedReaderBufférise les entrées ligne par ligne LineNumberReaderGarde trace du nb de lignes lues CharArrayReaderLit un tableau de caractères InputStreamReaderTtransforme un flot de byte et car. Unicode FileReaderTransforme des bytes lus depuis un fichier en car. FilterReaderClasse abstraite pour filtrer les caractères d entrées PipedReaderLecture depuis PipeWriter StringReaderLit depuis une chaîne de caractères

Récapitulation Flot de caractèresDescription Writer Classe Abstraite pour flot de sortie (OutputStream) BufferedWriterBufférise les sorties ligne par ligne CharArrayWriterEcrit un tableau de caractères inputStreamWriterTransforme 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

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) {} }

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); }

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); }

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

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

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;...

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) {} }

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) {} }