Modèle d'exécution Java

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

Download "Modèle d'exécution Java"

Transcription

1 Java Avancé Modèle d'exécution Java Rémi Forax 1

2 Méthode En Java, il est impossible de définir du code hors d'une méthode. Une méthode est séparée en 2 parties : La signature (types des paramètres, type de retour) Le code de la méthode Le code d'une méthode est constitué de différents blocs imbriqués. Chaque bloc définit et utilise des variables locales. 2

3 Structures de contrôle Java possède quasiment les mêmes structures de contrôle que le C. Différences : pas de goto switch(enum) for spécial ( foreach ) break ou continue avec label. 3

4 Structure de test Test Conditionnel booléen : if (args.length==2) dosomething(); else dosomethingelse(); Test Multiple numérique (ou valeur d'enum): switch(args.length) { case 0: return; case 2: dosomething(); break; default: dosomethingelse(); switch(threadstate) { case NEW: runit(); break; case RUNNABLE: break; case BLOCKED: unblock(); 4

5 Structure de boucle Boucle tant que condition booléenne vrai: while(condition){... do{...while(condition); for(init;condition;incrementation){... Foreach... in for(decl/var :array/iterable){... public static void main(string[] args) { for(string s:args) System.out.println(s); 5

6 break/continue label break [label]: permet d'interrompre le bloc (en cours ou celui désigné par le label). continue [label]: permet de sauter à l'incrémentation suivante public static boolean find(int val,int v1,int v2) { loop: for(int i=1;i<=v1;i++) for(int j=1;j<=v2;j++) { int mult=v1*v2; if (mult==val) return true; if (mult>val) continue loop; return false; 6

7 Variable locale Une variable déclarée dans un bloc est une variable locale Variables locales Bloc public class LocalVariable { private static double sum(double[] values) { double sum=0.0; for(double v:values) { sum+=v; return sum; public static void main(string[] args) { sum(new double[]{2,3,4,5); Les paramètres sont aussi considérés comme des variables locales. Bloc 7

8 Variable locale et portée Une variable à pour portée le bloc dans lequel elle est définie public class LocalVariable { private static double sum(double[] values) { double sum=0.0; for(double v:values) { sum+=v; // v n'est plus accessible return sum; // values et sum pas accessible private static void test(int i) { for(int i=0;i<5;i++) // erreur doit(i); Deux variables avec le même nom doivent être dans des blocs disjoints 8

9 Variable locale et initialisation Toute variable locale doit être initialisée avant son utilisation. public class LocalInit { public static void main(string[] args) { int value; if (args.length==2) value=3; System.out.println(value); // erreur: variable value might not have been initialized Le compilateur effectue la vérification. 9

10 Variable locale constante Il est possible de définir une variable locale constante en utilisant le mot-clé final. public class FinalExample { public static void main(string[] args) { final int val; if (args.length==2) val=3; else val=4; for(final int i=0;i<args.length;i++) args[i]="toto"; // error: cannot assign a value to final variable i 10

11 Variable locale constante (2) final s'applique sur une variable et non sur le contenu d'un objet public class FinalExample { public static void main(final String[] args) { final int value; if (args.length==2) value=3; else value=4; for(int i=0;i<args.length;i++) args[i]="toto"; // ok Il est impossible de créer ou d'obtenir un tableau de valeurs constantes en Java!! 11

12 Expressions Les opérateurs sur les expressions sont les même que ceux du C (+,-,*,/, ==,!=, &&,, +=, -=, ++, --, etc.) Opérateurs en plus >>>, décalage à droite avec bit de signe % sur les flottants? (float ou double) L'ordre d'évaluation des expressions est normé en Java (de gauche à droite) 12

13 Modèle d'exécution en mémoire Différents types de mémoire d'un programme Texte (donnée read-only) : code du programme, constantes Globale (donnée r/w) : Pile : Tas : variables globales une par thread exécute opération courante objets alloués (par malloc ou new) 13

14 Allocation en Java En Java, les variables locales sont allouées sur la pile (ou dans les registres) et les objets dans le tas. Le développeur ne contrôle pas la zone d'allocation ni quand sera effectuée la désallocation. En C++, il est possible d'allouer des objets sur la pile, pas en Java. 14

15 Sur la pile La pile, l'ensemble des valeurs courantes d'une exécution Sur la pile : Un type primitif est manipulé par sa valeur (sur 32bits ou 64bits) Un type objet est manipulé par sa référence int i; Point p; Pile Tas i=3; p=new Point(); i p Variables locales 15

16 La référence null Java possède une référence spéciale null, qui correspond à aucune référence. Point p; p=null; Holder h; h=null; System.out.println(p.x); // lève une exception NullPointerException null est une référence de n'importe quel type. null instanceof Truc renvoie false 16

17 Référence!= Pointeur Une référence (Java) est une adresse d'un objet en mémoire Un pointeur (C) est une référence plus une arithmétique associée Point p; p=new Point(); p++; // illegal Point *p; p=new Point(); p++; // legal // Java // C Une référence ne permet pas de parcourir la mémoire 17

18 Variable et type Simulons l'exécution du code : int i=3; int j=i; j=4; Truck t=new Truck(); t.wheel=3; Truck u=t; u.wheel=4; Variables locales i j Variables locales t u champs wheel 4 3 u contient la même référence que t. 18

19 Passage de paramètres Les paramètres sont passés par copie toto private static void f(int i,string s,truck t) { i=4; s="toto"; Variables locales t.wheel=3; i t=new Truck(); 4 2 s wheel 0 t Les objets sont manipulés par des références sont copiées wheel 3 0 public static void main(string[] args) { String arg="zut"; int value=2; Truck truck=new Truck(); f(value,arg,truck); System.out.println("%d %s %h %d\n", value,arg,truck,truck.wheel); Variables locales arg value 2 truck zut 19

20 Objets mutables/non mutables Un objet est mutable s il est possible de modifier son état après sa création Sinon il est non mutable : Champs final Que des méthodes de consultation (getter), pas de methode de modification (setter) Objet levant une exception si l on essaye de la modifier (e.g. Collections.unmodifiable*) 20

21 Exemple En Java les chaines de caractères sont représentées par deux classes : java.lang.string non mutable java.lang.stringbuilder mutable Effectuer une opération sur String crée un nouvel objet public static void main(string[] args) { String z="zut"; String s=arg.touppercase(); System.out.printlf( %s %s\n,z,s); // zut ZUT 21

22 Exemple (suite) Une opération sur StringBuilder change l état de l objet courant public static void main(string[] args) { StringBuilder a=new StringBuilder("z"); StringBuilder b=a.append("ut"); System.out.printlf( %s %s\n,a,b); // zut zut System.out.println(a==b); // true Notons qu il est possible de chainée des appels a StringBuilder public static void main(string[] args) { StringBuilder a=new StringBuilder("z"); System.out.println( a.append( ut ).append( ).append(23)); // zut 23 22

23 Protection des données Pour une méthode, lorque l on envoie ou reçoit un objet mutable on prend le risque que le code extérieur modifie l objet pendant ou après l appel de la méthode Pour palier cela Passer une copie/effectuer une copie de l argument passer/accepter un objet non mutable 23

24 Tests d égalité Les opérateurs de comparaison == et!= tests les valeurs des variables : Pour les types primitifs, on test leurs valeurs Pour les types objets, on test les valeurs leurs références Truck a; a=new Truck(); Truck b; b=a; Truck c=new Truck(); a==b; // true b==c; // false a==c; // false Variables locales a b c wheel 4 wheel 4 24

25 Tests d égalité Pour comparer structurellement deux objet, il faut redéfinir la méthode equals(object) Par défaut, la méthode equals de Object test les références La plupart des classes de l API redéfinissent la méthode equals Point a=new Point(2,2); Point b=new Point(2,2); a.equals(b); // true a==b; // false 25

26 Désallocation en Java Les objets qui ne sont plus référencés vont être collectés (plus tard) par le GC pour que leur emplacement mémoire soit réutilisé. Façons d'avoir un objet non référencé : Si on assigne une nouvelle référence à une variable (l'ancienne référence meurt ) Si l'on sort d'un bloc, les variables meurent. Il faut qu'il n'y ait plus aucune référence sur un objet pour qu'il puisse être réclamé. 26

27 Désallocation en Java (2) Un objet sera réclamé par le GC si aucune référence sur lui ne persiste. { Point p; p=new Point(); p=null; { Point p; p=new Point(); Point p2; p2=p; p=null; p p p2 27

28 La classe Objet Classe mère de toutes les classes. Possède des méthodes de base qu'il est possible de redéfinir : tostring() equals() & hashcode() clone() finalize() 28

29 String tostring() Affiche un objet sous-forme textuelle. Cette méthode est principalement utilisée pour le deboggage public class MyInteger { public MyInteger(int value) { this.value=value; public String tostring() { return Integer.toString(value); // ou ""+value; private final int value; public static void main(string[] args) { System.out.println(new MyInteger(3)); // appel tostring() 29

30 boolean equals(object) Permet de comparer des objets en fonction de leur contenu. public class MyInteger { public MyInteger(int value) { this.value=value; boolean equals(object o) { if (!(o instanceof MyInteger)) return false; return value==((myinteger)o).value; private final int value; public static void main(string[] args) { MyInteger i=new MyInteger(3); MyInteger j=new MyInteger(3); System.out.println(i==j); // false, compare les références System.out.println(i.equals(j)); // true, compare les contenues 30

31 boolean equals(object) Pourquoi ne pas écrire equals(myinteger) public class MyInteger { public MyInteger(int value) { this.value=value; public boolean equals(myinteger i) { // return value==i.value; private final int value; public static void main(string[] args) { Object o1=new MyInteger(3); Object o2=new MyInteger(3); System.out.println(o1==o2); // compare les références System.out.println(o1.equals(o2)); // appel Object.equals(Object) qui compare les références!! equals(myinteger) ne redéfinie pas equals(object), donc pas de polymorphisme! 31

32 int hashcode() Renvoie un entier qui peut être utilisé comme valeur de hachage de l'objet Par contrat, si o1.equals(o2)==true alors o1.hashcode()==o2.hashcode() La réciproque n'est pas vrai public class Point { public Point(int x,int y) { this.x=x; this.y=y; public int hashcode() { return x ^ y;... 32

33 Object clone() Permet de dupliquer un objet Mécanisme pas super simple à comprendre : clone() a une visibilité protected clone() peut lever une exception CloneNotSupportedException Object.clone() fait par défaut une copie de surface si l'objet implante l'interface Cloneable L'interface Cloneable ne définie pas la méthode clone() 33

34 Object clone() (2) Cloner un objet sans champs contenant un objet mutable public class MyInteger implements Cloneable { // nécessaire public MyInteger(int value) { // pour Object.clone() this.value=value; MyInteger clone() { return new MyInteger(value); // Mal si héritage return (MyInteger)super.clone(); // shallow copy // (MyInteger) unsafe private final int value; public static void main(string[] args) { MyInteger i=new MyInteger(3); MyInteger j=i.clone(); System.out.println(i==j); // false System.out.println(i.equals(j)); // true 34

35 Object clone() (3) Cloner un objet avec des champs contenant des objets mutables public class MyHolder implements Cloneable { // nécessaire public MyHolder(Mutable mutable) { // pour Object.clone() this.mutable=mutable; MyHolder clone() { MyHolder holder=(myholder)super.clone(); // shallow copy holder.mutable=holder.mutable.clone(); // clone mutable return holder; private final Mutable mutable; On appel clone() sur l'objet mutable 35

36 Class<?> getclass() permet d'obtenir un objet Class représentant la classe d'un objet particulier String s1="toto"; String s2="tutu"; s1.getclass()==s2.getclass(); // true Cette méthode est final Il existe une règle spéciale du compilateur indiquant le type de retour de getclass(). (cf cours Types Paramétrés) 36

37 void finalize() Méthode testamentaire qui est appelé juste avant que l'objet soit réclamé par le GC public class FinalizedObject { void finalize() { System.out.println("ahh, je meurs"); public static void main(string[] args) { FinalizedObject o=new FinalizedObject(); o=null; System.gc(); // affiche ahh, je meurs Cette méthode est protected et peut lever un Throwable 37

38 wait()/notify() wait() permet d'attendre sur le verrou associé à l'objet. notify() permet de libérer quelqu'un en attente sur le verrou associé à l'objet Pour plus d'infos, voir cours de Nicolas 38

39 Les tableaux Il existe deux types de tableaux : Les tableaux d'objets, héritant de Object[], ils contiennent des référence sur des objets Les tableaux de types primitifs, héritant de Object ils contiennent des types primitifs Tous les tableaux implantent les interfaces Cloneable et Serializable 39

40 Initialisation et accès Syntaxes d'initialisation : new type[taille] new type[]{valeur 1,valeur 2,...,valeur n-1 double[] values=new double[5]; int[] array=new int[]{2,3,4,5; [] permet d'accèder en lecture/écriture values[0]=values[1]+2.0; values[2]=array[3]; L'accès est protégé et les tableaux sont tous mutables 40

41 Longueur et boucle Les tableaux sont utilisables dans une boucle for-each long[] array=new int[]{2,3,4,5; for(long l:array) System.out.print(l);.length sur un tableau permet d'obtenir sa taille long[] array=new int[]{2,3,4,5; for(int i=0;i<array.length;i++) System.out.print(array[i]); 41

42 Les chaînes de caractères L'interface CharSequence est implantée par les 4 classes String, chaîne de caractère immutable StringBuilder, buffer de caractère mutable et auto-expensif StringBuffer, pareil que StringBuilder mais synchronizé CharBuffer, buffer de caractères mutable de taille fixe qui peut être alloué par malloc (pratique pour read/write avec le système) 42

43 CharSequence Représente une suite de caractère : char charat(int index) retourne le n-ième caractère int length() retourne la taille de la chaîne CharSequence subsequence(int start, int end) retourne une sous-chaîne String tostring() transforme en chaîne immutable 43

44 String Chaîne de caractère immutable Initialisation dans le langage Concaténation avec + public class StringExample { public static void main(string[] args) { String t="toto"; String s=args[0]+t+args.length; for(int i=0;i<s.length();i++) System.out.println(s.charAt(i)); La plus utilisée car immutable 44

45 Les méthodes de String Méthodes habituellement utilisée touppercase()/tolowercase() equals()/equalsignorecase() compareto()/comparetoignorecase() startswith()/endswith() indexof()/lastindexof() matches(regex)/split(regex) trim() format() [équivalent de sprinft] 45

46 String et intern() Par défaut, la VM utilise un même objet pour la même chaine de caractères littérale public class InternStringExample { public static void main(string[] args) { String s="toto"; System.out.println(s=="toto"); // true String t=new String(s); System.out.println(t=="toto"); // false String u=t.intern(); System.out.println(u=="toto"); // true La méthode intern() permet de récupérer une instance de String partagée 46

47 StringBuilder Equivalent mutable de String, possède un buffer de caractère qui s'aggrandit tous seul Est utilisé pour créer une chaîne de caractère qui sera après rendu immutable public class StringBuilderExample { public static void main(string[] args) { StringBuilder builder=new StringBuilder(); for(string s:args) builder.append(s).append(" ").append(s.length()); String result=builder.tostring(); System.out.println(result); Les méthodes append() sont chaînables 47

48 La concaténation Par défaut, le compilateur utilise un StringBuilder si l'on fait des + sur des String public class ConcatExample { public String tostring() { return "toto"+value; private final int value; public class ConcatExample { public String tostring() { return new StringBuilder().append("toto"). décompile append(value).tostring(); private final int value; compile bytecode Dans quels cas utiliser un StringBuilder alors? 48

49 La concaténation (2) Lorsqu'il y a une boucle public class StringBuilderExample { public static void main(string[] args) { String result=""; for(string s:args) result+=s+" "+s.length(); System.out.println(result); public class StringBuilderExample { public static void main(string[] args) { String result=""; for(string s:args) { compile result=new StringBuilder(result).append(s). décompile append(" ").append(s.length()).tostring(); bytecode System.out.println(result); Le code générer alloue un StringBuilder par tour de boucle (pas super optimisé) 49

50 StringBuffer Possède la même implantation que StringBuilder mais est synchronizé par défaut Utilisé avant que StringBuilder existe, c-a-d avant la version 5.0 (1.5). Ne doit plus être utilisé sauf par compatibilité avec d'anciennes bibliothèques 50

51 java.nio.charbuffer Correspond à un tableau de caractère de taille fixe ainsi qu'à deux pointeurs sur ce tableau Très pratique et rapide lors des opérations de lecture et écriture Cf cours d'etienne Duris 51

52 Type primitif et Objet Il existe des classes wrapper (enveloppes) qui permettent de voir un type primitif comme un objet List list=... Holder holder=new Holder(); list.add(holder); int i=3; list.add(new Integer(i)); public class List { public void add(object o) {... Cela permet de réutiliser un code marchant pour des objets avec des types primitifs 52

53 Les wrappers Un wrapper est juste un objet stockant un type primitif public class Integer { private final int value; public Integer(int value) { this.value=value;... boolean -> Boolean, byte -> Byte short -> Short, char -> Character, int -> Integer, long -> Long, float -> Float, double -> Double 53

54 Conversion type primitif/wrapper Les wrappers possèdent deux méthodes qui permettent de faire la conversion entre un type primitif et le wrapper Wrapper.valueOf(primitif) int value=3; Integer i=integer.valueof(value); wrapper.primitifvalue Integer value=... int i=value.intvalue(); 54

55 Hiérarchie des wrappers Les relations de sous-typage entre les wrappers ne sont pas les mêmes que celles des types primitifs associés Object Boolean Character Number Byte Float Integer Short Double 55

56 Auto boxing/unboxing En fait, la conversion est automatique Auto-boxing : int value=3; Integer i=value; Object o=3.0 // passage en Double Auto-unboxing : Integer value=new Integer(3); int i=value; double d=value; // passage en int puis promotion en double 56

57 Auto boxing/unboxing (2) Les conversions de boxing/unboxing sont faites avant les conversions classiques mais pas après int value=3; Integer bvalue=value; double d=bvalue; // Integer -> int puis promotion en double Double wd=value; // erreur pas de convertion Integer -> Double // et pas possible de faire int -> double -> Double Double wd=(double)value; 57

58 Appel de méthode Auto-boxing, unboxing s'applique aussi lors de l'appel de méthode Sur les arguments Sur la valeur de retour List list=... list.add(3); int value=list.get(0); public class List { public void add(object o) {... public Object get(int index) {... 58

59 Opérateurs et auto[un]boxing De même que pour les méthodes, l'auto[un]boxing s'applique avec les opérateurs numériques <,<=,>=,>, &,, ^, ~ Integer i=235; // boxing if (i>4) // unboxing System.out.println(i); Integer j=235; // boxing if (i==j) // false // compare les références!!! System.out.println("arg!"); Il ne s'applique pas avec == et!=. 59

60 Boxing et cache Pour faire le boxing, on utilise la méthode Wrapper.valueOf() et non new Wrapper() pour permettre un partage des wrappers Pour les types byte, short, char, int et long, les valeurs entre -128 et 127 sont mises dans un cache. 60

61 Boxing et cache (2) Donc, les wrappers possèderont la même référence Long a=17; Long b=17; Integer i=235; Integer j=235; System.out.println(a==b); // true System.out.println(i==j); // false b=new Long(17); System.out.println(a==b); // false Eviter les ==,!= sur les wrappers 61

62 Unboxing et null Si la référence sur un wrapper est null, un unboxing provoque une exception NullPointerException Integer i=null; if (randomboolean()) i=3; int value=i; // risque de NPE 62

63 Boxing et tableau Il n'y a pas de boxing/unboxing entre un tableau de type primitif et un tableau de wrapper public class ArrayBoxing { public void sort(object[] array) {... public static void main(string[] args) { int[] array=new int[]{2,3; sort(array);// sort(java.lang.object[]) // cannot be applied to (int[]) 63

64 Plan Structure de contrôle et variable Modèle d'exécution Passerelle entre type primitif et Objet Exception 64

65 Les Exceptions Mécanisme qui permet de reporter des erreurs vers les méthodes appelantes. Problème en C : prévoir une plage de valeurs dans la valeur de retour pour signaler les erreurs. Propager les erreurs manuellement En Java comme en C++, le mécanisme de remonté d erreur est gérée par le langage. 65

66 Exemple d'exception Un exemple simple public class ExceptionExample { public static char charat(char[] array,int index) { return array[index]; public static void main(string[] args) { char[] array=args[0].tochararray(); charat(array,0); Lors de l exécution : C:\eclipse\workspace\java-avancé>java ExceptionExample Exception in thread "main" java.lang.arrayindexoutofboundsexception: 0 at ExceptionExample.main(ExceptionExample.java:18) 66

67 Exemple d'exception (suite) En reprenant le même exemple : public class ExceptionExample { public static char charat(char[] array,int index) { if (index<0 index>array.length) throw new IllegalArgumentException("bad index "+index); return array[index]; public static void main(string[] args) { char[] array=args[0].tochararray(); charat(array,0); charat(array,1000); C:\eclipse\workspace\java-avancé>java ExceptionExample toto Exception in thread "main" java.lang.illegalargumentexception: bad index 1000 at ExceptionExample.charAt(ExceptionExample.java:13) at ExceptionExample.main(ExceptionExample.java:20) 67

68 Attraper une exception try/catch permet d'attraper les exceptions public class CatchExceptionExample { public static void main(string[] args) { int value; try { value=integer.parseint(args[0]); catch(numberformatexception e) { value=0; System.out.println("value "+value); 68

69 Programmation par exception Déclencher une exception pour l'attraper juste après est rarement performant (la création du stacktrace coûte cher) public class CatchExceptionExample { public static int sum1(int[] array) { // 5,4 ns int sum=0; for(int v:array) sum+=v; return sum; public static int sum2(int[] array) { // 7,2 ns int sum=0; try { for(int i=0;;) sum+=array[i++]; catch(arrayindexoutofboundsexception e) { return sum; 69

70 Attraper une exception try/catch définit obligatoirement un bloc. public class CatchExceptionExample { public static void main(string[] args) { int value; try { value=integer.parseint(args[0]); catch(arrayindexoutofboundsexception e) { System.err.println("no argument"); e.printstacktrace(); return; catch(numberformatexception e) { value=0; System.out.println("value "+value); Attention, les blocs catch sont testés dans l'ordre d'écriture! Un catch inatteignable est un erreur Sinon cela ne compile pas 70

71 Types d'exceptions Il existe 3 trois types d'exceptions organisés comme ceci : Throwable Error Exception RuntimeException Arbre de sous-typage des exceptions 71

72 Types d'exceptions (2) Les Error correspondent à des exceptions qu'il est rare d'attraper. Les RuntimeException que l'on peut rattraper mais que l'on n'est pas obligé. Les Exception que l'on est obligé d'attraper (try/catch) ou de dire que la méthode appelante devra s'en occuper (throws). 72

73 La directive throws Indique qu'une exception peut-être levée dans le code mais que celui-ci ne la gère pas (pas de try/catch). public class ThrowsExceptionExample { public static void f(int i) throws Exception { if (i==0) throw new Exception("oh no"); public static void main(string[] args) { try { f(integer.parseint(args[0])); catch(exception e) { System.err.println("bad argument"); return; throws est nécessaire que pour les Exception (pas les erreurs ou les runtimes) 73

74 Le bloc finally Sert à exécuter un code quoi qu'il arrive (fermer un fichier, une connection, libérer une ressources) public class FinallyExceptionExample { public static void main(string[] args) { ReentrantLock lock = new ReentrantLock(); lock.lock(); try { dosomething(); finally { lock.unlock() Le catch n'est pas obligatoire. 74

75 Exception et StackTrace Lors de la création d'une exception, la VM calcule le StackTrace Le StackTrace correspond aux fonctions empilées (dans la pile) lors de la création Le calcul du StackTrace est quelque chose de couteux en performance. Les numéros de ligne ne sont affichées que compilé avec l option debug (pas par défaut avec ant) 75

76 StrackTrace et optimisation Pour des questions de performance, il est possible de pré-créer une exception public class StackTraceExample { public static void f() { throw new RuntimeException(); public static void g() { if (exception==null) exception=new RuntimeException(); throw exception; private static RuntimeException exception; public static void main(string[] args) { f(); // appels, moyenne()=3104 ns g(); // appels, moyenne()=168 ns 76

77 Le chaînage des exceptions Il est possible d'encapsuler une exception dans une autre new Exception("msg", throwable) new Exception("msg").initCause(throwable) Permet de lever une exception suffisamment précise tout en respectant une signature fixée 77

78 Le chaînage des exceptions (2) Comme close ne peut pas renvoyer d'exception, on encapsule celle-ci interface Closable { public void close() throws IOException; public class ExceptionChain implements Closable { public void f() throws Exception { throw new Exception("argh!"); public void close() throws IOException { try { f(); catch(exception e) { throw (IOException)new IOException().initCause(e); 78

79 Le chaînage des exceptions (3) Exécution de l exemple précédent : Exception in thread "main" java.io.ioexception at ExceptionChain.close(ExceptionChain.java:27) at ExceptionChain.main(ExceptionChain.java:32) Caused by: java.lang.exception: argh! at ExceptionChain.f(ExceptionChain.java:20) at ExceptionChain.close(ExceptionChain.java:25)... 1 more 79

80 Le mot-clé assert Le mot-clé assert permet de s'assurer que la valeur d une expression est vraie Deux syntaxes : assert test; assert i==j; assert test : mesg; assert i==j:"i not equals to j"; Par défaut, les assert ne sont pas exécutés, il faut lancer java -ea (enable assert) 80

81 assert et AssertionError Si le test booléen du assert est faux, la VM lève une exception AssertionError public class AssertExample { private static void check(list list) { assert list.isempty() list.indexof(list.get(0))!=-1; public static void main(string[] args) { List list=new BadListImpl(); list.add(3); check(list);... 81

82 Exceptions levées par... Les exceptions levées par la VM correspondent : Erreur de compilation ou de lancement NoClassDefFoundError, ClassFormatError problème avec l'os IOException, AWTException problème de ressource : OutOfMemoryError, StackOverflowError des erreurs de programmation (runtime) NullPointerException, ArrayIndexOutOfBoundsException, ArithmethicException 82

83 Exceptions et programmeur Le programmeur va utiliser des exceptions pour assurer : Que son code est bien utilisé (pré-condition) Que l'état de l'objet est bon (pré-condition) Que le code fait ce qu'il doit faire (post-condition/invariant) Il va de plus gérer toutes les exceptions qui ne sont pas runtime. 83

84 Exception et prog. par contrat Habituellement les : Pré-conditions sont utilisées pour : vérifier les paramètres NullPointerException et IllegalArgumentException vérifier l'état de l'objet IllegalStateException Post-conditions sont utilisées pour : vérifier que les opérations ont bien été effectués assert, AssertionError Invariants sont utilisées pour : Vérifier que les invariants de l'algorithme sont préservés. assert, AssertionError 84

85 Exemple public class Stack { public Stack(int capacity) { array=new int[capacity]; public void push(int value) { if (top<=array.length) throw new IllegalStateException("stack is full"); array[top++]=value; assert array[top]==value; assert top>=0 && top<array.length; public int pop() { if (top<=0) throw new IllegalStateException("stack is empty"); int value=array[--top]; assert top>=0 && top<array.length; return value; private int top; private final int[] array; Pré-condition Post-condition Invariant 85

86 Exemple avec commentaires Le code doivent être commentées public class Stack { /** This class implements a fixed size stack of integers. remi */ public class Stack { /** put the value on top of the stack. value value to push in the stack. IllegalStateException if the stack is full. */ public void push(int value) {... /** remove the value from top of the stack. the value on top of the stack. IllegalStateException if the stack is empty. */ public int pop() { 86

87 Utilisation de Javadoc C:\java-avancé>javadoc src\stack.java Loading source file src\stack.java... Constructing Javadoc information... Standard Doclet version beta3 Building tree for all the packages and classes... Generating Stack.html... Generating package-frame.html

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

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

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

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

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

Classe Interne, Anonyme & Enumération

Classe Interne, Anonyme & Enumération Java Avancé Classe Interne, Anonyme & Enumération Rémi Forax forax@univ-mlv.fr 1 Rappel Nous nous intéressons aujourd'hui à deux formes de type abstrait en Java Les interfaces Les classes abstraites Les

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

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

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

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

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

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

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

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

Java Licence Professionnelle CISII, 2009-2010

Java Licence Professionnelle CISII, 2009-2010 Licence Professionnelle CISII, 2009-2010 Cours 1 : Introduction à Java A. Belaïd abelaid@loria.fr Cours disponible sur le site : http://www.loria.fr/~abelaid puis Teaching 1 Fonctionnement 12 séances :

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

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

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

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

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

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

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

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

Programmation Orientée Objet Java

Programmation Orientée Objet Java Programmation Orientée Objet Java Bertrand Estellon Département Informatique et Interactions Aix-Marseille Université 12 novembre 2014 Bertrand Estellon (DII AMU) Programmation Orientée Objet Java 12 novembre

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

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

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

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

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

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

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

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

Programmation Objet I

Programmation Objet I 2002-2003 UFR Mathématique de la Décision Deuxième Année de DEUG Science mention MASS Programmation Objet I Fabrice Rossi et Fabien Napolitano c Fabrice Rossi et Fabien Napolitano, 2002-2003 Le code de

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

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

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

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

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3. 1. Structure d un programme C Un programme est un ensemble de fonctions. La fonction "main" constitue le point d entrée pour l exécution. Un exemple simple : #include int main() { printf ( this

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

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java Info0101 Intro. à l'algorithmique et à la programmation Cours 3 Le langage Java Pierre Delisle, Cyril Rabat et Christophe Jaillet Université de Reims Champagne-Ardenne Département de Mathématiques et Informatique

Plus en détail

Tp 1 correction. Structures de données (IF2)

Tp 1 correction. Structures de données (IF2) Tp 1 correction Structures de données (IF2) Remarque générale : compilez et exécutez le code au-fur-et-à mesure de son écriture. Il est plus facile de corriger une petite portion de code délimitée que

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

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

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

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

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

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

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

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

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

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

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

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

Chapitre 2. Classes et objets

Chapitre 2. Classes et objets Chapitre 2: Classes et Objets 1/10 Chapitre 2 Classes et objets Chapitre 2: Classes et Objets 2/10 Approche Orientée Objet Idée de base de A.O.O. repose sur l'observation de la façon dont nous procédons

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

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

Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée

Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée forax at univ-mlv dot fr - ParisJUG Java.next() - Mars 2012 What Else? Lambda == Inner class? Java a des lambdas depuis la version 1.1 Exemple utilisant

Plus en détail

Programmation Orientée Objet application au langage Java Version Novembre 2007

Programmation Orientée Objet application au langage Java Version Novembre 2007 Programmation Orientée Objet application au langage Java Version Novembre 2007 Mickaël BARON - 2007 mailto:baron.mickael@gmail.com ou mailto:mickael.baron@serli.com SERLI informatique SERLI : www.serli.com

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

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

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

Polycopié Cours Programmation Orientée Objet sous Java Programme : Filière SMI S5

Polycopié Cours Programmation Orientée Objet sous Java Programme : Filière SMI S5 UNIVERISTE MOHAMMED PREMIER Faculté des Sciences d Oujda Oujda - Maroc Polycopié Cours Programmation Orientée Objet sous Java Programme : Filière SMI S5 Pr. El Mostafa DAOUDI Département de Mathématiques

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

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

SHERLOCK 7. Version 1.2.0 du 01/09/09 JAVASCRIPT 1.5

SHERLOCK 7. Version 1.2.0 du 01/09/09 JAVASCRIPT 1.5 SHERLOCK 7 Version 1.2.0 du 01/09/09 JAVASCRIPT 1.5 Cette note montre comment intégrer un script Java dans une investigation Sherlock et les différents aspects de Java script. S T E M M E R I M A G I N

Plus en détail

Conventions d écriture et outils de mise au point

Conventions d écriture et outils de mise au point Logiciel de base Première année par alternance Responsable : Christophe Rippert Christophe.Rippert@Grenoble-INP.fr Introduction Conventions d écriture et outils de mise au point On va utiliser dans cette

Plus en détail

Programmation Par Objets et Langage Java

Programmation Par Objets et Langage Java Programmation Par Objets et Langage Java Partie II. Introduction à Java Najib Tounsi Ecole Mohammadia d'ingénieurs, Rabat Année 2011/2012 1ère année Génie Informatique http://www.emi.ac.ma/ntounsi/cours/java/poojavapart-2.pdf

Plus en détail

Notion de thread (1/2)

Notion de thread (1/2) Notion de thread (1/2) La machine virtuelle java (JVM) permet d'exécuter plusieurs traitements en parallèle (en pratique, ils s'exécutent par tranche et en alternance sur le processeur). Ces traitements

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

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

La technologie Java Card TM

La technologie Java Card TM Présentation interne au CESTI La technologie Java Card TM sauveron@labri.u-bordeaux.fr http://dept-info.labri.u-bordeaux.fr/~sauveron 8 novembre 2002 Plan Qu est ce que Java Card? Historique Les avantages

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

2 e édition JAVA 5 et 6. Jérôme Bougeault. TSoft et Groupe Eyrolles, 2003, 2008, ISBN : 978-2-21212250-3

2 e édition JAVA 5 et 6. Jérôme Bougeault. TSoft et Groupe Eyrolles, 2003, 2008, ISBN : 978-2-21212250-3 2 e édition JAVA 5 et 6 Jérôme Bougeault TSoft et Groupe Eyrolles, 2003, 2008, ISBN : 978-2-21212250-3 Classes et objets Les constructeurs Propriétés Les méthodes L héritage Les interfaces Les relations

Plus en détail

F. Barthélemy. 17 mai 2005

F. Barthélemy. 17 mai 2005 Typage de la généricité en Java F. Barthélemy 17 mai 2005 1 Le shéma général La g én éricit é en Java est un ajout r éalis é sur un langage existant depuis d éjà une dizaine d ann ées, avec des contraintes

Plus en détail

Cours de Programmation 2

Cours de Programmation 2 Cours de Programmation 2 Programmation à moyenne et large échelle 1. Programmation modulaire 2. Programmation orientée objet 3. Programmation concurrente, distribuée 4. Programmation monadique 5. Les programmes

Plus en détail

Cours d initiation à la programmation en C++ Johann Cuenin

Cours d initiation à la programmation en C++ Johann Cuenin Cours d initiation à la programmation en C++ Johann Cuenin 11 octobre 2014 2 Table des matières 1 Introduction 5 2 Bases de la programmation en C++ 7 3 Les types composés 9 3.1 Les tableaux.............................

Plus en détail

Génie Logiciel avec Ada. 4 février 2013

Génie Logiciel avec Ada. 4 février 2013 Génie Logiciel 4 février 2013 Plan I. Généralités II. Structures linéaires III. Exceptions IV. Structures arborescentes V. Dictionnaires I. Principes II. Notions propres à la POO I. Principes Chapitre

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

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

Exercices INF5171 : série #3 (Automne 2012)

Exercices INF5171 : série #3 (Automne 2012) Exercices INF5171 : série #3 (Automne 2012) 1. Un moniteur pour gérer des ressources Le moniteur MPD 1 présente une première version d'un moniteur, exprimé en pseudo-mpd, pour gérer des ressources le nombre

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

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

Java c est quoi? Java pourquoi?

Java c est quoi? Java pourquoi? Grandes lignes du cours Cours JAVA : Le bases du langage Java. Version 3.02 Julien Sopena 1 1 julien.sopena@lip6.fr Équipe REGAL - INRIA Rocquencourt LIP6 - Université Pierre et Marie Curie Licence professionnelle

Plus en détail

Introduction à JDBC. Accès aux bases de données en Java

Introduction à JDBC. Accès aux bases de données en Java Introduction à JDBC Accès aux bases de données en Java Eric Cariou Université de Pau et des Pays de l'adour Département Informatique Eric.Cariou@univ-pau.fr 1 Introduction JDBC : Java Data Base Connectivity

Plus en détail

Programmation Orientée Objets Le Langage JAVA

Programmation Orientée Objets Le Langage JAVA Module IP1 Programmation Orientée Objets Le Langage JAVA Amaury Habrard Université de Saint-Etienne amaury.habrard@univ-st-etienne.fr Mis à jour par François-Xavier Dupé Université d Aix-Marseille francois-xavier.dupe@lif.univ-mrs.fr

Plus en détail

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation impérative et structures de données simples Introduction au langage C Sandrine Blazy - 1ère année 24 octobre 2007 Cours d Algorithmique-Programmation

Plus en détail

Java - la plateforme

Java - la plateforme Java - la plateforme Java la plateforme Java? VM GC JIT Java Aujourd'hui 3 environnements d'exécutions différents Java ME (Micro Edition) pour PDA, téléphone Android (Java SE moins certain paquetages)

Plus en détail

Programmation en Java IUT GEII (MC-II1) 1

Programmation en Java IUT GEII (MC-II1) 1 Programmation en Java IUT GEII (MC-II1) 1 Christophe BLANC - Paul CHECCHIN IUT Montluçon Université Blaise Pascal Novembre 2009 Christophe BLANC - Paul CHECCHIN Programmation en Java IUT GEII (MC-II1)

Plus en détail

Arbres binaires de recherche

Arbres binaires de recherche 1 arbre des comparaisons 2 recherche dichotomique l'arbre est recalculé à chaque recherche 2 5 3 4 7 9 1 6 1 2 3 4 5 6 7 9 10 conserver la structure d'arbre au lieu de la reconstruire arbre binaire de

Plus en détail

4. Outils pour la synchronisation F. Boyer, Laboratoire Lig Fabienne.Boyer@imag.fr

4. Outils pour la synchronisation F. Boyer, Laboratoire Lig Fabienne.Boyer@imag.fr 4. Outils pour la synchronisation F. Boyer, Laboratoire Lig Fabienne.Boyer@imag.fr Le problème Insuffisance des solutions de base (verrous) Les solutions de plus haut niveau Les Sémaphores Les Moniteurs

Plus en détail

Apprendre Java en 154 minutes

Apprendre Java en 154 minutes Apprendre Java en 154 minutes Tutorial Java 1.6 - HESB-TI Stéphanie Calderara José R. Beuret Quentin Cosendey Mai 2008 Table des matières 1 Objet, classe et modificateur 3 1.1 Le premier pas..........................

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

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme Rappel Ralf Treinen Université Paris Diderot UFR Informatique Laboratoire Preuves, Programmes et Systèmes treinen@pps.univ-paris-diderot.fr 6 mai 2015 Jusqu'à maintenant : un petit langage de programmation

Plus en détail

Introduction au langage C

Introduction au langage C Introduction au langage C Cours 1: Opérations de base et premier programme Alexis Lechervy Alexis Lechervy (UNICAEN) Introduction au langage C 1 / 23 Les premiers pas Sommaire 1 Les premiers pas 2 Les

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

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

OpenPaaS Le réseau social d'entreprise

OpenPaaS Le réseau social d'entreprise OpenPaaS Le réseau social d'entreprise Spécification des API datastore SP L2.3.1 Diffusion : Institut MinesTélécom, Télécom SudParis 1 / 12 1OpenPaaS DataBase API : ODBAPI...3 1.1Comparaison des concepts...3

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