+ All Categories
Home > Documents > J201 (JOC)

J201 (JOC)

Date post: 09-Jan-2016
Category:
Upload: nuri
View: 59 times
Download: 1 times
Share this document with a friend
Description:
J201 (JOC). Java Avancé. Le typesafe enums. Créer une énumération : enum HorizontalAlign{ LEFT, RIGHT, CENTER }; Accéder : HorizontalAlign.LEFT; HorizontalAlign.RIGHT; HorizontalAlign.CENTER;. Les Collections. - PowerPoint PPT Presentation
23
juin 2007 ~ Brigitte Groléas ~ 1 J201 (JOC) Java Avancé
Transcript
Page 1: J201 (JOC)

juin 2007 ~ Brigitte Groléas ~ 1

J201 (JOC)

Java Avancé

Page 2: J201 (JOC)

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;

Page 3: J201 (JOC)

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

Page 4: J201 (JOC)

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

Page 5: J201 (JOC)

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

Page 6: J201 (JOC)

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

}

Page 7: J201 (JOC)

juin 2007 ~ Brigitte Groléas ~ 7

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

}

Page 8: J201 (JOC)

juin 2007 ~ Brigitte Groléas ~ 8

La documentation

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.

Page 9: J201 (JOC)

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 ... * @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.htmlPackages.htmltree.html

Page 10: J201 (JOC)

juin 2007 ~ Brigitte Groléas ~ 10

La documentation de Sun

Page 11: J201 (JOC)

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 del'exception

Fin de ligne

Saisie d'un caractère au

clavierTransformation du

StringBuffer en String

Page 12: J201 (JOC)

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 parpackage.AA.BB

Page 13: J201 (JOC)

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

Page 14: J201 (JOC)

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

Page 15: J201 (JOC)

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

Page 16: J201 (JOC)

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.

Page 17: J201 (JOC)

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.

Page 18: J201 (JOC)

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

Page 19: J201 (JOC)

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

Page 20: J201 (JOC)

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

Page 21: J201 (JOC)

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.

Page 22: J201 (JOC)

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

Page 23: J201 (JOC)

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


Recommended