J201 (JOC) Java Avancé juin 2007 ~ Brigitte Groléas ~

Slides:



Advertisements
Présentations similaires
Sérialisation des objets
Advertisements

Le mécanisme des exceptions
Flots et Sérialisation des objets
Introspection et Réflexion Manipulation dynamique de code Java.
Au programme du jour …. Ce que vous navez pas encore vu Constantes et variables de classe Main et Tests Utilisation de lAPI Existence des packages Existence.
SI3 MAM3 Hydro Nathan Cohen Igor Litovsky Christophe Papazian
Au programme du jour …. Un peu plus de structures de données
Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen
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)
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
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
Algorithme et structure de données
LICENCE MIAGE Introduction Programmation Orientée Objet JAVA philippe
JAV - TD 6 Structures de données JAVA
FLSI602 Génie Informatique et Réseaux
Jérôme CUTRONA PHP objet Jérôme CUTRONA 01:08:01 Programmation Web
Classes locales classes définies à l'intérieur d'un bloc de code,
Structures collectives en Java
Introduction à la programmation (420-PK2-SL) cours 12 Gestion des applications Technologie de linformation (LEA.BW)
COURS DE PROGRAMMATION ORIENTEE OBJET :
Récursivité.
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
77 Utilisation des classes (suite). 7-2 Objectifs A la fin de ce cours, vous serez capables de : Définir des méthodes surchargées dans une classe Fournir.
Chapitre 21 Collections Partie I Introduction Une collection : est un objet qui regroupe multiple éléments dans une unité. Une collection est.
Classes abstraites et Interfaces
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.
66 Utilisation des classes et des objets. 6-2 Objectifs A la fin de ce cours, vous serez capables de : Créer de nouvelles classes à laide de Eclipse Utiliser.
Une nouvelle structure de données : les tableaux
Rappels Java.
Présentation Structures de Données et TDA
P. Van Roy, LINF1251 LINF1251: Le Langage Java Peter Van Roy Département dIngénierie Informatique, UCL
Programmation concurrente
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.
Chapitre 9 Les sous-programmes.
COURS DE PROGRAMMATION ORIENTEE OBJET :
COURS DE PROGRAMMATION ORIENTEE OBJET :
Java, les objets : tout de suite ! Rassembler, grouper les objets
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.
Structures des données
Algorithmique Les structures Rappel L'enchaînement séquentiel
4 Introduction des objets. Les chaînes et tableaux
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.
La notion de type revisitée en POO
11/04/ L'héritage Cours 7 Cours 7.
Cours 7 Classes locales Clonage Divers: tableaux.
Templates, Containers et STL Structures de données de base tableau, liste chaînée file, pile, arbres, hashtable collection, ensemble 2 caractéristiques.
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
Entrées / Sorties.
Strings et Tableaux en Java
Les sockets.
Schéma de conception Factory Method Exemple Sylvain Giroux.
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
JAVA Les Entrées-sorties
STREAMS (et fichiers).
Transcription de la présentation:

J201 (JOC) Java Avancé juin 2007 ~ Brigitte Groléas ~

Le typesafe enums Créer une énumération : enum HorizontalAlign{ LEFT, RIGHT, CENTER }; Accéder : HorizontalAlign.LEFT; HorizontalAlign.RIGHT; HorizontalAlign.CENTER; juin 2007 ~ Brigitte Groléas ~

Les Collections Pour chaque type de structure de données (liste, ensemble, association) il existe une interface et plusieurs implémentations Set : élément unique List : liste, avec doublons Map : suite de couples clé-valeur List list = new ArrayList(); Set set = new HashSet(); Map map = new TreeMap(); juin 2007 ~ Brigitte Groléas ~

Les implémentations de List Vector (vieux, déconseillé par sun): doublons possibles, accès indexé, synchronisée (adaptée au multithread) lourd. Bien pour ajout ou suppression en fin de tableau ainsi que pour la recherche à un indice particulier (la représentation en mémoire est un tableau) ArrayList : tableau, doublons possibles, accès indexé (non synchronosée) plus legere que vector (non adaptée au multi thread). Bien pour ajout ou suppression en fin de tableau ainsi que pour la recherche à un indice particulier (la représentation en mémoire est un tableau) Pour synchroniser une ArrayList : List synchronizedList = Collections.synchronizedCollections(new ArrayList());" LinkedList : liste chainée, doublons possibles, accès indexé, bien pour ajouter ou supprimer n’importe où dans la liste juin 2007 ~ Brigitte Groléas ~

Les tables d'association java.util.Map : interface qui abstrait la notion de table d'association HashMap : table gérée par Hcode (+ courante) HashSet : pas de doublon java.util.SortedMap : interface idem Map mais ordonné induit un accès plus rapide. TreeMap : arbre balancé TreeSet : pas de doublon juin 2007 ~ Brigitte Groléas ~

Les Itérateurs List v = new ArrayList(); Individu i = new Individu(); v.add( i); Iterator it = v.iterator(); while( it.hasNext()) { Individu j = (Individu) it.next(); j.affiche(); } juin 2007 ~ Brigitte Groléas ~

Générique List<Individu> v =new ArrayList<Individu> (); Individu i = new Individu(); v.add( i); Iterator <Individu> it = v.iterator(); while( it.hasNext()) { Individu j = it.next(); j.affiche(); } juin 2007 ~ Brigitte Groléas ~

générer la documentation : javadoc Syntaxe : javadoc fichier.java <RC> Génère fichier.html, qui contient l ’index des classes, attributs et méthodes. juin 2007 ~ Brigitte Groléas ~

Mise en place de documentation public class Perso{ void f1(){ … } void f2(){ … } /** * Par les soirs bleus d'été, * j'irai par les sentiers ... * @version 1.1.1b 15/03/98 * @param qtte : un <i>chiffre</i> parmi d'autre * @see #f1() * @see #f2() * @return un chiffre */ public int compte( int qte ){ // ... return 5; } on obtient les fichiers : AllNames.html Packages.html tree.html juin 2007 ~ Brigitte Groléas ~

La documentation de Sun juin 2007 ~ Brigitte Groléas ~

Saisie au clavier String lireligne() throws java.io.IOException { Gestion de l'exception Fin de ligne String lireligne() throws java.io.IOException { StringBuffer tab = new StringBuffer( 20 ); char c; while( ( c = (char)System.in.read() ) != '\r' ) tab.append( c ); return tab.toString(); } Saisie d'un caractère au clavier Transformation du StringBuffer en String juin 2007 ~ Brigitte Groléas ~

Les classes imbriquées Une classe à l'intérieur d'une autre classe. La classe imbriqué peut accéder aux données privées de la classe supérieure public class AA { private long var; public static class BB { public int i; ... } ... Acces depuis l'extérieure par package.AA.BB une classe imbriquée static se comporte exactement comme une classe normale, sauf pour la visibilité des variables juin 2007 ~ Brigitte Groléas ~

Classe interne Classe imbriquée non static inner classe Associée à une instance particulière Ne peut pas exister sans l'intentiation de la classe externe Les variables de la classe externe sont accessibles à la classe interne juin 2007 ~ Brigitte Groléas ~

Nombre variable d’arguments (varargs) public int totalise(int ... valeurs) { int total = 0; for (int val : valeurs) { total += val; } return total; Appel : totalise(1,2,3)); totalise(2,5,6,8,10)); int[] données = {1,2,3,4}; totalise(données)); juin 2007 ~ Brigitte Groléas ~

Les fichiers 4 classes "mères", abstraites, pour traiter les flots de données héritant directement d'Object : pour traiter de flots d'octets la classe InputStream la classe OutputStream pour traiter de flots de caractères la classe Reader la classe Writer juin 2007 ~ Brigitte Groléas ~

La classe FileReader permet de lire des caractères dans un fichier. La classe FileWriter permet d'écrire des caractères dans un fichier. juin 2007 ~ Brigitte Groléas ~

La sérialisation Compresse les informations de l’objet pour qu’il soit ‘transportable’ Les données dans le fichier ne peuvent pas être lues comme du texte par une autre application L’objet, lorsqu’il est lu, est décompressé, et retrouve son existence dans un tas (ie une vm) permet d'échanger des données entre applications distribuées, permet la persistance des objets : un objet est persistant si sa durée de vie est supérieure au programme qui l'a créé. Une des façons d'obtenir de le persistance est la sérialisation dans des fichiers. juin 2007 ~ Brigitte Groléas ~

Serialisable = transformable en une suite d'octets ObjectInputSteam en lecture, instancié à partir d'un InputStream, sa méthode readObject() peut lever une exception ClassNotFoundException. readObject() renvoie un Object donc il faut faire un cast pour récupérer le bon type ObjectOutputSteam en écriture, instancié à partir d'un OutputStream sa méthode writeObject() juin 2007 ~ Brigitte Groléas ~

Lire et écrire un texte dans le fichier FileWriter fw= new FileWriter( "c:/titio.txt",true); fw.write( "velo\n"); fw.close(); FileReader fr = new FileReader( "c:/titio.txt"); BufferedReader br = new BufferedReader(fr); // pour ligne ligne à ligne String s = br.readLine() ; fr.close(); FileReader reader = new FileReader("c:/titio.txt"); do { lu = reader.read(); if (lu != -1) { c = (char) lu; System.out.print( c); } } while (lu != -1); // tant que l'on est pas à la fin du fichier reader.close(); juin 2007 ~ Brigitte Groléas ~

La classe File Tester l'existence d'un fichier File f = new File("c:/titio.txt"); if (f.exists()) System.out.println("existe"); else System.out.println("existe pas"); Récuperer le nom sans le chemin File file = new File("c:/titio.txt"); System.out.println(file.getName());//affiche titio.txt Renommer un fichier File nouveauNom=new File("c:/suiv.txt"); file.renameTo(nouveauNom); Lister les fichiers d'un répertoire File repertoire = new File("c:/"); String[] listeFichiers = repertoire.list(); for (int i=0;i < listeFichiers.length;i++) System.out.println(listeFichiers[i]); juin 2007 ~ Brigitte Groléas ~

Fenêtre de choix class EssaiChoixFichier { public static void main(String[] argv) throws IOException { JFileChooser dialogue = new JFileChooser(); PrintWriter ecrivain; File fichier; if (dialogue.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) { fichier = dialogue.getSelectedFile(); ecrivain = new PrintWriter(new FileWriter(fichier.getPath(), true)); ecrivain.println(argv[0]); ecrivain.close(); } System.exit(0); } } Fait apparaître la fenêtre modale de dialogue permettant de sélectionner un fichier. juin 2007 ~ Brigitte Groléas ~

Lire les 20 premiers octets du fichier titi et les afficher à l’écran InputStream fluxFichier = new FileInputStream ("c:/titi.txt"); byte contenuFichier [ ] = new byte [20]; fluxFichier.read (contenuFichier); System.out.println (new String (contenuFichier)); fluxFichier.close (); juin 2007 ~ Brigitte Groléas ~

Lire et écrire un objet dans le fichier FileOutputStream fichier = new FileOutputStream("c:/essai"); ObjectOutputStream flotEcriture = new ObjectOutputStream(fichier); for (int i=0; i<5; ++i) flotEcriture.writeObject(tab[i]); flotEcriture.close(); FileInputStream fichier2 = new FileInputStream("c:/essai"); ObjectInputStream flotLecture = new ObjectInputStream(fichier2); Object lu; for (int i=0; i<5; ++i) { lu = flotLecture.readObject(); if (lu instanceof Date) tab2[i]=(Date)lu; else System.out.println("eee"); flotLecture.close(); juin 2007 ~ Brigitte Groléas ~