Modèle d'exécution Java
|
|
- Viviane Barbeau
- il y a 8 ans
- Total affichages :
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 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étailRAPPELS 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étailProgrammer 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étailas 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étailCours 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étailChapitre 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étailClasse 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étailJava 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étailProgrammation 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étailLangage 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étailProgrammation 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étailLicence 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étailExceptions. 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étailCorrigé 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étailTP 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étailJava 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étailPour 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étailExercices 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étailThreads. 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étailAuto-é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étailChapitre 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étailPlan 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étailUtilisation 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étailIntroduction à 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étailProgrammation 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étailPROGRAMMATION 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étailJava 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étailCours 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étailJava 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étailLMI 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étailPackage 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étailBases 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étailINTRODUCTION 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étailGé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étailProgrammation 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étailInitiation à 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étailINF 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étailINITIATION 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étailStructure 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étail1. 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étailUn 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étailInfo0101 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étailTp 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étailJava 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étailSupport 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étailLa 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étailTD3: 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étailIntroduction 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étailP 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étailFaculté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étailPolymorphisme, 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étailEncapsulation. 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étailJAVA. 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étailPage 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étailProjet 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étailChapitre 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étailIntroduction. 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étailHé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étailLambda! 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étailProgrammation 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étailIntroduction : 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étail4. 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étailTP1 : 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étailPolycopié 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étailApprendre 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étailSynchro 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étailSHERLOCK 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étailConventions 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étailProgrammation 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étailNotion 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étailALGORITHMIQUE 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étail1 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étailLa 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étailAide 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étail2 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étailF. 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étailCours 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étailCours 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étailGé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étailPremiers 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étailJava 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étailExercices 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étailLangage 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étailChapitre 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étailJava 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étailIntroduction à 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étailProgrammation 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étailCours 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étailJava - 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étailProgrammation 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étailArbres 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étail4. 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étailApprendre 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étailRMI. 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étailRappel. 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étailIntroduction 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étailCommunication 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étailDé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étailOpenPaaS 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étailRemote 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