La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Juin 2007~ Brigitte Groléas ~ 1 J201 (JOC) Java Avancé.

Présentations similaires


Présentation au sujet: "Juin 2007~ Brigitte Groléas ~ 1 J201 (JOC) Java Avancé."— Transcription de la présentation:

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

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

3 juin 2007~ Brigitte Groléas ~ 3 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();

4 juin 2007~ Brigitte Groléas ~ 4 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

5 juin 2007~ Brigitte Groléas ~ 5 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

6 juin 2007~ Brigitte Groléas ~ 6 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(); }

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

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

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

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

11 juin 2007~ Brigitte Groléas ~ 11 Saisie au clavier 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(); } Gestion de l'exception Fin de ligne Saisie d'un caractère au clavier Transformation du StringBuffer en String

12 juin 2007~ Brigitte Groléas ~ 12 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;... }... } une classe imbriquée static se comporte exactement comme une classe normale, sauf pour la visibilité des variables Acces depuis l'extérieure par package.AA.BB

13 juin 2007~ Brigitte Groléas ~ 13 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

14 juin 2007~ Brigitte Groléas ~ 14 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));

15 juin 2007~ Brigitte Groléas ~ 15 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

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

17 juin 2007~ Brigitte Groléas ~ 17 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.

18 juin 2007~ Brigitte Groléas ~ 18 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()

19 juin 2007~ Brigitte Groléas ~ 19 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();

20 juin 2007~ Brigitte Groléas ~ 20 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]);

21 juin 2007~ Brigitte Groléas ~ 21 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.

22 juin 2007~ Brigitte Groléas ~ 22 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 ();

23 juin 2007~ Brigitte Groléas ~ 23 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();


Télécharger ppt "Juin 2007~ Brigitte Groléas ~ 1 J201 (JOC) Java Avancé."

Présentations similaires


Annonces Google