Cours de JAVA. Quelques classes remarquables de JAVA. Emmanuel ADAM. Institut des Sciences et Techniques de Valenciennes

Dimension: px
Commencer à balayer dès la page:

Download "Cours de JAVA. Quelques classes remarquables de JAVA. Emmanuel ADAM. Institut des Sciences et Techniques de Valenciennes"

Transcription

1 Cours de JAVA Quelques classes remarquables de JAVA Emmanuel ADAM Institut des Sciences et Techniques de Valenciennes Université de Valenciennes et du Hainaut-Cambrésis source principale : «Thinking in Java (B. Eckel)» Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 1

2 Quelques classes remarquables de JAVA Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 2

3 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ée 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() met en pause le processus courant en attendant un réveil Tous les objets Java héritent donc de ces méthodes Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 3

4 La classe System Gestion du système : static PrintStream err : sortie d'erreur standard static InputStream in : entrée standard static PrintStream out : sortie standard static void arraycopy(...) : copie de tableaux static long currenttimemillis() : temps courant en millisecondes static long nanotime() : temps courant en nanoseconde static void exit(int status) : sortie de programme static void gc() : lance le ramasse-miettes static void load(string fichier) : charge le code en tant que librairie dynamique Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 4

5 La classe System Gestion des propriétés du système : static String getproperty(string key): retourne la valeur de la propriété spécifiée par la clé static Properties getproperties(): retourne les propriétés du système static String setproperty(string key, String value) : affecte une nouvelle valeur à une propriété static void setproperties(properties props) : affecte des propriétés java.version : version de l'interpréteur Java. java.home : répertoire d'installation de Java. user.home : répertoire de l'utilisateur java.class.path : valeur du classpath file.separator, path.separator, line.separator... Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 5

6 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 d accès aux caractères, de comparaisons, de recherche, d extraction, de copie, de conversion minuscules/majuscule,... Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 6

7 La classe String (2) L opérateur (+) est surchargé pour permettre la concaténation, et à la conversion implicite d objets 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. Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 7

8 La classe String (3) String permet de tronçonner une chaîne (abandon de StringTokenizer) String ch = "une chaîne à tronçonner"; String[]mots1 = ch.split(" "); String[]mots2 = ch.split("n"); String[]mots3 = ch.split("n",3); ["une";"chaîne";"à";"tronçonner"] ["u";"e chaî";"e à tro";"ço";"";"er"] ["u";"e chaî";"e à tronçonner"] Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 8

9 La classe StringBuffer A utiliser si besoin de chaînes dynamiques (modifications, concaténation, ) int taille = 30000; long tpsdebut = System.currentTimeMillis(); String ch = new String(); for(int i=0; i<taille; i++) ch += i; System.out.println(ch); long tpsfin = System.currentTimeMillis(); System.out.println("tps = "+ (tpsfin tpsdebut)); tpsdebut = System.currentTimeMillis(); StringBuffer sb = new StringBuffer(); String sep = ", "; for(int i=0; i<taille; i++) sb.append(i).append(sep); System.out.println(sb); tpsfin = System.currentTimeMillis(); System.out.println("tps = "+ (tpsfin tpsdebut)); Le gain de temps pour la création de la chaîne représentant un tableau de entiers est ici de 7 sec environ!!! par rapport au code précédent (test sur java 1.6, Pentium M 1.6 MHz) Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 9

10 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 Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 10

11 La classe Arrays Cette classe contient des méthodes statiques pour la gestion de tableaux : static int binarysearch(int []tab, int valeur) retourne l index de la valeur, -1 si introuvable static boolean equals (boolean []tab1, boolean []tab2) static void fill (double []tab, double valeur) remplit le tableau avec la valeur static void fill (char []tab, int debut, int fin, char valeur) static void sort (long []tab) static void sort (short [] tab, int debut, int fin) s appliquent à tous types de tableaux : d entiers, de réels, d objets (références seules prises en compte) Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 11

12 La classe Arrays int []tab = new int[100]; for(int i=0; i<tab.length; i++) tab[i] = (int)(math.random()*100); long tpsdebut = System.currentTimeMillis(); java.util.arrays.sort(tab); long tpsfin = System.currentTimeMillis(); 56, 82, 84, 7, 87, 82, 23, 15, 37, 0, 32, 27, 11, 77, 59, 46, 95, 54, 63, 80, 72, 78, 43, 88, 97, 65, 91, 82, 20, 69, 18, 44, 67, 91, 81, 22, 11, 36, 86, 96, 5, 36, 90, 66, 71, 50, 6, 59, 6, 23, 46, 55, 41, 35, 69, 32, 50, 25, 64, 71, 82, 16, 13, 63, 56, 65, 88, 1, 60, 76, 18, 52, 28, 27, 3, 45, 37, 87, 0, 48, 31, 32,45, 25, 31, 59, 91, 28, 83, 78, 28, 4, 33, 40, 72, 54, 48, 45, 44, 22, 0, 0, 1, 3, 4, 5, 6, 6, 7, 11, 11, 13, 15, 16, 18, 18, 20, 22, 22, 23, 23, 25, 25, 27, 27, 28, 28, 28, 31, 31, 32, 32, 32, 33, 35, 36, 36, 37, 37, 40, 41, 43, 44, 44, 45, 45, 45, 46, 46, 48, 48, 50, 50, 52, 54, 54, 55, 56, 56, 59, 59, 59, 60, 63, 63, 64, 65, 65, 66, 67, 69, 69, 71, 71, 72, 72, 76, 77, 78, 78, 80, 81, 82, 82, 82, 82, 83, 84, 86, 87, 87, 88, 88, 90, 91, 91, 91, 95, 96, 97, tri effectue en 0 millisecondes , System.out.println("tri effectue en " + (tpsfin - tpsdebut) + " millisecondes"); Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 12

13 Autre fonctions sur les tableaux static void arraycopy(object tabsource, int debutsource, Object tabdest, int debutdest, int longeur) est une méthode statique et native de la classe System à utiliser pour copier les tableaux. int []tab2 = new int[100]; System.arraycopy(tab, 0, tab2, 0, 100); Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 13

14 Vector La classe Vector est la plus utilisée. Elle permet de stocker des objets dans un ensemble de longueur variable. add (objet) permet d ajouter un objet en queue, get(index) permet de récupérer l objet positionné à l index 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, toarray() retourne un tableau d objets contenus dans le vecteur La classe ArrayList est l identique de la classe Vector, mais n est pas synchronisée, elle est donc plus rapide et à utiliser de préférence Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 14

15 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. Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 15

16 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 l objet. Une table de clés possède les méthodes : put(clé, objet) : get(clé) : containskey(clé) : containsvalue(objet) : isempty() : entre autres... Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 16

17 Quelques classes de java.util La classe Set définit un ensemble ne pouvant contenir qu un exemplaire d un objet. Cette classe dispose, entre autres, des méthodes : add(objet) qui n ajoute l objet que s il n est pas déjà présent contains(objet) ; remove(objet) ; isempty(). Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 17

18 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 d au moins un élément. Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 18

19 Quelques classes de java.util L interface Enumeration (suite) utilisée surtout pour la lecture des éléments d un vecteur : for(enumeration e=vecteur.elements();e.hasmoreelements();) System.out.println((Personne)e.nextElement()) ; (mais elle est plus longue que get(index)) int taille = vecteur.size(); for(int i = 0; i<taille;i++) System.out.println((Personne)vecteur.get(i)) ; Remarque : elements() est la méthode qui retourne une énumération à partir du vecteur. Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 19

20 Trier les éléments d une ArrayList (1/3) public static void sort (List list) de la classe Collections permet de trier une liste d objets implémentant l interface Comparable. si la classe des objets à trier n implémente pas l interface Comparable, il faut alors fournir un Comparator. Exemple de tri d Integer dans une ArrayList : java.util.arraylist al = new java.util.arraylist(); for(int i=0; i<1000; i++) al.add(new Integer((int)(Math.random()*1000))); java.util.collections.sort(al); // car une ArrayList implémente une List Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 20

21 Trier les éléments d une ArrayList (2/3) /**Définition d une classe implémentant l interface Comparable */ class Personne implements Comparable { String nom; private int nosecu; Personne(){nom = ""; nosecu = 0; Personne(String _nom, int _nosecu) {nom = _nom; nosecu = _nosecu; public String tostring() { return nom+":"+nosecu; /**retourne 1 si objet < autre, 0 si objet == autre, 1 si objet > autre*/ public int compareto(object autre) { Personne p = (Personne)autre; return (nom.comparetoignorecase(p.nom)); Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 21

22 Trier les éléments d une ArrayList (3/3) java.util.arraylist al = new java.util.arraylist(); for(int i=0; i<10; i++) al.add(new Personne("nom"+(int)(Math.random()*10), i)); String ch = ""; for(int i=0; i<al.size(); i++) ch = ch + (Personne)al.get(i) + ", "; System.out.println(ch); java.util.collections.sort(al); ch = ""; for(int i=0; i<al.size(); i++) ch = ch + (Personne)al.get(i) + ", "; System.out.println(ch); nom6:0, nom8:1, nom2:2, nom4:3, nom0:4, nom8:5, nom2:6, nom2:7, nom8:8, nom9:9, nom0:4, nom2:2, nom2:6, nom2:7, nom4:3, nom6:0, nom8:1, nom8:5, nom8:8, nom9:9, Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 22

23 Listes Génériques (depuis 1.5) Nécessité de préciser le type d'objets dans la collection But : Sécuriser le code import java.util.arraylist; ArrayList <Personne>liste = new ArrayList<Personne>(); for(int i=0; i<10; i++) liste.add(new Personne("nom"+i, i)); String ch = ""; for(personne p : liste) ch = ch + p + ", "; System.out.println(ch); Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 23

24 Méthodes Génériques (depuis 1.5) Utilisation de caractères spéciaux (wilcard) remplaçant un type inconnu void listeobjet(arraylist<?> liste) { for (Object o : liste) System.out.println(o); void <T>tabVersliste(T[]tab, ArrayList<T> liste) { for (T obj : tab) liste.add(obj); Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 24

25 Méthodes Génériques (depuis 1.5) wilcard remplaçant une sorte d'objet void listeobjet(arraylist<? extends Animal> liste) { for (Animal a : liste) a.affiche(); <T, E extends T> E getobjet(arraylist<t> liste) Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 25

26 Classe Génériques (depuis 1.5) Définition d'une classe utilisant des listes génériques : class MaClasseGen<P extends Personne,A extends Animal> { ArrayList<A> listea; ArrayList<P> listep; MaClasseGen(){ listep = new ArrayList<P>(); listea = new ArrayList<A>(); void add(p p) {listep.add(p); void add(a a) {listea.add(a); Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 26

27 Classe Génériques (depuis 1.5) Utilisation d'une classe utilisant des listes génériques : MaClasseGen<PersonneF, AnimalA> mcg = new MaClasseGen<PersonneF, AnimalA>(); mcg.add(new PersonneF("aa","a")); mcg.add(new AnimalA("aa")); mcg.add(new AnimalA("cc")); Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 27

28 Gestion d exceptions Quelques classes remarquables de JAVA Emmanuel ADAM Institut des Sciences et Techniques de Valenciennes Université de Valenciennes et du Hainaut-Cambrésis source principale : «Thinking in Java (B. Eckel)» Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 28

29 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 : Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 29

30 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 l interface Throwable Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 30

31 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 l exception s il existe. tostring, qui retourne la classe et le message sous forme de chaîne. printstacktrace, qui fait appel à tostring, mais qui en plus indique l endroit du programme où a été levée l exception. Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 31

32 Capture d une exception Pour récupérer, ou attraper, une exception :. try {. //endroit où pourrait apparaître une exception catch (type_exception_1 e1) {. // traitement de l exception de type 1 catch (type_exception_2 e2) {. // traitement de l exception de type 2 finally {. // dans tous les cas, passer par ici. Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 32

33 Exemple (1) int[] a = {1,2,3,4,5,6,7,8,9,10; int[] b = {10,9,8,7,6,5,0,3,2,1; Exception levée int []c = new int[10]; for(int i=0; i<=10; i++) { try { c[i] = a[i] / b[i]; System.out.println("c["+i+"] = " + c[i]); Exception attrapée et gérée catch(exception e) { System.out.println("division par 0..."); c[i] = 0; System.out.println("dans ce cas c["+i+"] = " + c[i]); Reprise du programme Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 33

34 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 Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 34

35 Exemple (2) int[] a = {1,2,3,4,5,6,7,8,9,10; int[] b = {10,9,8,7,6,5,0,3,2,1; Exception levée int []c = new int[10]; for(int i=0; i<=10; i++) { try { c[i] = a[i] / b[i]; System.out.println("c["+i+"] = " + c[i]); Erreur de calcul attrapée et gérée catch(arithmeticexception e) { System.out.println("division par 0..."); c[i] = 0; System.out.println("dans ce cas c["+i+"] = " + c[i]); Autres erreurs catch(exception e) { System.out.println("... erreur imprevue...\n" + e); Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 35

36 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. Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 36

37 Exemple (3) public void diviser() throws Exception{ for(int i=0; i<=10; i++) { c[i] = a[i] / b[i]; System.out.println("c[" + i + "] = " + c[i]); Exception propagée Exception levée void test() { try { diviser(); catch(arithmeticexception e) { Exception attrapée et System.out.println("division par 0..."); gérée catch(exception e) { System.out.println("... erreur imprevue...\n" + e); System.out.println("suite du prog"); Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 37

38 Définir son exception Il est possible de définir une exception en la faisant dériver de la classe Exception : class MonExceptionDivision extends Exception { public String tostring() { return "Problème de division"; Le mot clé throw permet de lancer son exception. Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 38

39 Exemple (4) public void diviser() throws Exception{ Exception propagée for(int i=0; i<=10; i++) { if (b[i] == 0) throw new MonExceptionDivision(); c[i] = a[i] / b[i]; Exception lancée System.out.println("c[" + i + "] = " + c[i]); void test() { try { diviser(); catch(exception e) { System.out.println("... erreur : " + e); System.out.println("suite du prog"); Exception attrapée et gérée Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 39

40 Les Entrées-Sorties les package java.io.*/ java.nio.* Emmanuel ADAM Institut des Sciences et Techniques de Valenciennes Université de Valenciennes et du Hainaut-Cambrésis source principale : «Thinking in Java (B. Eckel)» api java Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 40

41 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 standard, 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 Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 41

42 Exemple de flux d entrée standard import java.io.*; class Lire { public static void main(string[] argv) { int b, nb = 0; try { while((b = System.in.read())!= 13) // 13 = code retour chariot { nb++; System.out.println(b); // affiche les codes ascii des caractères catch(ioexception e) { System.out.println(e); Lecture d un caractère au clavier Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 42

43 Gestion de fichiers La classe File permet d accé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(). Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 43

44 Exemple d utilisation de File import java.io.*; public class ChercheFichier { public static void main(string args[]) { String nomfichier = "ChercheFichier.java" ; File f = new File(nomFichier); if (f.exists()) { String nomrep = f.getabsolutepath(); // retourne le répertoire et le fichier nomrep = nomrep.substring(0, nomrep.lastindexof("\\")); System.out.println( nomfichier + " est dans le repertoire " + nomrep); System.out.println(" droits en lecture, ecriture : " + f.canread() + "," + f.canwrite() ); Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 44

45 Flux d entrées InputStream dont dérivent les classes ByteArrayInputStream, FileInputStream, FilterInputStream, ObjectInputStream, PipedInputStream, SequenceInputStream et StringBufferInputStream Reader (orientée caractères) dont dérivent les classes BufferedReader, LineNumberReader, CharArrayReader, FilterReader, PushbackReader, InputStreamReader, FileReader, PipedReader, StringReader Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 45

46 Flux de sorties OutputStream dont dérivent les classes ByteArrayOutputStream, FileOutputStream, FilterOutputStream, ObjectOutputStream, PipedOutputStream Writer (orientée caractères) dont dérivent les classes BufferedWriter, CharArrayWriter, FilterWriter, OutputStreamWriter, PipedWriter, PrintWriter, StringWriter Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 46

47 Ecriture directe dans un fichier FileOutputStream Exemple d écriture dans un fichier : public static void main(string args[]) { File f = new File("C:\\donnees", "data.txt"); try { FileOutputStream fos = new FileOutputStream(f); String s = new String (" Coucou "); Transformation d une chaîne en int longueur = s.length(); tableau de bytes byte[] buffer = s.getbytes(); for(int i = 0; i < longueur; i++) fos.write(buffer[i]); fos.close(); catch (Exception e) { Ecriture d un tableau de bytes Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 47

48 Lecture directe d un fichier : FileInputStream public static void main(string args[]) { File fichier = new File("C:\\donnees", "data.txt"); if (fichier.exists()) { String chaine = ""; Lecture d un tableau de bytes FileInputStream fis = null; byte[] b = new byte[1024]; try { fis = new FileInputStream(fichier); catch (FileNotFoundException fnfe) {System.out.println(fnfe); try { int i =fis.read(b); catch (IOException ioe) {System.out.println(ioe); System.out.println(new String(b)); try { fis.close(); catch (IOException ioclose) {System.out.println(ioclose); Transformation en chaîne Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 48

49 Ecriture filtrée dans un fichier DataOutputStream Ecriture de données typées, (chaînes de caractères à éviter depuis jdk1.1) public static void main(string args[]) { File fichier = new File("data.bin"); try { FileOutputStream fos = new FileOutputStream(fichier); DataOutputStream dos = new DataOutputStream(fos); dos.writeboolean(true); dos.writeint(17); dos.writedouble(17.89); dos.writeboolean(false); dos.writeint(16); dos.writedouble(16.84); dos.close(); fos.close(); catch (Exception e) { Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 49

50 Lecture filtrée d un fichier DataInputStream Lecture de données typées, (sauf des chaînes de caractères depuis java 1.1) File fichier = new File("data.bin"); if(fichier.exists()) { try { FileInputStream fis = new FileInputStream(fichier); DataInputStream dis = new DataInputStream(fis); System.out.println(dis.readBoolean() + "," + dis.readint() + "," + dis.readdouble()); System.out.println(dis.readBoolean() + "," + dis.readint() + "," + dis.readdouble()); dis.close(); fis.close(); catch (Exception e) { Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 50

51 Lecture en séquence de fichiers SequenceInputStream SequenceInputStream(Enumeration e) : permet de lire les InputStream de l énumération en séquence SequenceInputStream(InputStream s1, InputStream s2) : permet de lire deux InputStream en séquence public static void main(string args[]) { File fichier1 = new File("data1.txt"); File fichier2 = new File("data2.txt"); if(fichier1.exists() && fichier2.exists()) { try { FileInputStream fis1 = new FileInputStream(fichier1); FileInputStream fis2 = new FileInputStream(fichier2); SequenceInputStream sis = new SequenceInputStream(fis1, fis2); String chaine = ""; int caractere = 0; while ((caractere = sis.read())!=-1) System.out.println(chaine); sis.close(); fis1.close(); fis2.close(); catch (Exception e) { chaine += (char)caractere; Affiche le contenu des deux fichiers à l écran Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 51

52 Flots de caractères 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 <-> FileWriter <-> FileInputStream FileOutputStream Echange facile de données avec accents (unicode) Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 52

53 Entrée de flots de caractères Flot de caractères Reader BufferedReader LineNumberReader CharArrayReader InputStreamReader FileReader FilterReader PipedReader StringReader Description Classe Abstraite pour flot d entrée (InputStream) Bufférise les entrées ligne par ligne Garde trace du nb de lignes lues Lit un tableau de caractères Transforme un flot de byte et car. Unicode Transforme des bytes lus depuis un fichier en car. Classe abstraite pour filtrer les caractères d entrées Lecture depuis PipeWriter Lit depuis une chaîne de caractères Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 53

54 Sortie de flots de caractères Flot de caractères Description Writer Classe Abstraite pour flot de sortie (OutputStream) BufferedWriter CharArrayWriter InputStreamWriter Bufférise les sorties ligne par ligne Ecrit un tableau de caractères Transforme 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 Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 54

55 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) { Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 55

56 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(); // retourne null si fin de fichier br.close(); fr.close(); catch (Exception e) { System.out.println(chaine); Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 56

57 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(); br.close(); isr.close(); catch (Exception e) { System.out.println(chaine); Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 57

58 Accès en lecture/écriture RandomAccessFile(String name, String mode) : ouvre le fichier selon le mode donné : r lecture seule; rw lecture/écriture; public static void main(string args[]) { File fichier = new File("ChercheFichier.java"); if(fichier.exists()) { try { RandomAccessFile raf = new RandomAccessFile(fichier, "rw"); long longueur = raf.length(); raf.seek(longueur); raf.writebytes("// fin du fichier\n"); raf.close(); catch (Exception e) { Se déplacer dans le fichier Ajout d une chaîne (en fin de fichier ici) Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 58

59 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 Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 59

60 Sérialisation (2) Les objets transients (transitoires,éphémères) Ce sont des objets qui ne peuvent pas être sérialisés (processus, flux de données) Si ils sont définis en tant qu attributs dans un objet sérialisé, il faut indiquer qu ils sont transitoires idem si on ne veut pas que certains attributs d un objet soient sérialisés Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 60

61 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;... Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 61

62 Sauvegarde d un objet public static void main(string args[]) { Personne p1 = new Personne("p1", 25); Personne p2 = new Personne("p2", 50); File f = new File("C:\\Progjava\\fichier", "Essai.obj"); try { FileOutputStream fos = new FileOutputStream(f); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeobject(p1); oos.writeobject(p2); oos.close(); fos.close(); catch (Exception e) { Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 62

63 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); Personne p1 = (Personne) ois.readobject(); Personne p2 = (Personne) ois.readobject(); ois.close(); fis.close(); catch (Exception e) { Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 63

64 Les canaux les package java.nio.channels.* Les canaux peuvent être bidirectionnel ; apporte la sécurité par la notion de verrou ; gestion de flux en mémoire La classe Channels permet la conversion des flux d'entrée/sortie en canaux de lecture/écriture, des canaux de lecture/écriture en flux d'entrée/sortie, Les canaux FileChannel sont spécialisés dans la gestion des fichiers : Lecture, écriture, positionnement, troncature et blocage par verrou Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 64

65 Les canaux les package java.nio.channels.* Un objet Pipe est constitué d'un canal en lecture et d'un canal en écriture, utilisables Les canaux ServerSocketChannel et SocketChannel définissent les canaux par sockets (serveur et client) Récupération d'un canal à partir d'un flux par getchannel() FileInputStream fis = new FileInputStream(new File("chemin")); FileChannel fc = fis.getchannel(); Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 65

66 Les canaux les package java.nio.channels.* Ouverture d'un canal à sa création (isopen()) en lecture, écriture, lecture.écriture Plusieurs méthodes de lectures/écritures par les interfaces ReadableByteChannel et WritableByteChannel Possibilité de : fermer un canal lecture/écriture à une position donnée, forçage de l'écriture sur le support physique, protection par verrou d'une zone du canal Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 66

67 Les tampons les package java.nio.* Utilisation de tampon ByteBuffer, IntBuffer,... pour des données binaires Tampon = séquence finie, linéaire, de primitives Principales propriétés = capacité, limite, position, marque Capacité = nb d'éléments, fixe Limite = index du premier élément non modifiable/lisible Position = index du prochain élément modifiable/lisible Marque = index de retour Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 67

68 Les tampons les package java.nio.* clear() : limite <-- 0 et position <-- 0 flip() : limite <-- position puis position <-- 0 rewind() : position <-- 0 reset() : position <-- marque Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 68

69 Copie de fichier par canaux les package java.nio.* void copiefichier(file ficsource, File ficdestination, boolean rapide){ try { FileInputStream fissource = new FileInputStream(ficSource); FileOutputStream fosdestination = new FileOutputStream(ficDestination); FileChannel canalsource = fissource.getchannel(); FileChannel canaldestination = fosdestination.getchannel(); ByteBuffer tampon = null; if(rapide) tampon = ByteBuffer.allocateDirect(1024); else tampon = ByteBuffer.allocate(1024); int nb_octets = 0; while ((nb_octets = canalsource.read(tampon)) > -1) { tampon.flip(); canaldestination.write(tampon); tampon.clear(); catch(ioexception e) { e.printstacktrace(); Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 69

70 Les tampons les package java.nio.* Tampon peut être direct, alors : la JVM tente d'utiliser des opérations natives sur le buffer Évite de copier en dur à chaque opération Coût allocation élevé à réserver pour large tampon utilisé sur une longue durée Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 70

71 Les tampons les package java.nio.* Transfert du fichier en mémoire : MappedByteBuffer File fichier = new File("c:\\source.txt"); RandomAccessFile raf= new RandomAccessFile(fichier, "rw"); FileChannel canal= raf.getchannel(); MappedByteBuffer tampon= canal.map(filechannel.mapmode.read_write, 0, fc.size()); Impossibilité pour un processus d'accéder à un fichier mappé => penser à clore le canal load() charge le tampon en mémoire isload() vérifie son chargement force() provoque l'écriture sur le fichier réel Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 71

72 Vérouillage de canaux les package java.nio.* Possibilité de mise en place d'un verrouillage d'une partie ou de la totalité d'un fichier. (classe FileLock) Objectif : coordonner l'accès à un fichier Un verrou peut être : Exclusif : seul le code le posant peut agir sur le canal Partagé : aucun autre code ne peut poser de verrous exclusifs boolean acces_partage = false; FileLock verrou = canal.lock(debut, taille, acces_partage); //ou FileLock verrou = canal.lock(); Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 72

73 Vérouillage de canaux les package java.nio.* Un verrou sur un canal bloque un autre programme appelant => demande d'obtention du verrou : FileLock monverrou = canal.trylock(); Possibilité de verrou sur une partie Libération d'un verrou : verrou.release(); Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 73

74 Canaux de socket les package java.nio.* Deux classes : ServerSocketChannel et SocketChannel Un ServerSocketChannel attend des connections et crée des SocketChannel. Un socketchannel est associé à une socket getchannel() Un socketchannel peut être bloquant ou non. ConfigureBlocking(true) ; isblocking(). Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 74

75 Canaux de socket les package java.nio.* ServerSocketChannel Créé par ServerSocketChannel.open() Lié à un ServerSocket récupérable par socket() Relier le socket serveur à un port : bind(new InetSocketAddress(noPort)) Le ServerSocketChannel est alors lié à ce port Peut accepter plusieurs connections Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 75

76 Canaux de socket les package java.nio.* SocketChannel Créé par SocketChannel.open() Connection au serveur par connect(socketaddress a) non bloquant, connect() accepté de suite bloquant, la connection tourne en fond Vérification de la demande de connection : isconnectionpending() Vérification du résultat de la connection : isconnected() Demande la fin de la connection : finishconnect() Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 76

77 Encodage/décodage les package java.nio.charset.* Le décodage : processus de transformation d'un bloc d'octets (bytes) en une chaine de caractères, selon un jeu de caractères (charset). L'encodage : processus de tranformation d'une séquence de caractères en un bloc de données selon un jeu de caractères. Liste de jeux de caractères disponibles (ISO , UTF-8,...): Charset.availableCharsets() Récupérer un CharSet : Charset.forName("ISO "); Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 77

78 Encodage/décodage les package java.nio.charset.* Obtenir un décodeur et encodeur d'un CharSet : CharsetDecoder decodeur = lecharset.newdecoder(); CharsetEncoder encodeur = lecharset.newencoder(); Un décodeur décode un tampon d'octets en un tampon de caractères ByteBuffer tampon = ByteBuffer.allocate(1024);... CharBuffer cb = decoder.decode(tampon); Un encodeur encode un tampon de caractères, ou une chaîne, d'octets en un tampon d'octets String chaine = "Une chaîne de caractères..."; CharBuffer cb = CharBuffer.wrap(chaine); ByteBuffer bb1 = encoder.encode(cb); ByteBuffer bb2 = encoder.encode("une chaîne"); Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 78

79 Encodage/décodage les package java.nio.charset.* Gestion des erreurs (encodage et décodage) : D'entrée : onmalformedinput De caractère : onunmappablecharacter Possibilité de : Ignorer l'erreur (IGNORE) Remplacer l'entrée par une valeur de remplacement (REPLACE) Reporter (REPORT)l'erreur par la levée d'exception ou par un objet CoderResult ByteBuffer bb = lecharset.newdecoder().onmalformedinput(codingerroraction.replace).onunmappablecharacter(codingerroraction.replace).decode(bb); Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 79

80 Encodage/décodage les package java.nio.charset.* Récupérer les erreurs : CodingErrorAction actionentreeincorrecte = lecharset.malformedinputaction(); CodingErrorAction actioncaractereinconnu = lecharset.unmappablecharacteraction(); Par la déclaration d'un CoderResult : Supposons un mauvais décodage : CharBuffer sortie = decodeur.decode(entree); déclenche une exception CoderResult erreur = decodeur.decode(entree, sortie, false); Retourne l'objet erreur iserror(), ismalformed(), isoverflow(), isunderflow(), isunmappable() Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 80

81 Sélecteur de canaux les package java.nio.* Selector : utilisés pour des opérations d'entrée/sortie asynchrones,applications client/serveur. multiplexeur d'objets SelectableChannel. SelectionKey est un jeton de SelectableChannel auprès de Selector Création d'un sélecteur : Selector monselecteur = Selector.open(); Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 81

82 Sélecteur de canaux les package java.nio.* Client A Client B Client C SocketChannel SocketChannel SocketChannel S E L E C T E U R clés Serveur Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 82

83 Sélecteur de canaux les package java.nio.* Le socket Serveur peut activer un sélecteur en cas : De connection d'un client (OP_ACCEPT) De connection (OP_CONNECT),de lecture (OP_READ), d'écriture (OP_WRITE) Enregistrement auprès d'un socket serveur par le sélecteur : ServerSocketChannel serveur = ServerSocketChannel.open();... SelectionKey cle = serveur.register(monselecteur, SelectionKey.OP_ACCEPT); Le sélecteur enregistre les canaux provoquant l'opération associée int nbcles = monselecteur.select(); Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 83

84 Sélecteur de canaux les package java.nio.* Récupération d'une clé : Set lescles = selecteur.selectedkeys();... Iterator it = lescles.iterator(); while(it.hasnext()){ SelectionKey unecle = (SelectionKey)it.next(); //... Récupérer un événement associé à une clé : unecle.isacceptable, isconnectable(), isreadable() et iswritable(). Lancer l'événement : SocketChannel canal = canal.accept(). Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 84

85 Sélecteur de canaux les package java.nio.* Redéfinir l'option du canal dans le sélecteur (pour lire les données): SelectionKey cleserveur = canal.register(selecteur, SelectionKey.OP_READ); La connexion est établie, les sockets (client et serveur) peuvent communiquer entre eux. Le canal référencé en lecture est sélectionné par le sélecteur. Pour désinscrire un canal et le supprimer du sélecteur : canal.keyfor(selecteur).cancel(); canal.close(); Emmanuel ADAM Université de Valenciennes et du Hainaut Cambrésis Cours JAVA n 2 p: 85

Entrées / Sorties. Entrées / Sorties. Entrées/Sorties. System.out. Fonctionnement par flots (stream) Karima Boudaoud IUT- R&T. Terrain connu.

Entrées / Sorties. Entrées / Sorties. Entrées/Sorties. System.out. Fonctionnement par flots (stream) Karima Boudaoud IUT- R&T. Terrain connu. Entrées / Sorties Entrées/Sorties Fonctionnement par flots (stream) Karima Boudaoud IUT- R&T Karima Boudaoud IUT GTR-Sophia Antipolis 2 Terrain connu Entrées / Sorties la classe java.lang.system cette

Plus en détail

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour LMI 2 Programmation Orientée Objet POO - Cours 9 Said Jabbour jabbour@cril.univ-artois.fr www.cril.univ-artois.fr/~jabbour CRIL UMR CNRS 8188 Faculté des Sciences - Univ. Artois Février 2011 Les collections

Plus en détail

Programmation Orientée Objet - Licence TIS CM8/9. Rappel sur la séance précédente. Lancelot Pecquet Lancelot.Pecquet@math.univ-poitiers.

Programmation Orientée Objet - Licence TIS CM8/9. Rappel sur la séance précédente. Lancelot Pecquet Lancelot.Pecquet@math.univ-poitiers. Programmation Orientée Objet - Licence TIS CM8/9 Lancelot Pecquet Lancelot.Pecquet@math.univ-poitiers.fr Poitiers, le 13/03/2006 Rappel sur la séance précédente La fois précédente, nous avons vu : 1 UML

Plus en détail

Programmation Par Objets

Programmation Par Objets Programmation Par Objets Structures de données package java.util B. Carré Polytech Lille 1 Tableaux et structures de données Tableaux «Objets» taille fixe type des éléments : primitif (homogène) ou objets

Plus en détail

Flux de données Lecture/Ecriture Fichiers

Flux de données Lecture/Ecriture Fichiers Flux de données Lecture/Ecriture Fichiers 1 Un flux de données est un objet qui représente une suite d octets d un programme pour une certaine destination ou issus d une source pour un programme flux d

Plus en détail

Chapitre 10. Les interfaces Comparable et Comparator 1

Chapitre 10. Les interfaces Comparable et Comparator 1 Chapitre 10: Les interfaces Comparable et Comparator 1/5 Chapitre 10 Les interfaces Comparable et Comparator 1 1 Ce chapitre a été extrait du document "Objets, Algorithmes, Patterns" de [René Lalement],

Plus en détail

Pour plus de détails concernant le protocole TCP conférez vous à la présentation des protocoles Internet enseignée pendant.

Pour plus de détails concernant le protocole TCP conférez vous à la présentation des protocoles Internet enseignée pendant. Chapitre 7 Le mode de communication en connexion est, a priori, supporté par le protocole TCP. Ce protocole fournit une communication fiable; les données sont transmises comme chaînes d octets. Avant de

Plus en détail

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile Dans ce TP, vous apprendrez à définir le type abstrait Pile, à le programmer en Java à l aide d une interface

Plus en détail

Cours 14 Les fichiers

Cours 14 Les fichiers Cours 14 Les fichiers F. Gayral 1 Fichier : définition /media/travaux/documents/fgenseignement/java1/courstpsfgfc/14-fichiers/voirtypefichiers Fichier = ensemble d informations codées et stockées sur une

Plus en détail

PROGRAMMATION PAR OBJETS

PROGRAMMATION PAR OBJETS PROGRAMMATION PAR OBJETS Java Environnement et constructions spécifiques Walter Rudametkin Maître de Conférences Bureau F011 Walter.Rudametkin@polytech-lille.fr B. Carré Polytech Lille 2 Java (Sun 1995)

Plus en détail

Une introduction à Java

Une introduction à Java Une introduction à Java IFT 287 (Semaine 1) UNIVERSITÉ DE SHERBROOKE 1 Java - Historique Développé par Sun Microsystems en 1994 Inventeur James Gosling (canadien!) Objectif langage sûr (fortement typé)

Plus en détail

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION) CLASSE RACINE Object ancêtre de toutes les classes RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION) définit donc des méthodes héritées par toutes

Plus en détail

Threads. Threads. USTL http://www.lifl.fr/ routier 1

Threads. Threads. USTL http://www.lifl.fr/ routier 1 Threads USTL http://www.lifl.fr/ routier 1 Rappels - Définitions un Process est un programme qui tourne et dispose de ses propres ressources mémoire. OS multi-tâche plusieurs process en concurrence un

Plus en détail

Développement Logiciel

Développement Logiciel Développement Logiciel Éxamen session 1-2012-2013 (Vendedi 25 mai, 9h-11h) Seuls les documents liés directement au cours sont autorisés (comme dit sur le site) : sujets de TD, notes de cours, notes personnelles

Plus en détail

Java Licence Professionnelle 2009-2010. Cours 7 : Classes et méthodes abstraites

Java Licence Professionnelle 2009-2010. Cours 7 : Classes et méthodes abstraites Java Licence Professionnelle 2009-2010 Cours 7 : Classes et méthodes abstraites 1 Java Classes et méthodes abstraites - Le mécanisme des classes abstraites permet de définir des comportements (méthodes)

Plus en détail

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre 2009. Enrica.Duchi@liafa.jussieu.fr

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre 2009. Enrica.Duchi@liafa.jussieu.fr . Cours intensif Java 1er cours: de C à Java Septembre 2009 Enrica DUCHI LIAFA, Paris 7 Enrica.Duchi@liafa.jussieu.fr LANGAGES DE PROGRAMMATION Pour exécuter un algorithme sur un ordinateur il faut le

Plus en détail

Programmation Réseau. Sécurité Java. Jean-Baptiste.Yunes@univ-paris-diderot.fr. UFR Informatique 2012-2013. jeudi 4 avril 13

Programmation Réseau. Sécurité Java. Jean-Baptiste.Yunes@univ-paris-diderot.fr. UFR Informatique 2012-2013. jeudi 4 avril 13 Programmation Réseau Sécurité Java Jean-Baptiste.Yunes@univ-paris-diderot.fr UFR Informatique 2012-2013 Java Sécurité? différentes sécurités disponibles et contrôlables intégrité contrôle d accès signature/authentification/cryptographie

Plus en détail

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr)

Programmer en JAVA. par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Programmer en JAVA par Tama (tama@via.ecp.fr( tama@via.ecp.fr) Plan 1. Présentation de Java 2. Les bases du langage 3. Concepts avancés 4. Documentation 5. Index des mots-clés 6. Les erreurs fréquentes

Plus en détail

Chapitre V. Les classes : Object, Vector, etc.

Chapitre V. Les classes : Object, Vector, etc. Chapitre V Les classes de base Les classes : Object, Vector, etc. Plan La classe Object Les collections La classe ArrayList La classe Vector Les classes Wrappers Les classes String et StringBuffer La classe

Plus en détail

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars 2014. http://homepages.laas.fr/matthieu/cours/java/java.pdf Introduction à Java Matthieu Herrb CNRS-LAAS http://homepages.laas.fr/matthieu/cours/java/java.pdf Mars 2014 Plan 1 Concepts 2 Éléments du langage 3 Classes et objets 4 Packages 2/28 Histoire et motivations

Plus en détail

Facultés Universitaires Notre-Dame de la Paix. Conception et Programmation Orientées- Object

Facultés Universitaires Notre-Dame de la Paix. Conception et Programmation Orientées- Object Facultés Universitaires Notre-Dame de la Paix Conception et Programmation Orientées- Object 2008-2009 RÉSUMÉ PRATIQUE... 4 CLASSE OBJET... 4 NOTION D HÉRITAGE... 4 LE POLYMORPHISME... 5 LES CLASSES ABSTRAITES...

Plus en détail

Introduction. Les méthodes. Les méthodes. Identité et égalité. Identité et égalité. La copie d'objets. Identité et égalité.

Introduction. Les méthodes. Les méthodes. Identité et égalité. Identité et égalité. La copie d'objets. Identité et égalité. Introduction La classe object Tous les objets Java héritent de la classe java.lang.object. Elle garantit que tout objet Java contient quelques méthodes fondamentales duplication comparaison Chaque classe

Plus en détail

Auto-évaluation Programmation en Java

Auto-évaluation Programmation en Java Auto-évaluation Programmation en Java Document: f0883test.fm 22/01/2013 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INTRODUCTION AUTO-ÉVALUATION PROGRAMMATION EN

Plus en détail

Bases du langage. Historique Applications et applets Éléments de base du langage Classes et objets Les exceptions

Bases du langage. Historique Applications et applets Éléments de base du langage Classes et objets Les exceptions Langage JAVA Bases du langage Opérations sur les fichiers Réseau Multi-tâche Logiciel: interfaces... Gestion des périphériques (méthodes natives) Accès aux bases de données Bases du langage Historique

Plus en détail

Package Java.util Classe générique

Package Java.util Classe générique Package Java.util Classe générique 1 Classe Vector La taille est dynamique: dès qu un tableau vectoriel est plein, sa taille est doublée, triplée, etc. automatiquement Les cases sont de type Object add(object

Plus en détail

as Architecture des Systèmes d Information

as Architecture des Systèmes d Information Plan Plan Programmation - Introduction - Nicolas Malandain March 14, 2005 Introduction à Java 1 Introduction Présentation Caractéristiques Le langage Java 2 Types et Variables Types simples Types complexes

Plus en détail

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère L'héritage et le polymorphisme en Java Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère En java, toutes les classes sont dérivée de la

Plus en détail

Gestion distribuée (par sockets) de banque en Java

Gestion distribuée (par sockets) de banque en Java Gestion distribuée (par sockets) de banque en Java Université Paris Sud Rappel sur la solution locale de gestion simple de banque L objet de cet exercice était de créer une application java qui implante

Plus en détail

Dis papa, c est quoi un bus logiciel réparti?

Dis papa, c est quoi un bus logiciel réparti? Dis papa, c est quoi un bus logiciel réparti? Raphael.Marvie@lifl.fr LIFL IRCICA Equipe GOAL Octobre 2006 10. Des sockets aux bus logiciels répartis 1 0. Une application répartie 2 Objectif Découvrir la

Plus en détail

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ; CNAM NFP121 TP 10 19/11/2013 (Séance 5) Objectif Manipuler les exceptions ; 1 Entrées/sorties Exercice 1 : Lire un entier à partir du clavier Ajouter une méthode readint(string message) dans la classe

Plus en détail

Communication inter-processus (IPC) : tubes & sockets. exemples en C et en Java. F. Butelle

Communication inter-processus (IPC) : tubes & sockets. exemples en C et en Java. F. Butelle F. Butelle, E. Viennet, Système GTR2 IUT Paris 3 Communication inter-processus (IPC) : tubes & sockets exemples en C et en Java F. Butelle F. Butelle, E. Viennet, Système GTR2 IUT Paris 3 Java : implémentation

Plus en détail

Synchro et Threads Java TM

Synchro et Threads Java TM Synchro et Threads Java TM NICOD JEAN-MARC Master 2 Informatique Université de Franche-Comté UFR des Sciences et Techniques septembre 2008 NICOD JEAN-MARC Synchro et Threads avec Java TM 1 / 32 Sommaire

Plus en détail

Introduction : les processus. Introduction : les threads. Plan

Introduction : les processus. Introduction : les threads. Plan IN328 Programmation distribuée avec Java et J2EE 2 - Threads en Java Introduction : les processus Un processus est un ensemble d instructions à exécuter, un espace mémoire réservé et éventuellement d autres

Plus en détail

Java 1.5 : principales nouveautés

Java 1.5 : principales nouveautés Cours 6 - TEP - UPMC - 2008/2009 p. 1/34 Java 1.5 : principales nouveautés classes paramétrées : generics encapsulation des valeurs de types primitifs : auto[un]boxing itération sur les boucles types énumérés

Plus en détail

Un ordonnanceur stupide

Un ordonnanceur stupide Un ordonnanceur simple Université Paris Sud L objet des exercices qui suivent est de créer un ordonanceur implantant l algorithme du tourniquet ( round-robin scheduler ). La technique utilisée pour élire

Plus en détail

JAVA. Introduction à la programmation objet avec java 1/4. Nadir BOUSSOUKAIA

JAVA. Introduction à la programmation objet avec java 1/4. Nadir BOUSSOUKAIA JAVA Introduction à la programmation objet avec java 1/4 Nadir BOUSSOUKAIA v1.04 SOMMAIRE Caractéristiques de java (40mn) Eléments du langage (40mn) Les core API java (20mn) 2 Partie 1 Caractéristiques

Plus en détail

Utilisation d objets : String et ArrayList

Utilisation d objets : String et ArrayList Chapitre 6 Utilisation d objets : String et ArrayList Dans ce chapitre, nous allons aborder l utilisation d objets de deux classes prédéfinies de Java d usage très courant. La première, nous l utilisons

Plus en détail

Remote Method Invocation Les classes implémentant Serializable

Remote Method Invocation Les classes implémentant Serializable Parallélisme Architecture Eric Goubault Commissariat à l Energie Atomique Saclay Classe qui implémente la méthode distante (serveur): - dont les méthodes renvoient un objet serializable - ou plus généralement

Plus en détail

INITIATION AU LANGAGE JAVA

INITIATION AU LANGAGE JAVA INITIATION AU LANGAGE JAVA I. Présentation 1.1 Historique : Au début des années 90, Sun travaillait sur un projet visant à concevoir des logiciels simples et performants exécutés dans des PDA (Personnal

Plus en détail

Java Licence Professionnelle CISII, 2009-2010. Cours 2 : Classes et Objets

Java Licence Professionnelle CISII, 2009-2010. Cours 2 : Classes et Objets Licence Professionnelle CISII, 2009-2010 Cours 2 : Classes et Objets 1 Classes et Objets Objectifs des LOO : - Manipuler des objets - Découper les programmes suivant les types des objets manipulés - Regrouper

Plus en détail

Initiation à la programmation orientée-objet avec le langage Java

Initiation à la programmation orientée-objet avec le langage Java Initiation à la programmation orientée-objet avec le langage Java Pôle Informatique 2013-2014 158 cours Fauriel 42023 Saint-Étienne Cedex 02 Gauthier Picard gauthier.picard@emse.fr Institut Henri Fayol,

Plus en détail

Généralités sur le Langage Java et éléments syntaxiques.

Généralités sur le Langage Java et éléments syntaxiques. Généralités sur le Langage Java et éléments syntaxiques. Généralités sur le Langage Java et éléments syntaxiques....1 Introduction...1 Genéralité sur le langage Java....1 Syntaxe de base du Langage...

Plus en détail

Remote Method Invocation (RMI)

Remote Method Invocation (RMI) Remote Method Invocation (RMI) TP Réseau Université Paul Sabatier Master Informatique 1 ère Année Année 2006/2007 Plan Objectifs et Inconvénients de RMI Fonctionnement Définitions Architecture et principe

Plus en détail

P r ob lé m a t iq u e d e la g é n é r icit é. Pr in cip e d e la g é n é r icit é e n Ja v a ( 1 /3 )

P r ob lé m a t iq u e d e la g é n é r icit é. Pr in cip e d e la g é n é r icit é e n Ja v a ( 1 /3 ) P r ob lé m a t iq u e d e la g é n é r icit é les versions de Java antérieures à 1.5 permettaient de créer des classes de structures contenant n'importe quels types d'objet : les collections (classes

Plus en détail

RMI le langage Java XII-1 JMF

RMI le langage Java XII-1 JMF Remote Method Invocation (RMI) XII-1 Introduction RMI est un ensemble de classes permettant de manipuler des objets sur des machines distantes (objets distants) de manière similaire aux objets sur la machine

Plus en détail

Programmation par les Objets en Java

Programmation par les Objets en Java Programmation par les Objets en Java Najib TOUNSI Les classes en Java (TD 3) I. Notion de classe I.1 Classe, champs, méthodes, instanciation, this, private vs. public. Créer une classe Point (coordonnée

Plus en détail

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants. RMI Remote Method Invocation: permet d'invoquer des méthodes d'objets distants. Méthode proche de RPC. Outils et classes qui rendent l'implantation d'appels de méthodes d'objets distants aussi simples

Plus en détail

et se trouve popularisé rapidement pour ses possibilités de développement liés au Web. Les

et se trouve popularisé rapidement pour ses possibilités de développement liés au Web. Les Chapitre 3 Java, langage de développement objet 3.1 Présentation de Java 3.1.1 Objectifs Le langage Java a été développé afin de pouvoir générer des applications qui soient indépendantes des machines et

Plus en détail

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T> Page 1 sur 5 TP3 Lectures préalables : l Java_II l tutorial Interfaces Thèmes du TP : l la classe Object l Vector l Stack Une pile d'objects Les éléments de la classe Pile sont maintenant des instances

Plus en détail

Java Licence Professionnelle CISII, 2009-10

Java Licence Professionnelle CISII, 2009-10 Java Licence Professionnelle CISII, 2009-10 Cours 4 : Programmation structurée (c) http://www.loria.fr/~tabbone/cours.html 1 Principe - Les méthodes sont structurées en blocs par les structures de la programmation

Plus en détail

Plan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7

Plan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7 Université Lumière Lyon 2 Faculté de Sciences Economiques et Gestion KHARKIV National University of Economic Introduction au Langage Java Master Informatique 1 ère année Julien Velcin http://mediamining.univ-lyon2.fr/velcin

Plus en détail

Langage à objets : JAVA (1)

Langage à objets : JAVA (1) DEUST Systèmes d information et Réseaux, Gestion et réalisation 1 ère année Langage à objets : JAVA (1) 2013-2014 1 INTRODUCTION... 3 Langages compilés et interprétés... 3 Java, compilé et interprété...

Plus en détail

TD3: tableaux avancées, première classe et chaînes

TD3: tableaux avancées, première classe et chaînes TD3: tableaux avancées, première classe et chaînes de caractères 1 Lestableaux 1.1 Élémentsthéoriques Déclaration des tableaux Pour la déclaration des tableaux, deux notations sont possibles. La première

Plus en détail

Programmation Objet 2

Programmation Objet 2 Programmation Objet 2 2éme partie Didier FERMENT http://www.u-picardie.fr/ferment Université de Picardie Jules Verne 2013-14 Après avoir étudié : Nous allons aborder : 4 techniques Les exceptions Les types

Plus en détail

Introduction au langage de programmation Java

Introduction au langage de programmation Java Introduction au langage de programmation Java Christian Bac, Denis Conan CSC 4002 Octobre 2014 Revision : 996 Introduction au langage de programmation Java Sommaire du cours 1 Introduction à Java.............................................................

Plus en détail

Calcul Parallèle. Cours 5 - JAVA RMI

Calcul Parallèle. Cours 5 - JAVA RMI Calcul Parallèle Cours 5 - JAVA RMI Eric Goubault Commissariat à l Energie Atomique & Chaire Ecole Polytechnique/Thalès Saclay Le 28 février 2012 Eric Goubault 1 28 février 2012 Remote Method Invocation

Plus en détail

TP1 : Initiation à Java et Eclipse

TP1 : Initiation à Java et Eclipse TP1 : Initiation à Java et Eclipse 1 TP1 : Initiation à Java et Eclipse Systèmes d Exploitation Avancés I. Objectifs du TP Ce TP est une introduction au langage Java. Il vous permettra de comprendre les

Plus en détail

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets. Encapsulation L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets. La visibilité dépend des membres : certains membres peuvent être visibles et d'autres

Plus en détail

Programmation Internet en Java

Programmation Internet en Java Chapitre 8 Programmation Internet en Java Vous avez déjà utilisé Internet, le plus connu des inter-réseaux mondiaux d ordinateurs et quelques-uns de ses services, en particulier le web et le courrier électronique.

Plus en détail

Projet gestion d'objets dupliqués

Projet gestion d'objets dupliqués Projet gestion d'objets dupliqués Daniel Hagimont Daniel.Hagimont@enseeiht.fr 1 Projet Service de gestion d'objets dupliqués Mise en cohérence lors de la prise d'un verrou sur un objet Pas de verrous imbriqués

Plus en détail

Exercices sur les interfaces

Exercices sur les interfaces Exercices sur les interfaces Fabrice Rossi 18 octobre 1999 1 Le type Object 1.1 Manipulations élémentaires Exercice 1.1 : Indiquer l affichage produit par le programme suivant : public class UpCast1 {

Plus en détail

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40 Déroulement du cours Introduction Concepts Java Remarques Langage et Concepts de Programmation Orientée-Objet Gauthier Picard École Nationale Supérieure des Mines de Saint-Étienne gauthier.picard@emse.fr

Plus en détail

Apprendre la Programmation Orientée Objet avec le langage Java (avec exercices pratiques et corrigés)

Apprendre la Programmation Orientée Objet avec le langage Java (avec exercices pratiques et corrigés) Introduction à la POO 1. Histoire de la POO 9 2. Historique du 12 La conception orientée objet 1. Approche procédurale et décomposition fonctionnelle 13 2. La transition vers l'approche objet 14 3. Les

Plus en détail

4. Groupement d objets

4. Groupement d objets Conception objet en Java avec BlueJ une approche interactive 4. Groupement d objets Collections et itérateurs David J. Barnes, Michael Kölling version française: Patrice Moreaux Rédigé avec 1.0 Principaux

Plus en détail

Licence Bio Informatique Année 2004-2005. Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Licence Bio Informatique Année 2004-2005. Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose... Université Paris 7 Programmation Objet Licence Bio Informatique Année 2004-2005 TD n 1 - Correction Premiers pas Exercice 1 Hello World parce qu il faut bien commencer par quelque chose... 1. Enregistrez

Plus en détail

Certificat Big Data - Master MAthématiques

Certificat Big Data - Master MAthématiques 1 / 1 Certificat Big Data - Master MAthématiques Master 2 Auteur : Sylvain Lamprier UPMC Fouille de données et Medias Sociaux 2 / 1 Rich and big data: Millions d utilisateurs Millions de contenus Multimedia

Plus en détail

Polymorphisme, la classe Object, les package et la visibilité en Java... 1

Polymorphisme, la classe Object, les package et la visibilité en Java... 1 Polymorphisme, la classe Object, les package et la visibilité en Java. Polymorphisme, la classe Object, les package et la visibilité en Java.... 1 Polymorphisme.... 1 Le DownCast... 4 La Classe Object....

Plus en détail

Java RMI. Arnaud Labourel Courriel: arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 8 mars 2011

Java RMI. Arnaud Labourel Courriel: arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 8 mars 2011 Java RMI Arnaud Labourel Courriel: arnaud.labourel@lif.univ-mrs.fr Université de Provence 8 mars 2011 Arnaud Labourel (Université de Provence) Java RMI 8 mars 2011 1 / 58 Web services Services par le réseau

Plus en détail

Création d objet imbriqué sous PowerShell.

Création d objet imbriqué sous PowerShell. Création d objet imbriqué sous PowerShell. Par Laurent Dardenne, le 13/01/2014. Niveau Ce tutoriel aborde la création d objet composé, c est-à-dire que certains de ses membres seront eux-mêmes des PSObjects.

Plus en détail

Java DataBaseConnectivity

Java DataBaseConnectivity Java DataBaseConnectivity JDBC JDBC est une API Java (ensemble de classes et d interfaces défini par SUN et les acteurs du domaine des SGBD) permettant d accéder aux bases de données à l aide du langage

Plus en détail

ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET

ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET ALGORITHMIQUE ET PROGRAMMATION ORIENTEE OBJET I. INTRODUCTION 1.1. HISTORIQUE 1991: Concepts Java pour Sun -conception d'un langage pour des appareils électroniques(code embarqué) -syntaxe proche du C++

Plus en détail

Introduction au langage Java

Introduction au langage Java Introduction au langage Java 1 Introduction : Langage développé par Sun et purement orienté objet. N a pas de rapport direct avec Javascript développé par Netscape. Les applications java peuvent être des

Plus en détail

Langage Java. Classe de première SI

Langage Java. Classe de première SI Langage Java Table des matières 1. Premiers pas...2 1.1. Introduction...2 1.2. Mon premier programme...2 1.3. Les commentaires...2 2. Les variables et les opérateurs...2 3. La classe Scanner...3 4. Les

Plus en détail

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Structure d un programme et Compilation Notions de classe et d objet Syntaxe Cours1 Structure d un programme et Compilation Notions de classe et d objet Syntaxe POO 1 Programmation Orientée Objet Un ensemble d objet qui communiquent Pourquoi POO Conception abstraction sur les types

Plus en détail

Environnements de développement (intégrés)

Environnements de développement (intégrés) Environnements de développement (intégrés) Tests unitaires, outils de couverture de code Patrick Labatut labatut@di.ens.fr http://www.di.ens.fr/~labatut/ Département d informatique École normale supérieure

Plus en détail

1 Définition d une classe en Java

1 Définition d une classe en Java Université Montpellier-II UFR des Sciences - Département Informatique Licence Informatique - Ingénierie Logicielle - Concepts et Outils de la modélisation et du développement de logiciel par et pour la

Plus en détail

TD/TP PAC - Programmation n 3

TD/TP PAC - Programmation n 3 Université Paris Sud Licence d informatique/iup-miage2 Année 2004-2005 Auteur : Frédéric Vernier Semaine : 11-16 octobre 2004 Conditions : sur machine avec les outils standards java web: http://vernier.frederic.free.fr/indexpac.html

Plus en détail

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp Serveur d'application Client HTML/JS Apache Thrift Bootcamp Pré-requis La liste ci-dessous de logiciels doit être installée et opérationnelle sur la machine des participants : Compilateur thrift http://thrift.apache.org/

Plus en détail

Premiers Pas en Programmation Objet : les Classes et les Objets

Premiers Pas en Programmation Objet : les Classes et les Objets Chapitre 2 Premiers Pas en Programmation Objet : les Classes et les Objets Dans la première partie de ce cours, nous avons appris à manipuler des objets de type simple : entiers, doubles, caractères, booléens.

Plus en détail

Support de cours et TD Programmation Orientée Objet

Support de cours et TD Programmation Orientée Objet REPUBLIQUE TUNISIENNE MINISTERE DE L ENSEIGNEMENT SUPERIEUR ET DE LA RECHERCHE SCIENTIFIQUE Institut Supérieur des Etudes Technologiques de Médenine Département Informatique Support de cours et TD Programmation

Plus en détail

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

INTRODUCTION A JAVA. Fichier en langage machine Exécutable INTRODUCTION A JAVA JAVA est un langage orienté-objet pur. Il ressemble beaucoup à C++ au niveau de la syntaxe. En revanche, ces deux langages sont très différents dans leur structure (organisation du

Plus en détail

INF 321 : mémento de la syntaxe de Java

INF 321 : mémento de la syntaxe de Java INF 321 : mémento de la syntaxe de Java Table des matières 1 La structure générale d un programme 3 2 Les composants élémentaires de Java 3 2.1 Les identificateurs.................................. 3 2.2

Plus en détail

Design patterns. Design patterns - définition. Design patterns - avantages

Design patterns. Design patterns - définition. Design patterns - avantages Design patterns Conception UML Implantation Java Anne Lapujade 1 Design patterns - définition 2 v Objectif : proposer des solutions standardisées à des problèmes de conception classiques v Design pattern

Plus en détail

Cahier des Charges du Projet Domotique. Choquet Mathieu Masson Jérôme Groupe 6. Domotique. p.1

Cahier des Charges du Projet Domotique. Choquet Mathieu Masson Jérôme Groupe 6. Domotique. p.1 Choquet Mathieu Masson Jérôme Groupe 6 Domotique p.1 SOMMAIRE : Introduction...... I/ Envoi de SMS...... II/ Architecture...... III/ Serveur...... IV/ Détection de mouvement...... V/ Problème rencontré......

Plus en détail

Info0604 Programmation multi-threadée. Cours 5. Programmation multi-threadée en Java

Info0604 Programmation multi-threadée. Cours 5. Programmation multi-threadée en Java Info0604 Programmation multi-threadée Cours 5 Programmation multi-threadée en Java Pierre Delisle Université de Reims Champagne-Ardenne Département de Mathématiques et Informatique 18 février 2015 Plan

Plus en détail

Tutoriel d installation de Hibernate avec Eclipse

Tutoriel d installation de Hibernate avec Eclipse Tutoriel d installation de Hibernate avec Eclipse Table des matières 1. Création de la base de données... 4 2. Installation de Hibernate Synchronizer... 5 3. Utilisation de Hibernate... 6 3.1 Création

Plus en détail

Initiation à JAVA et à la programmation objet. raphael.bolze@ens-lyon.fr

Initiation à JAVA et à la programmation objet. raphael.bolze@ens-lyon.fr Initiation à JAVA et à la programmation objet raphael.bolze@ens-lyon.fr O b j e c t i f s Découvrir un langage de programmation objet. Découvrir l'environnement java Découvrir les concepts de la programmation

Plus en détail

Introduction à la programmation concurrente

Introduction à la programmation concurrente Introduction à la programmation concurrente Moniteurs Yann Thoma Reconfigurable and Embedded Digital Systems Institute Haute Ecole d Ingénierie et de Gestion du Canton de Vaud This work is licensed under

Plus en détail

Projet de programmation (IK3) : TP n 1 Correction

Projet de programmation (IK3) : TP n 1 Correction Projet de programmation (IK3) : TP n 1 Correction Semaine du 20 septembre 2010 1 Entrées/sorties, types de bases et structures de contrôle Tests et types de bases Tests et types de bases (entiers) public

Plus en détail

La JVM. La machine virtuelle Java. La JVM. La JVM

La JVM. La machine virtuelle Java. La JVM. La JVM La machine virtuelle Java Historique et rappels Organisation mémoire de la JVM Le garbage collector Le bytecode, la machine à pile. Les threads Suivi, tracé, optimisation d un programme Java JVM embarquées

Plus en détail

Corrigé des exercices sur les références

Corrigé des exercices sur les références Corrigé des exercices sur les références Exercice 3.1.1 dessin Pour cet exercice, vous allez dessiner des structures de données au moyen de petits schémas analogues à ceux du cours, comportant la pile

Plus en détail

Serveur d'archivage 2007 Installation et utilisation de la BD exist

Serveur d'archivage 2007 Installation et utilisation de la BD exist Type du document Procédure d'installation Auteur(s) Eric Bouladier Date de création 26/02/20007 Domaine de diffusion tous Validé par Equipe Versions Date Auteur(s) Modifications V1.00 26/02/2007 Eric Bouladier

Plus en détail

Héritage presque multiple en Java (1/2)

Héritage presque multiple en Java (1/2) Héritage presque multiple en Java (1/2) Utiliser deux classes ou plus dans la définition d'une nouvelle classe peut se faire par composition. class Etudiant{ int numero; Diplome d; float passeexamen(examen

Plus en détail

Cours 1: Java et les objets

Cours 1: Java et les objets Ressources Les interface homme-machine et le langage Java DUT première année Henri Garreta, Faculté des Sciences (Luminy) Cyril Pain-Barre & Sébastien Nedjar, IUT d Aix-Marseille (Aix) Cours 1: infodoc.iut.univ-aix.fr/~ihm/

Plus en détail

Aide mémoire UML & Java 1ère partie : Introduction. marc.lemaire@u-cergy.fr

Aide mémoire UML & Java 1ère partie : Introduction. marc.lemaire@u-cergy.fr Aide mémoire UML & Java 1ère partie : Introduction marc.lemaire@u-cergy.fr 9 septembre 2014 1 2014 v1.11 Table des matières 1 Généralités 6 1.1 Notations utilisées.....................................

Plus en détail

le minimum pour communiquer par réseau (sans toutefois y comprendre grand chose)

le minimum pour communiquer par réseau (sans toutefois y comprendre grand chose) L API socket en résumé le minimum pour communiquer par réseau (sans toutefois y comprendre grand chose) Fabrice HARROUET École Nationale d Ingénieurs de Brest http://www.enib.fr/~harrouet/ enib 1/58 Propos

Plus en détail

LOG4430 : Architecture logicielle et conception avancée

LOG4430 : Architecture logicielle et conception avancée LOG4430 : Architecture logicielle et conception avancée Yann-Gaël Guéhéneuc Cours 3 Bibliothèques et chargement Dynamique de composants Département de génie informatique et de génie logiciel École Polytechnique

Plus en détail

Chapitre VI- La validation de la composition.

Chapitre VI- La validation de la composition. Chapitre VI- La validation de la composition. Objectifs du chapitre : Expliquer les conséquences de l utilisation de règles de typage souples dans SEP. Présenter le mécanisme de validation des connexions

Plus en détail

TD/TP PAC - Programmation n 3

TD/TP PAC - Programmation n 3 Université Paris Sud Licence d informatique/iup-miage2 - Année 2004-2005 auteur : Frédéric Vernier semaine : 11-16 octobre 2004 conditions : sur machine avec les outils standards java web: http://vernier.frederic.free.fr/indexpac.html

Plus en détail

API04 Contribution. Apache Hadoop: Présentation et application dans le domaine des Data Warehouses. Introduction. Architecture

API04 Contribution. Apache Hadoop: Présentation et application dans le domaine des Data Warehouses. Introduction. Architecture API04 Contribution Apache Hadoop: Présentation et application dans le domaine des Data Warehouses Introduction Cette publication a pour but de présenter le framework Java libre Apache Hadoop, permettant

Plus en détail