EL HAMLAOUI Mahmoud 1 Fichiers EL HAMLAOUI Mahmoud 1 Gestion des flots Un flot
EL HAMLAOUI Mahmoud 1 Fichiers EL HAMLAOUI Mahmoud 1 Gestion des flots Un flot (Stream) est un canal de communication ouvert en lecture et écriture. Java distingue deus sorties de flux en fonction du type de données manipulées : Flux d’octets InputStream / OutputStream Flux de caractères : Reader / Writer EL HAMLAOUI Mahmoud 2 Méthodes InputStream EL HAMLAOUI Mahmoud 3 Méthodes Reader EL HAMLAOUI Mahmoud 4 EL HAMLAOUI Mahmoud 2 Méthodes OutputStream EL HAMLAOUI Mahmoud 5 Méthodes Writer EL HAMLAOUI Mahmoud 6 Ecrire dans un fichier Créer un objet FileOutputStream. FileOutputStream fileStream = new FileOutputStream (‘’monServ.ser‘’); Créer un objet ObjectOutputStream ObjectOutputStream os = new ObjectOutputStream (fileStream); Ecriture d’objet os.writeObject(‘a’); os.writeObject(‘b’); os.close(); EL HAMLAOUI Mahmoud 7 Ecrire dans un fichier EL HAMLAOUI Mahmoud 8 FileWriter out; try { out = new FileWriter ("monServ.txt"); String sentence = "les examens approches !!\n"; out.write(sentence); for (int i = 1; i<=11; i++) { out.write(sentence, 0, i); out.write("\n", 0, 1); } out.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } EL HAMLAOUI Mahmoud 3 Lecture à partir d’un fichier EL HAMLAOUI Mahmoud 9 try { FileInputStream is = new FileInputStream("monServ.ser"); byte [] buffer = new byte[1024] ; int n = 0, total = 0, loops = 0 ; do { n = is.read(buffer) ; total += n ; loops++ ; } while (n != -1) ; System.out.println( "Nombre d'octets lus au total = " + total + " en " + loops + " boucles.") ; } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } Lecture à partir d’un fichier EL HAMLAOUI Mahmoud 10 String line = null ; FileReader fr = new FileReader("monServ.txt"); LineNumberReader lnr = new LineNumberReader(fr) ; do { int number = lnr.getLineNumber() ; line = lnr.readLine() ; if (line != null) System.out.println("[" + number + "] : " + line) ; } while (line != null) ; Emplacement de fichier Un chemin vers un fichier utilise toujours un caractère de séparation, qui permet d'identifier les noms des répertoires. Ce caractère de séparation dépend du système d'exploitation EL HAMLAOUI Mahmoud 11 StringBuffer accessFileName = new StringBuffer() ; accessFileName.append("rep").append(File.separator).append("monServ.txt") ; System.out.println(accessFileName) ; Sous windows : rep\monServ.txt Sous Linux : rep/monServ.txt Problème EL HAMLAOUI Mahmoud 12 EL HAMLAOUI Mahmoud 4 Solution EL HAMLAOUI Mahmoud 13 Sérialisation d’objet La sérialisation des types primitifs se réalise de façon automatiquement. Une classe n’est sérialisable qu’en implémentant l’interface Serialisable. Le mot clé transient permet d’éviter de sauvegarder une variable. EL HAMLAOUI Mahmoud 14 Collections EL HAMLAOUI Mahmoud 15 Tableaux, Problèmes ?! Connaitre à l’avance la taille du tableau, Création d’un nouveau tableau si débordement, Difficulté d’enlever des éléments du tableau, Problème d’indexation, Types des éléments dans le tableau. EL HAMLAOUI Mahmoud 16 EL HAMLAOUI Mahmoud 5 Collections Deux grandes catégories : Collection : groupe d’objets Map : Table couples Clé/Valeur EL HAMLAOUI Mahmoud 17 Implémentation EL HAMLAOUI Mahmoud 18 ArrayList Pas de limite de taille, Possibilité de stocker différents types de données, Bonnes performances pour les accesseurs et les modificateurs. EL HAMLAOUI Mahmoud 19 ArrayList EL HAMLAOUI Mahmoud 20 List<String> myList = new ArrayList<String>(); myList.add("Lundi"); myList.add("Mardi"); myList.add("Mercredi"); myList.add("Jeudi"); myList.add("Vendredi"); myList.add("Samedi"); myList.add("Dimanche"); String jour = myList.get(3); System.out.println(" Le 4eme jour est " + jour ); String removeDay = myList.remove(6); System.out.println( removeDay+ " a été enlevé " ); EL HAMLAOUI Mahmoud 6 Méthodes EL HAMLAOUI Mahmoud 21 Méthodes EL HAMLAOUI Mahmoud 22 Question ? EL HAMLAOUI Mahmoud 23 List myList = new ArrayList(); myList.add(1); myList.add(“Lundi"); myList.add(2); myList.remove(1); myList.set(1, "Vendredi"); for(Object elt : myList){ System.out.println (elt); } Question ? EL HAMLAOUI Mahmoud 24 List myList = new ArrayList(); myList.add(1); myList.add(2); myList.add(3); myList.remove(1); for(Object elt : myList){ if (elt.equals(1)) System.out.println (elt); } EL HAMLAOUI Mahmoud 7 Question ? EL HAMLAOUI Mahmoud 25 List myList = new ArrayList(); myList.add(1); myList.add(2); myList.add(3); //myList.remove(1); for(Object elt : myList){ if (elt.equals(1)) { System.out.println (elt); myList.remove(1); } } Itération du conteneur Utilisation de l’interface Iterator, EL HAMLAOUI Mahmoud 26 Question ? EL HAMLAOUI Mahmoud 27 List myList = new ArrayList(); myList.add(1); myList.add(2); myList.add(3); //myList.remove(1); Iterator<Integer> it = myList.iterator(); while (it.hasNext()) { Integer elt = it.next(); if (elt.equals(1)) { System.out.println (elt); it.remove(); } } System.out.println (myList.); Question ? EL HAMLAOUI Mahmoud 28 List<String> lettres = new ArrayList<String>(); lettres.add("d"); lettres.add("b"); lettres.add("a"); lettres.add("c"); Collections.sort (lettres); System.out.println (lettres); Collections.shuffle (lettres); System.out.println (lettres); List<String> sub = lettres.subList(1, 2); System.out.println (sub); Collections.reverse (sub); EL HAMLAOUI Mahmoud 8 LinkedList Liste doublement chaînée, Lien vers l’élément précèdent et suivant. L’élément est null pour L’élément précédent le premier élément, L’élément suivant le dernier élément. Meilleures performances pour ajouter et retirer des éléments, Mauvaises performances pour les accesseurs et les modificateurs. EL HAMLAOUI Mahmoud 29 Exemple EL HAMLAOUI Mahmoud 30 LinkedList<String> list=new LinkedList<String>(); list.add("LeBron"); list.add("Curry"); list.add(" Bryant "); list.addFirst("Jordan"); list.addLast("Larry "); Iterator<String> iterator=list.iterator(); while(iterator.hasNext()){ System.out.println(iterator.next()); } Méthodes EL HAMLAOUI Mahmoud 31 Transition entre collections EL HAMLAOUI Mahmoud 32 Integer [ ] tab = { 2, 3, 5, 1, 9 }; List <Integer> liste1 = new LinkedList(Arrays.aslist(tab)); List <Integer> liste2 = Arrays.asList(tab); EL HAMLAOUI Mahmoud 9 Questions EL HAMLAOUI Mahmoud 33 ArrayList<Integer> liste = new ArrayList(Arrays. asList(2, 7, 2, 1, 3, 9, 2, 4, 2)); HashSet EL HAMLAOUI Mahmoud 34 HashSet<String> hs = new HashSet<String>(); hs.add("geeks"); hs.add("practice"); hs.add("devs"); System.out.println(hs); hs.add("geeks"); hs.add("practice"); System.out.println(hs); hs.add(null); hs.add(null); System.out.println( hs); HashSet Les éléments sont rangés suivant une méthode de hachage, utilise la valeur hashcode de l’objet pour déterminer si un élément ne fait pas déjà partie de l’ensemble, L’ordre des élément n’est pas conservé. Utilisation de LinkedHasSet pour un affichage ordonné. Permet de stocker des éléments uniques, Permet de retrouver rapidement un élément. EL HAMLAOUI Mahmoud 35 TreeSet Les éléments sont rangés de manière ascendante, Permet de stocker des éléments uniques. EL HAMLAOUI Mahmoud 36 EL HAMLAOUI Mahmoud 10 TreeSet, Problem!! EL HAMLAOUI Mahmoud 37 public static void main (String[] args) { new TestTree().go(); } public void go() { Book b1 = new Book(“Les examens”); Book b2 = new Book(“sont pour”); Book b3 = new Book(“Bientôt”); TreeSet<Book> tree = new TreeSet<Book>(); tree.add(b1); tree.add(b2); tree.add(b3); System.out.println(tree); } } class Book { String title; public Book(String t) { title = t; } Interface Une interface définit un contrat purement abstrait, Une interface n’implémente aucune méthode, Les constantes (publiques) sont autorisées, L’implémentation doit se faire dans une classe séparée, Une classe peut implémenter plusieurs interface. EL HAMLAOUI Mahmoud 38 Exemple EL HAMLAOUI Mahmoud 39 Exemple EL HAMLAOUI Mahmoud 40 EL HAMLAOUI Mahmoud 11 TreeSet, Solution EL HAMLAOUI Mahmoud 41 class Book implements Comparable { String title; public Book(String t) { title = t; } @Override public int compareTo(Object o) { // TODO Auto-generated method stub Book book = (Book)o; return title.compareTo(book.title); } public String toString() { return "title : "+title; } } Exemple EL HAMLAOUI Mahmoud 42 TreeSet, Problem!! EL HAMLAOUI Mahmoud 43 public void go() { Book b1 = new Book(“Les examens”); Book b2 = new Book(“sont pour”); Book b3 = new Book(“Bientôt”); BookCompare bCompare = new BookCompare(); TreeSet<Book> tree = new TreeSet<Book>(bCompare); tree.add(b1); tree.add(b2); tree.add(b3); System.out.println(tree); } } public class BookCompare implements Comparator<Book> { @Override public int compare(Book o1, Book o2) { return (o1.title.compareTo(o2.title)); } } Map EL HAMLAOUI Mahmoud 44 EL HAMLAOUI Mahmoud 12 HashMap HashMap fonctionne avec un couple (clé/valeur), Accepte la valeur null, Clé doit être unique, Le parcours se fait avec l’objet Set. EL HAMLAOUI Mahmoud 45 HashMap EL HAMLAOUI Mahmoud 46 HashMap<Integer, String> hm = new HashMap<Integer, String>(); hm.put(12, "geeks"); hm.put(2, "practice"); hm.put(7, "devs"); System.out.println(hm); hm.put(12, "geeks"); System.out.println(hm); Set s = hm.entrySet(); Iterator it = s.iterator(); while(it.hasNext()) System.out.println(it.next()); for(Entry<Integer, String> entry : hm.entrySet ( )) System.out.println(entry.getKey( ) + " " +entry.getValue( ) ); API Collection EL HAMLAOUI Mahmoud 47 Documentation Javadoc EL HAMLAOUI Mahmoud 48 EL HAMLAOUI Mahmoud 13 Documentation Une documentation est un texte écrit qui accompagne un logiciel ou une bibliothèque informatique afin d’en expliquer le fonctionnement, et/ou l’utilisation. Deux approches sont envisageables : programmation littéraire : développement du code dans un texte descriptif (préconisée par Donald Knuth). documentation générée : à partir de texte descriptif en commentaires dans du code (javadoc, doxygen, docstrings, ...) EL HAMLAOUI Mahmoud 49 javadoc javadoc est un outil développé par Sun Microsystems permettant de générer automatiquement une documentation d’API en format HTML depuis les commentaires présents dans un code source en Java (plusieurs fichiers sources java). La documentation produite pour une classe est destinée aux futurs clients (programmeurs) et sous-classes de cette classe : les propriétés privées et le code des méthodes, c’est-à-dire l’implémentation, ne se trouveront pas a priori dans la documentation (mais c’est possible), la documentation doit permettre à un programmeur d’utiliser la classe, pas de faire la maintenance du code. EL HAMLAOUI Mahmoud 50 javadoc La génération de la documentation se fait, à partir des fichiers sources, en recherchant deux types d’informations pour générer la documentation : les déclarations java "pures" (le code java) pour trouver les informations "syntaxiques" à mettre dans la documentation : identificateurs des classes, héritage, propriétés déclarées publiques, identificateurs de méthodes, identificateurs des paramètres formels, … des commentaires ayant un format et un emplacement spécifiques, ajoutés par uploads/Litterature/ cours-2 1 .pdf
Documents similaires
-
14
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Jan 15, 2021
- Catégorie Literature / Litté...
- Langue French
- Taille du fichier 2.9059MB