Java. Java Modeling Language (JML) Qu est-ce que JML? Java (suite) Conception par Contrat. Invariants, Pré-/Postconditions

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

Download "Java. Java Modeling Language (JML) Qu est-ce que JML? Java (suite) Conception par Contrat. Invariants, Pré-/Postconditions"

Transcription

1 Java Java Modeling Language (JML) Arnaud LANOIX Université Nancy 2 Master1 GL Langage de Programmation Orientée Objet développé par Sun Projet OAK (1991), Java (1995),...Java 1.5 (2004) Langage interprété = la JVM (Java Virtual Machine est multi-plateforme (windows, linux, macosx, etc.) : javac Program.java la compilation produit un fichier Program.class (Bytecode) : java Fichier exécution / interprétation du Bytecode par la JVM Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 1 / 52 Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 2 / 52 Java (suite) Qu est-ce que JML? Repose sur les concepts dela programmation Objet : Encapsulation des données : public, private, protected Héritage : Class A extends B {... Polymorphisme notion de classes (Définition du type objets) et d instances de classes (Objets) Personne moi = new Personne("Arnaud", "Lanoix") ; Nombreux cours de Java disponible sur le Web : Java Modeling Language = langage de modélisation formelle associé au langage de programmation Java Inspiré par Effeil : conception par contrat Auteur de départ : Gary T. Leavens, 1999 Exprime des propriétés sur les classes Java : invariants, pré-/postconditions, etc. Supporté par différents outils : JML Runtime Assertion Checker, JMLUnit, ESC/java2, etc. Site de référence : Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 3 / 52 Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 4 / 52 Invariants, Pré-/Postconditions Conception par Contrat logique d Hoare : pré/-postconditions des programmes Invariant = propriété toujours vraie quelque soit l état du système Précondition = propriété vraie avant l invocation d une méthode Postcondition = propriété vraie après à la terminaison d une méthode Design by Contract : introduit dans le langage Eiffel Contrat entre le système qui invoque une méthode et la méthode qui est invoquée : invariant : {precondition method() {postcondition L environnement appelant s engage à remplir les préconditions d une méthode lors de l invocation de celle-ci La méthode s engage à établir ses postconditions lorsqu elle est invoquée La méthode et l environnement s engagent également à maintenir l invariant de la classe Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 5 / 52 Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 6 / 52

2 Un premier exemple Un premier exemple Sqrt.java /** double x réel positif double racine carrée de x requires x >= 0.0 ensures x == \result * \result ; public static double sqrt(double x) { Sqrt.java /** double x réel positif double racine carrée de x requires x >= 0.0 ensures x == \result * \result ; public static double sqrt(double x) { Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 8 / 52 Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 8 / 52 Un premier exemple Un premier exemple Sqrt.java /** double x réel positif double racine carrée de x requires x >= 0.0 ensures x == \result * \result ; public static double sqrt(double x) { Sqrt.java /** double x réel positif double racine carrée de x requires x >= 0.0 ensures x == \result * \result ; public static double sqrt(double x) { Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 8 / 52 Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 8 / 52 Un premier exemple (explication) Annotations JML requires x >= 0.0 ; Précondition assurant que le paramètre x est bien un réel positif ensures x == \result * \result ; Postcondition assurant que le résultat \result est bien la racine carrée de x à eps \result : identifie le résultat d une méthode Une spécification JML s exprime par un programme Java annoté : les annotations JML sont écrites au niveau du code Java les annotations JML se placent dans des blocs de commentaires Java spécifiques sur une seule ligne commencant par dans un bloc délimité par les annotations JML sont cohérentes avec la syntaxe Java. un programme Java annoté continue à fonctionner normalement : compilation, exécution, etc. Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 9 / 52 Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 10 / 52

3 Clauses de spécification Expression des prédicats JML Une modélisation JML est composée de clauses (des prédicats) décrivant la classe ou les méthodes : Spécifications de types : partie statique du modèle initially predicat JML invariant predicat JML constraints predicat JML Spécifications de méthodes : partie dynamique du modèle requires predicat JML diverges predicat JML assignable predicat JML ensures predicat JML signals predicat JML Les prédicats JML predicat JML sont exprimées à l aide des attributs (variables) et des paramètres des méthodes de la classe java annotée d appel à des méthodes pures des opérateurs du langage Java opérateurs arithmétiques opérateurs booléens d opérateurs spécifiques à JML nouveau opérateurs arithmétiques nouveau opérateurs booléens opérateurs avant/après opérateurs de typage Objet Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 11 / 52 Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 12 / 52 Méthodes pures Opérateurs arithmétiques Une méthode qui ne modifie aucun attribut est dite pure et peuvent être utilisée dans les prédicats JML. Les prédicats JML ne doivent pas changer l état du système : pas d effet de bord Les méthode de consultation des classes de l API Java sont considérées comme pures On peut déclarer qu une méthode est pure à l aide du modificateur pure : class C { int val ; invariant getval() >= 0 ; ensures \result == val ; public pure */ int getval() {return val ; Opérateurs binaires Symbole Fonction Champ d application + addition entiers ou réels - soustraction entiers ou réels * multiplication entiers ou réels / division réelle réels / division entière entiers % reste de la division entière entiers Opérations généralisées : \sum, \product, \min, \max, \num of Symbole (\sum int x ; x >= 1 & x <= 10 ; x + 3) 1 x 10 Fonction x N x + 3 Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 14 / 52 Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 15 / 52 Opérateurs arithmétiques Opérateurs booléens Opérateurs binaires Symbole Fonction Champ d application + addition entiers ou réels - soustraction entiers ou réels * multiplication entiers ou réels / division réelle réels / division entière entiers % reste de la division entière entiers Opérations généralisées : \sum, \product, \min, \max, \num of Symbole (\sum int x ; x >= 1 & x <= 10 ; x + 3) 1 x 10 Fonction x N x + 3 Opérateurs logiques Symbole Fonction & ET logique OU logique ^ OU logique exclusif! négation logique ==> Implication <==> Equivalence Opérateurs relationnels Symbole Fonction > supérieur >= supérieur ou égal < inférieur <= inférieur ou égal == égal!= différent Quantification universelle Symbole (\forall Type v ; predicat1(v) ; predicat2(v)) Fonction v.(v Type predicat1(v) predicat2(v)) Quantification existentielle Symbole (\exists Type v ; predicat1(v) ; predicat2(v)) Fonction v.(v Type predicat1(v) predicat2(v)) Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 15 / 52 Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 16 / 52

4 Opérateurs booléens Opérateurs avant/après Opérateurs logiques Symbole Fonction & ET logique OU logique ^ OU logique exclusif! négation logique ==> Implication <==> Equivalence Opérateurs relationnels Symbole Fonction > supérieur >= supérieur ou égal < inférieur <= inférieur ou égal == égal!= différent Certaines clauses font référence à l état avant et à l état après l exécution d une méthode (prédicat avant-après) \result fait référence au résultat de la méthode (état après) \old(x) permet de faire référence à la valeur de x à l état d avant x représente la valeur de x après l exécution de la méthode Quantification universelle Symbole (\forall Type v ; predicat1(v) ; predicat2(v)) Fonction v.(v Type predicat1(v) predicat2(v)) Quantification existentielle Symbole (\exists Type v ; predicat1(v) ; predicat2(v)) Fonction v.(v Type predicat1(v) predicat2(v)) \not modified(x) est une expression booléenne qui indique que x n a pas été modifié lors de l exécution de la méthode (i) si x est un type simple, x == \old(x) (ii) si x est un objet, x.equals(\old(x)) Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 16 / 52 Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 17 / 52 Opérateurs de typage Objet Spécifications de types \type(maclasse) retourne le type décrit par la spécification de la classe MaClasse \typeof(monobjet) retourne le type de l objet monobjet < : permet de savoir si un type est un sous-type (héritage) d un autre \typeof(o) < : \type(personne) est vrai si le type de l objet o est un sous-type de la classe Personne, c.a.d. que o est une instance d une sous-classe de Personne Propriétés portant sur les attributs de la classe. Contraintes initiales : clause initially propriété qui doit être établies à la création de l objet Invariant de classe : clause invariant propriété portant sur les attributs de la classe qui doit être vraie dans tous les états visibles du système Etat visible = état atteint après l exécution d une méthode Contraintes historiques : clause constraint propiété entre un état visible et l état visible précédent qui doit être vraie dans tous les états du système = invariant dynamique une clause constraints ne doit pas être vérifiée après un constructeur de classe s exprime grâce à des prédicats avant/après : \old(x) <= x Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 18 / 52 Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 19 / 52 Spécifications de types Spécifications de types Propriétés portant sur les attributs de la classe. Contraintes initiales : clause initially propriété qui doit être établies à la création de l objet Invariant de classe : clause invariant propriété portant sur les attributs de la classe qui doit être vraie dans tous les états visibles du système Etat visible = état atteint après l exécution d une méthode Contraintes historiques : clause constraint propiété entre un état visible et l état visible précédent qui doit être vraie dans tous les états du système = invariant dynamique une clause constraints ne doit pas être vérifiée après un constructeur de classe s exprime grâce à des prédicats avant/après : \old(x) <= x Propriétés portant sur les attributs de la classe. Contraintes initiales : clause initially propriété qui doit être établies à la création de l objet Invariant de classe : clause invariant propriété portant sur les attributs de la classe qui doit être vraie dans tous les états visibles du système Etat visible = état atteint après l exécution d une méthode Contraintes historiques : clause constraint propiété entre un état visible et l état visible précédent qui doit être vraie dans tous les états du système = invariant dynamique une clause constraints ne doit pas être vérifiée après un constructeur de classe s exprime grâce à des prédicats avant/après : \old(x) <= x Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 19 / 52 Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 19 / 52

5 Spécifications de comportements Spécifications de comportements Propriétés relatives aux comportements autorisés des méthodes. Préconditions : clause requires condition qui doit être remplie par le système et les paramètres de la méthode pour que la méthode puisse être appelée Divergence : clause diverges condition sous laquelle la méthode peut ne pas terminer, i.e. boucles infinies, etc. Champs modifiés : clause assignable liste des attributs qui sont modifiés par l exécution de la méthode Postcondition normale : clause ensures condition que la méthode s engage à établir lorsqu elle termine normalement (c.a.d. sans lever d exception). Prédicats avant/après Propriétés relatives aux comportements autorisés des méthodes. Préconditions : clause requires condition qui doit être remplie par le système et les paramètres de la méthode pour que la méthode puisse être appelée Divergence : clause diverges condition sous laquelle la méthode peut ne pas terminer, i.e. boucles infinies, etc. Champs modifiés : clause assignable liste des attributs qui sont modifiés par l exécution de la méthode Postcondition normale : clause ensures condition que la méthode s engage à établir lorsqu elle termine normalement (c.a.d. sans lever d exception). Prédicats avant/après Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 20 / 52 Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 20 / 52 Spécifications de comportements Spécifications de comportements Propriétés relatives aux comportements autorisés des méthodes. Préconditions : clause requires condition qui doit être remplie par le système et les paramètres de la méthode pour que la méthode puisse être appelée Divergence : clause diverges condition sous laquelle la méthode peut ne pas terminer, i.e. boucles infinies, etc. Champs modifiés : clause assignable liste des attributs qui sont modifiés par l exécution de la méthode Postcondition normale : clause ensures condition que la méthode s engage à établir lorsqu elle termine normalement (c.a.d. sans lever d exception). Prédicats avant/après Propriétés relatives aux comportements autorisés des méthodes. Préconditions : clause requires condition qui doit être remplie par le système et les paramètres de la méthode pour que la méthode puisse être appelée Divergence : clause diverges condition sous laquelle la méthode peut ne pas terminer, i.e. boucles infinies, etc. Champs modifiés : clause assignable liste des attributs qui sont modifiés par l exécution de la méthode Postcondition normale : clause ensures condition que la méthode s engage à établir lorsqu elle termine normalement (c.a.d. sans lever d exception). Prédicats avant/après Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 20 / 52 Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 20 / 52 Exemple : gestionnaire de cours Exemple : modélisation Objet (exemple vu en B) Une classe Etudiant 2 attributs : nom et prenom 1 constructeur : Etudiant(nom, prenom) etc. Un cours a max des places disponibles. Un étudiant (nom, prénom) peut s inscrire à cours. Seul un étudiant encore jamais inscrit peut s inscrire. Un étudiant inscrit peut passer l examen. S il réussi l examen, il obtient le diplôme ; sinon, il est collé. Un étudiant collé peut repasser une fois l examen avant d être définitivement refusé. 1 méthode : tostring() Une classe Cours 5 attributs : max, inscrits, colles, refuses et diplomes 1 constructeur : Cours(maxi) 5 méthodes : nouvel etudiant(etudiant), test reussi(etudiant), test rate colle(etudiant), test rate refuse(etudiant), tostring() Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 21 / 52 Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 22 / 52

6 Exemple : modélisation Objet Une classe Etudiant 2 attributs : nom et prenom 1 constructeur : Etudiant(nom, prenom) 1 méthode : tostring() Une classe Cours 5 attributs : max, inscrits, colles, refuses et diplomes 1 constructeur : Cours(maxi) 5 méthodes : nouvel etudiant(etudiant), test reussi(etudiant), test rate colle(etudiant), test rate refuse(etudiant), tostring() Etudiant.java public class Etudiant { private String nom ; private String prenom ; Etudiant(String nom, String prenom) { this.nom = nom ; this.prenom = prenom ; public String tostring() { return prenom + " " + nom ; Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 22 / 52 Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 24 / 52 Etudiant.java (JML) public class Etudiant { private spec public non null */ String nom ; private spec public non null */ String prenom ; Etudiant(String nom, String prenom) { this.nom = nom ; this.prenom = prenom ; public String tostring() { return prenom + " " + nom ; Etudiant.java (JML) public class Etudiant { private spec public non null */ String nom ; private spec public non null */ String prenom invariant!nom.equals("") &!prenom.equals("") ; Etudiant(String nom, String prenom) { this.nom = nom ; this.prenom = prenom ; public String tostring() { return prenom + " " + nom ; Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 24 / 52 Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 24 / 52 Cours.java import java.util.* ; public void nouvel etudiant(etudiant etudiant) { inscrits.add(etudiant) ; public class Cours { private int max ; private HashSet inscrits ; private HashSet colles ; private HashSet refuses ; private HashSet diplomes ; Cours(int maxi) { max = maxi ; inscrits = new HashSet(max) ; colles = new HashSet(max) ; refuses = new HashSet(max) ; diplomes = new HashSet(max) ; public void test rate refuse(etudiant etudiant) { refuses.add(etudiant) ; public String tostring() { Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 26 / 52 Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 28 / 52

7 Cours.java (JML) import java.util.* ; public class Cours { private spec public */ int max ; private spec public */ HashSet inscrits ; private spec public */ HashSet colles ; private spec public */ HashSet refuses ; private spec public */ HashSet diplomes invariant max > 0 invariant inscrits.size() <= max invariant (\forall Etudiant e ; colles.contains(e) inscrits.contains(e)) ; Cours.java (JML) import java.util.* ; public class Cours { private spec public */ int max ; private spec public */ HashSet inscrits ; private spec public */ HashSet colles ; private spec public */ HashSet refuses ; private spec public */ HashSet diplomes invariant max > 0 invariant inscrits.size() <= max invariant (\forall Etudiant e ; colles.contains(e) inscrits.contains(e)) ; Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 30 / 52 Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 30 / 52 Cours.java (JML) import java.util.* ; public class Cours { private spec public */ int max ; private spec public */ HashSet inscrits ; private spec public */ HashSet colles ; private spec public */ HashSet refuses ; private spec public */ HashSet diplomes invariant max > 0 invariant inscrits.size() <= max invariant (\forall Etudiant e ; colles.contains(e) inscrits.contains(e)) ; Cours.java (JML) import java.util.* ; public class Cours { private spec public */ int max ; private spec public */ HashSet inscrits ; private spec public */ HashSet colles ; private spec public */ HashSet refuses ; private spec public */ HashSet diplomes invariant max > 0 invariant inscrits.size() <= max invariant (\forall Etudiant e ; colles.contains(e) inscrits.contains(e)) ; Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 30 / 52 Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 30 / 52 Cours.java (JML) import java.util.* ; public class Cours { private spec public */ int max ; private spec public */ HashSet inscrits ; private spec public */ HashSet colles ; private spec public */ HashSet refuses ; private spec public */ HashSet diplomes invariant max > 0 invariant inscrits.size() <= max invariant (\forall Etudiant e ; colles.contains(e) inscrits.contains(e)) initially inscrits.isempty() initially colles.isempty() initially refuses.isempty() initially diplomes.isempty() requires maxi > 0 ; Cours(int maxi) { max = maxi ; inscrits = new HashSet(max) ; colles = new HashSet(max) ; refuses = new HashSet(max) ; diplomes = new HashSet(max) ; Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 30 / 52 Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 32 / 52

8 @ initially inscrits.isempty() initially colles.isempty() initially refuses.isempty() initially diplomes.isempty() requires maxi > 0 ; Cours(int maxi) { max = maxi ; inscrits = new HashSet(max) ; colles = new HashSet(max) ; refuses = new HashSet(max) ; diplomes = new HashSet(max) initially inscrits.isempty() initially colles.isempty() initially refuses.isempty() initially diplomes.isempty() requires maxi > 0 ; Cours(int maxi) { max = maxi ; inscrits = new HashSet(max) ; colles = new HashSet(max) ; refuses = new HashSet(max) ; diplomes = new HashSet(max) ; Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 32 / 52 Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 32 / requires!inscrits.contains(etudiant) requires!diplomes.contains(etudiant) requires!refuses.contains(etudiant) requires inscrits.size() < max ensures inscrits.contains(etudiant) ; public void nouvel etudiant(etudiant etudiant) { inscrits.add(etudiant) ensures diplomes.contains(etudiant) requires!inscrits.contains(etudiant) requires!diplomes.contains(etudiant) requires!refuses.contains(etudiant) requires inscrits.size() < max ensures inscrits.contains(etudiant) ; public void nouvel etudiant(etudiant etudiant) { inscrits.add(etudiant) ensures diplomes.contains(etudiant) ; Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 34 / 52 Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 34 / requires!inscrits.contains(etudiant) requires!diplomes.contains(etudiant) requires!refuses.contains(etudiant) requires inscrits.size() < max ensures inscrits.contains(etudiant) ; public void nouvel etudiant(etudiant etudiant) { inscrits.add(etudiant) ensures diplomes.contains(etudiant) requires!inscrits.contains(etudiant) requires!diplomes.contains(etudiant) requires!refuses.contains(etudiant) requires inscrits.size() < max ensures inscrits.contains(etudiant) ; public void nouvel etudiant(etudiant etudiant) { inscrits.add(etudiant) ensures diplomes.contains(etudiant) ; Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 34 / 52 Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 34 / 52

9 @ requires!inscrits.contains(etudiant) requires!diplomes.contains(etudiant) requires!refuses.contains(etudiant) requires inscrits.size() < max ensures inscrits.contains(etudiant) ; public void nouvel etudiant(etudiant etudiant) { inscrits.add(etudiant) ensures diplomes.contains(etudiant) requires!inscrits.contains(etudiant) requires!diplomes.contains(etudiant) requires!refuses.contains(etudiant) requires inscrits.size() < max ensures inscrits.contains(etudiant) ; public void nouvel etudiant(etudiant etudiant) { inscrits.add(etudiant) ensures diplomes.contains(etudiant) ; Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 34 / 52 Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 34 / requires!colles.contains(etudiant) ensures colles.contains(etudiant) requires colles.contains(etudiant) ensures!colles.contains(etudiant) ensures refuses.contains(etudiant) ; public void test rate refuse(etudiant etudiant) { refuses.add(etudiant) ; Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 36 / requires!colles.contains(etudiant) ensures colles.contains(etudiant) requires colles.contains(etudiant) ensures!colles.contains(etudiant) ensures refuses.contains(etudiant) ; public void test rate refuse(etudiant etudiant) { refuses.add(etudiant) ; Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 36 / requires!colles.contains(etudiant) ensures colles.contains(etudiant) requires colles.contains(etudiant) ensures!colles.contains(etudiant) ensures refuses.contains(etudiant) ; public void test rate refuse(etudiant etudiant) { refuses.add(etudiant) ; Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 36 / requires!colles.contains(etudiant) ensures colles.contains(etudiant) requires colles.contains(etudiant) ensures!colles.contains(etudiant) ensures refuses.contains(etudiant) ; public void test rate refuse(etudiant etudiant) { refuses.add(etudiant) ; Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 36 / 52

10 @ requires!colles.contains(etudiant) ensures colles.contains(etudiant) requires colles.contains(etudiant) ensures!colles.contains(etudiant) ensures refuses.contains(etudiant) ; public void test rate refuse(etudiant etudiant) { refuses.add(etudiant) ; Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 36 / requires!colles.contains(etudiant) ensures colles.contains(etudiant) requires colles.contains(etudiant) ensures!colles.contains(etudiant) ensures refuses.contains(etudiant) ; public void test rate refuse(etudiant etudiant) { refuses.add(etudiant) ; Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 36 / 52 JML Runtime Assertion Checker (RAC) public String tostring() { return "Inscrits = " + inscrits + ", Diplomes = " + diplomes + ", Colles = " + colles + ", Refuses = " + refuses ; Outil de base de JML qui compile un code Java enrichi pour la vérification des différentes annotations JML introduites (ligne de commande) jml : type-checker pour les assertions JML jmlc : compilateur JML/Java bytecode Java enrichi par les assertions JML jmlrac : exécuteur Java peut soulève des exceptions spécifiques aux différentes clauses JML Outils disponibles dans le package JMLSpecs ici : Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 38 / 52 Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 39 / 52 Exceptions RAC Méthode test rate colle annotée JMLAssertionError JMLPreconditionError JMLEntryPreconditionError JMLInternalPreconditionError JMLPostconditionError JMLNormalPostconditionError JMLInternalNormalPostconditionError JMLExitNormalPostconditionError JMLExceptionalPostconditionError JMLInternalExceptionalPostconditionError JMLExitExceptionalPostconditionError JMLInvariantError JMLHistoryConstraintsError requires!colles.contains(etudiant) ensures colles.contains(etudiant) ; Les assertions invariant, requires, ensures,...vont être transformées en test et en levée d exceptions Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 40 / 52 Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 42 / 52

11 Méthode test rate colle : principe du RAC Méthode test rate colle : principe du RAC throws JMLAssertionError { if (!(inscrits.contains(etudiant) /* requires */ &!colles.contains(etudiant))) { throw new JMLExitPreconditionError() ; if (!colles.contains(etudiant)) { /* ensures */ throw New JMLExitNormalPostconditionError() ; throws JMLAssertionError { if (!(inscrits.contains(etudiant) /* requires */ &!colles.contains(etudiant))) { throw new JMLExitPreconditionError() ; if (!colles.contains(etudiant)) { /* ensures */ throw New JMLExitNormalPostconditionError() ; Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 44 / 52 Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 44 / 52 Méthode test rate colle : principe du RAC Méthode test rate colle : principe du RAC throws JMLAssertionError { if (!(inscrits.contains(etudiant) /* requires */ &!colles.contains(etudiant))) { throw new JMLExitPreconditionError() ; if (!colles.contains(etudiant)) { /* ensures */ throw New JMLExitNormalPostconditionError() ; throws JMLAssertionError { if (!(inscrits.contains(etudiant) /* requires */ &!colles.contains(etudiant))) { throw new JMLExitPreconditionError() ; if (!colles.contains(etudiant)) { /* ensures */ throw New JMLExitNormalPostconditionError() ; Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 44 / 52 Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 44 / 52 Méthode test rate colle : principe du RAC Méthode test rate colle : principe du RAC throws JMLAssertionError { if (!(inscrits.contains(etudiant) /* requires */ &!colles.contains(etudiant))) { throw new JMLExitPreconditionError() ; if (!colles.contains(etudiant)) { /* ensures */ throw New JMLExitNormalPostconditionError() ; public void test rate colle(etudiant etudiant) throws JMLAssertionError { if (!(inscrits.contains(etudiant) /* requires */ &!colles.contains(etudiant))) { throw new JMLExitPreconditionError() ; if (!colles.contains(etudiant)) { /* ensures */ throw New JMLExitNormalPostconditionError() ; Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 44 / 52 Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 44 / 52

12 Méthode test rate colle : principe du RAC public void test rate colle(etudiant etudiant) throws JMLAssertionError { if (!(inscrits.contains(etudiant) /* requires */ &!colles.contains(etudiant))) { throw new JMLExitPreconditionError() ; if (!colles.contains(etudiant)) { /* ensures */ throw New JMLExitNormalPostconditionError() ; Exemple : Main.java public class Main { public static void main(string args[]) { Cours GL = new Cours(3) ; Etudiant pascal = new Etudiant("Fontaine", "Pascal") ; Etudiant nono = new Etudiant("Lanoix", "Arnaud") ; Etudiant john = new Etudiant("Doe", "John") ; Etudiant totoro = new Etudiant("", "Totoro") ; Etudiant tao = new Etudiant("Kawai", "Tao") ; Etudiant tolkien = new Etudiant("Tolkien", "J.R.R") ; GL.nouvel etudiant(pascal) ; GL.nouvel etudiant(nono) ; GL.nouvel etudiant(john) ; GL.nouvel etudiant(tolkien) ; Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 44 / 52 Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 46 / 52 Exemple : Main.java public class Main { public static void main(string args[]) { Cours GL = new Cours(3) ; Etudiant pascal = new Etudiant("Fontaine", "Pascal") ; Etudiant nono = new Etudiant("Lanoix", "Arnaud") ; Etudiant john = new Etudiant("Doe", "John") ; Etudiant totoro = new Etudiant("", "Totoro") ; Etudiant tao = new Etudiant("Kawai", "Tao") ; Etudiant tolkien = new Etudiant("Tolkien", "J.R.R") ; GL.nouvel etudiant(pascal) ; GL.nouvel etudiant(nono) ; GL.nouvel etudiant(john) ; GL.nouvel etudiant(tolkien) ; Exemple : Main.java public class Main { public static void main(string args[]) { Cours GL = new Cours(3) ; Etudiant pascal = new Etudiant("Fontaine", "Pascal") ; Etudiant nono = new Etudiant("Lanoix", "Arnaud") ; Etudiant john = new Etudiant("Doe", "John") ; Etudiant totoro = new Etudiant("", "Totoro") ; Etudiant tao = new Etudiant("Kawai", "Tao") ; Etudiant tolkien = new Etudiant("Tolkien", "J.R.R") ; GL.nouvel etudiant(pascal) ; GL.nouvel etudiant(nono) ; GL.nouvel etudiant(john) ; GL.nouvel etudiant(tolkien) ; Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 46 / 52 Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 46 / 52 Exemple : Main.java public class Main { public static void main(string args[]) { Cours GL = new Cours(3) ; Etudiant pascal = new Etudiant("Fontaine", "Pascal") ; Etudiant nono = new Etudiant("Lanoix", "Arnaud") ; Etudiant john = new Etudiant("Doe", "John") ; Etudiant totoro = new Etudiant("", "Totoro") ; Etudiant tao = new Etudiant("Kawai", "Tao") ; Etudiant tolkien = new Etudiant("Tolkien", "J.R.R") ; GL.nouvel etudiant(pascal) ; GL.nouvel etudiant(nono) ; GL.nouvel etudiant(john) ; GL.nouvel etudiant(tolkien) ; System.out.println("*** Before : " + GL) ; GL.test rate refuse(pascal) ; GL.test reussi(nono) ; GL.test rate colle(pascal) ; GL.test rate colle(john) ; GL.test reussi(tao) ; GL.test rate colle(tolkien) ; GL.test rate refuse(john) ; GL.nouvel etudiant(john) ; GL.test reussi(nono) ; GL.test rate colle(pascal) ; GL.test reussi(tolkien) ; GL.test rate refuse(pascal) ; System.out.println("*** After : " + GL) ; Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 46 / 52 Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 48 / 52

13 System.out.println("*** Before : " + GL) ; GL.test rate refuse(pascal) ; GL.test reussi(nono) ; GL.test rate colle(pascal) ; GL.test rate colle(john) ; GL.test reussi(tao) ; GL.test rate colle(tolkien) ; GL.test rate refuse(john) ; GL.nouvel etudiant(john) ; GL.test reussi(nono) ; GL.test rate colle(pascal) ; GL.test reussi(tolkien) ; GL.test rate refuse(pascal) ; System.out.println("*** After : " + GL) ; System.out.println("*** Before : " + GL) ; GL.test rate refuse(pascal) ; GL.test reussi(nono) ; GL.test rate colle(pascal) ; GL.test rate colle(john) ; GL.test reussi(tao) ; GL.test rate colle(tolkien) ; GL.test rate refuse(john) ; GL.nouvel etudiant(john) ; GL.test reussi(nono) ; GL.test rate colle(pascal) ; GL.test reussi(tolkien) ; GL.test rate refuse(pascal) ; System.out.println("*** After : " + GL) ; Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 48 / 52 Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 48 / 52 Exemple : compilation / exécution Java Exemple : compilation / exécution Java : javac *.java : javac *.java : java Main : java Main *** Before : Inscrits = [Pascal Fontaine, Arnaud Lanoix, John Doe, Tao Kawai, J.R.R Tolkien], Diplomes = [], Colles = [], Refuses = [] *** After : Inscrits = [John Doe], Diplomes = [Arnaud Lanoix, Tao Kawai, J.R.R Tolkien], Colles = [J.R.R Tolkien], Refuses = [John Doe, Pascal Fontaine] *** Before : Inscrits = [Pascal Fontaine, Arnaud Lanoix, John Doe, Tao Kawai, J.R.R Tolkien], Diplomes = [], Colles = [], Refuses = [] *** After : Inscrits = [John Doe], Diplomes = [Arnaud Lanoix, Tao Kawai, J.R.R Tolkien], Colles = [J.R.R Tolkien], Refuses = [John Doe, Pascal Fontaine] Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 49 / 52 Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 49 / 52 Exemple : compilation / exécution Java Exemple : compilation / exécution JML RAC : javac *.java : java Main *** Before : Inscrits = [Pascal Fontaine, Arnaud Lanoix, John Doe, Tao Kawai, J.R.R Tolkien], Diplomes = [], Colles = [], Refuses = [] *** After : Inscrits = [John Doe], Diplomes = [Arnaud Lanoix, Tao Kawai, J.R.R Tolkien], Colles = [J.R.R Tolkien], Refuses = [John Doe, Pascal Fontaine] : jmlc *.java typechecking Cours.java typechecking Etudiant.java typechecking Main.java : jmlrac Main Exception in thread "main" org.jmlspecs.jmlrac.runtime.jmlinvarianterror : by method Etudiant.<init>post<File "Etudiant.java", line 9, character 13> regarding specifications at File "Etudiant.java", line 6, character 34 when Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 49 / 52 Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 50 / 52

14 Exemple : compilation / exécution JML RAC Exemple : compilation / exécution JML RAC : jmlc *.java typechecking Cours.java typechecking Etudiant.java typechecking Main.java : jmlrac Main Exception in thread "main" org.jmlspecs.jmlrac.runtime.jmlinvarianterror : by method Etudiant.<init>post<File "Etudiant.java", line 9, character 13> regarding specifications at File "Etudiant.java", line 6, character 34 when : jmlc *.java typechecking Cours.java typechecking Etudiant.java typechecking Main.java : jmlrac Main Exception in thread "main" org.jmlspecs.jmlrac.runtime.jmlinvarianterror : by method Etudiant.<init>post<File "Etudiant.java", line 9, character 13> regarding specifications at File "Etudiant.java", line 6, character 34 when Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 50 / 52 Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 50 / 52 Exemple : compilation / exécution JML RAC Exemple : méthode test reussi corrigée : jmlc *.java typechecking Cours.java typechecking Etudiant.java typechecking Main.java : jmlrac Main Exception in thread "main" org.jmlspecs.jmlrac.runtime.jmlinvarianterror : by method Etudiant.<init>post<File "Etudiant.java", line 9, character 13> regarding specifications at File "Etudiant.java", line 6, character 34 ensures diplomes.contains(etudiant) ; if(colles.contains(etudiant)) { Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 50 / 52 Arnaud LANOIX (Université Nancy 2) Java Modeling Language (JML) Master1 GL 52 / 52

Bibliographie. Java Modeling Language. Java. Java. Java. Documents références sur JML : Compilation : Langage de programmation orientée Objet

Bibliographie. Java Modeling Language. Java. Java. Java. Documents références sur JML : Compilation : Langage de programmation orientée Objet Bibliographie Documents références sur JML : http://www.eecs.ucf.edu/~leavens/jml/ Java Modeling Language http://kalysto.org/~nono/teaching/jml/ Benoit Darties http://www2.lifl.fr/~nebut/ens/svl/ ESIREM

Plus en détail

Java Modeling Language

Java Modeling Language Java Modeling Language Benoit Darties ESIREM ITR4 benoit.darties@u bourgogne.fr Bibliographie Documents références sur JML : http://www.eecs.ucf.edu/~leavens/jml/ http://kalysto.org/~nono/teaching/jml/

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

nulles dans un langage à objets

nulles dans un langage à objets Prévention de déréférencement de références nulles dans un langage à objets Jean-Sébastien Gélinas, Étienne M. Gagnon, Jean Privat Université du Québec à Montréal Langages et Modèles à Objets Nancy 27

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

Analyse statique de programmes Typage et analyse statique au sein de Java

Analyse statique de programmes Typage et analyse statique au sein de Java Analyse statique de programmes Typage et analyse statique au sein de Java Master Professionnel Informatique spécialité FSIL/FSI Jean-Marc Talbot jean-marc.talbot@lif.univ-mrs.fr Aix-Marseille Université

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 +Cours 2 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

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

JML - TD 1 Yves LEDRU septembre 2013

JML - TD 1 Yves LEDRU septembre 2013 Université Joseph Fourier UFR IM2AG Master 2 Génie Informatique année 2013-2014 1 Logiciels utilisés 1.1 Distribution JML5.6 JML - TD 1 Yves LEDRU septembre 2013 La distribution de JML5.6 est installée

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

Chapitre 7. Exceptions

Chapitre 7. Exceptions Chapitre 7 Exceptions 1 Exceptions en Java Séparation exécution normale/gestion des erreurs Inspiration : C++ et Ada Un composant peut : prendre en charge le problème signaler le problème en levant une

Plus en détail

CSC4002 : Contrôle Final Session 1. Date : jeudi 26 janvier 2012 Durée : 1H30. Coordonnateurs : Christian Bac et Denis Conan

CSC4002 : Contrôle Final Session 1. Date : jeudi 26 janvier 2012 Durée : 1H30. Coordonnateurs : Christian Bac et Denis Conan Corrigé et Barème Contrôle de connaissances 2011/2012 des étudiants de 2 è année (EI2) CSC4002 : Contrôle Final Session 1 Date : jeudi 26 janvier 2012 Durée : 1H30 Coordonnateurs : Christian Bac et Denis

Plus en détail

Mise à niveau en Java

Mise à niveau en Java Mise à niveau en Java Cours 1 Stéphane Airiau Université Paris-Dauphine Stéphane Airiau (Université Paris-Dauphine) - Java Cours 1 1 Aujourd hui Eléments de base Variables, opérateurs, type d une expression

Plus en détail

Eléments de syntaxe du langage Java

Eléments de syntaxe du langage Java c jan. 2014, v3.0 Java Eléments de syntaxe du langage Java Sébastien Jean Le but de ce document est de présenter es éléments de syntaxe du langage Java : les types primitifs, les opérateurs arithmétiques

Plus en détail

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2 Langage et Concepts de Programmation Objet Travaux Dirigés no2 Pôle Informatique École Nationale Supérieure des Mines de St-Etienne Vous trouverez plus de détails sur les concepts abordés lors de ce TD

Plus en détail

Un Survol des Méthodes Formelles pour Java Card TM

Un Survol des Méthodes Formelles pour Java Card TM Réunion PROGSI : Sécurité Java Card TM Un Survol des Méthodes Formelles pour Java Card TM d.rouillardserma.com sauveronlabri.fr http://dept-info.labri.u-bordeaux.fr/~sauveron 21 novembre 2002 Plan L architecture

Plus en détail

Les exceptions. Cours 12. vous les avez pratiquées sans le savoir... ArrayIndexOfBoundsException NullPointerException ClassNotFoundException...

Les exceptions. Cours 12. vous les avez pratiquées sans le savoir... ArrayIndexOfBoundsException NullPointerException ClassNotFoundException... Cours 12 Les exceptions vous les avez pratiquées sans le savoir... ArrayIndexOfBoundsException NullPointerException ClassNotFoundException... F.Gayral 1 Les exceptions, vous connaissez... public class

Plus en détail

Avant de programmer en Java DOS Set Path=C:\JDK\bin Path=C:\JDK\bin C:\JDK\bin Set Path=%Path%;C:\JDK\bin C:\JDK\bin C:\JDK\

Avant de programmer en Java DOS Set Path=C:\JDK\bin Path=C:\JDK\bin C:\JDK\bin Set Path=%Path%;C:\JDK\bin C:\JDK\bin C:\JDK\ Exercices corrigés de programmation OO Java Préparés par : Mlle Imene Sghaier Année Académique : 2006-2007 Premiers Pas I. Avant de programmer en Java Le JDK de Sun (Java Development Kit) est l outil essentiel

Plus en détail

CCI - Initiation à Java. E.Coquery emmanuel.coquery@liris.cnrs.fr

CCI - Initiation à Java. E.Coquery emmanuel.coquery@liris.cnrs.fr CCI - Initiation à Java E.Coquery emmanuel.coquery@liris.cnrs.fr Présentation du langage Outline 1 Présentation du langage 2 Types de données primitifs 3 Objets Présentation du langage Un langage orienté

Plus en détail

Généralités. javadoc. Format des commentaires. Format des commentaires. Caractères spéciaux. Insérer du code

Généralités. javadoc. Format des commentaires. Format des commentaires. Caractères spéciaux. Insérer du code Généralités javadoc Université de Nice - Sophia Antipolis Richard Grin Version 1.4.1 8/2/11 javadoc produit de la documentation en partant de commentaires particuliers insérés dans le code source des classes

Plus en détail

Une classe est une sorte de type de données définie par le programmeur Variables peuvent être de type classe

Une classe est une sorte de type de données définie par le programmeur Variables peuvent être de type classe Classe, Objet Variables locales Niveaux de visibilité (Encapsulation) Attributs et Méthodes Statiques Surcharge des Méthodes Transmission des Paramètres Paquetage Classes pour les types de base POO 1 Une

Plus en détail

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

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

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

Université Mohammed Premier Année universitaire 2011-2012. Correction de l examen écrit de la session ordinaire 18 Février 2012

Université Mohammed Premier Année universitaire 2011-2012. Correction de l examen écrit de la session ordinaire 18 Février 2012 Université Mohammed Premier Année universitaire 2011-2012 Faculté des Sciences Filière SMI Département de Mathématiques Module : POO Java et d Informatique Semestre : S5 Correction de l examen écrit de

Plus en détail

Java - Historique. Une introduction à Java. Premier exemple. Aperçu de Java. Processus d obtention d un exécutable. Compilation/interprétation

Java - Historique. Une introduction à Java. Premier exemple. Aperçu de Java. Processus d obtention d un exécutable. Compilation/interprétation Java - Historique Une introduction à Java IFT 287 (Semaine 1) UNIVERSITÉ DE SHERBROOKE 1 Développé par Sun Microsystems en 1994 Inventeur James Gosling (canadien!) Objectif langage sûr (fortement typé)

Plus en détail

Définitions de classes permettant de gérer Étudiant en Enseignant CORRECTION

Définitions de classes permettant de gérer Étudiant en Enseignant CORRECTION EILCO ING 1 - POO Java Contrôle 2014/2015 Définitions de classes permettant de gérer Étudiant en Enseignant CORRECTION Dans ces exercices, nous allons définir une classe Personne qui permettra de gérer

Plus en détail

Programmation objet en Java.

Programmation objet en Java. Programmation objet en Java. Didier Rémy 2001-2002 http://cristal.inria.fr/ remy/mot/7/ http://www.enseignement.polytechnique.fr/profs/informatique/didier.remy/mot/7/ Cours Exercices Slide 1 1. Classes,

Plus en détail

Résumé Introduction Programmation Java

Résumé Introduction Programmation Java Résumé Introduction Programmation Java Concepts Un programme : séquence, test conditionnel, boucles. Objets : Les objets Java modélisent les objets d un problème donné Classe : Les objets sont crées à

Plus en détail

Examen 1 ère session 2012-2013 page 1 NFA 031 - Programmation JAVA Formation CNAM

Examen 1 ère session 2012-2013 page 1 NFA 031 - Programmation JAVA Formation CNAM Examen 1 ère session 2012-2013 page 1 NFA 031 - Programmation JAVA IPST-CNAM Programmation JAVA NFA 001 Mercredi 13 Février 2013 Avec document Durée : 2 h30 Enseignant : LAFORGUE Jacques 1 ère Session

Plus en détail

6.1 Une classe simple pour représenter des comptes bancaires

6.1 Une classe simple pour représenter des comptes bancaires Chapitre 6 Héritage Ce chapitre du cours traite de concepts relatifs à la programmation objet (hiérarchie de classe, héritage, extension, masquage) et sera illustré par un exemple de représentation de

Plus en détail

Conception et Développement Orientés Objets Cours 1 : Introduction. 2 Les paradigmes de programmation. 3 Les concepts de la programmation objet

Conception et Développement Orientés Objets Cours 1 : Introduction. 2 Les paradigmes de programmation. 3 Les concepts de la programmation objet CNAM UV 19357 Année 2003-2004 David Delahaye David.Delahaye@cnam.fr Conception et Développement Orientés Objets Cours 1 : Introduction 1 Présentation de la valeur Ce cours s adresse à toute personne ayant

Plus en détail

EXAMEN DE JAVA 2010-2011

EXAMEN DE JAVA 2010-2011 NOM : PRÉNOM : TP : G TP EXAMEN DE JAVA 2010-2011 Consignes : avec documents, mais sans téléphone, ordinateur ou autre moyen de communication. Durée : 2h Recommandations : Le code doit être écrit en JAVA

Plus en détail

Précis de vocabulaire Orienté Objet

Précis de vocabulaire Orienté Objet Dernière Mise à jour : Mars 2007 Précis de vocabulaire Orienté Objet 1 Questions Expliquer et donner un exemple pour chacun des concepts suivants 1. Qu'est-ce qu'un objet? 2. Qu'est-ce qu'une classe? 3.

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

Programmer avec les exceptions en Java

Programmer avec les exceptions en Java Programmer avec les exceptions en Java Premier Cycle Cours Eurinsa 2002 (c) P.Pollet 05/12/2002 Java 2001 (PP) 1 Plan Gestion traditionnelle des erreurs d exécution Qu est-ce qu une exception? La classe

Plus en détail

Cours1 +Cours 2. Structure d un programme et Compilation Notions de classe et d objet Syntaxe POO 1

Cours1 +Cours 2. Structure d un programme et Compilation Notions de classe et d objet Syntaxe POO 1 Cours1 +Cours 2 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

Plus en détail

Les exceptions en java

Les exceptions en java 1/12 Les exceptions en java 2/12 C'est quoi une exception? Une exception est un événement (une erreur) qui se produit lors de l'exécution d'un programme, et qui va provoquer un fonctionnement anormal (par

Plus en détail

Licence d'informatique 2004-2005 Examen Programmation orientée objet Juin 2005

Licence d'informatique 2004-2005 Examen Programmation orientée objet Juin 2005 Licence d'informatique 2004-2005 Examen Programmation orientée objet Juin 2005 Durée de l'épreuve : 2 heures TRÈS IMPORTANT : respectez l'ordre des questions. La lisibilité sera un critère important pour

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

Cours JAVA : La fiabilité en Java

Cours JAVA : La fiabilité en Java Cours JAVA : La fiabilité en Java Version 1.02 Julien Sopena 1 1 julien.sopena@lip6.fr Équipe REGAL - INRIA Rocquencourt LIP6 - Université Pierre et Marie Curie Licence professionnelle DANT - 2015/2016

Plus en détail

Éléments de base en Java (suite et fin)

Éléments de base en Java (suite et fin) Éléments de base en Java (suite et fin) P.O.O. LMI 2 Semestre 4 Option Info Année 2008-09 1/33 Éléments de base en Java (suite et fin) Année 2008-09 Plan du cours Les chaînes de caractères Retour vers

Plus en détail

Université Paris Diderot ISIFAR Année 2008-2009. Exceptions et Classes Abstraites

Université Paris Diderot ISIFAR Année 2008-2009. Exceptions et Classes Abstraites Université Paris Diderot JAVA ISIFAR Année 2008-2009 TP n 7 - Correction Exceptions et Classes Abstraites Exercice 1 [Utilisation des Exceptions] La méthode parseint est spécifiée ainsi : public static

Plus en détail

Plan. Tableaux. Utilité. Définition. Exemples. Déclaration d un tableau

Plan. Tableaux. Utilité. Définition. Exemples. Déclaration d un tableau Plan Tableaux Université de Nice - Sophia Antipolis Richard Grin Version 1.0.4 25/11/10 Définition Déclaration d un tableau Création d un tableau Utilisation d un dun tableau Tableau des paramètres de

Plus en détail

Ingénierie du logiciel : cours 2

Ingénierie du logiciel : cours 2 Ingénierie du logiciel : cours 2 Frédéric Gava (d après F. Martini) Master ISIN, Université de Paris-Est Créteil Cours Ingénierie du logiciel du M2 ISIN Plan 1 Introduction et premiers exemples 2 Création

Plus en détail

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

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

Plus en détail

Cours 8 : Exceptions, un peu de graphique

Cours 8 : Exceptions, un peu de graphique 1 Cours 8 : Exceptions, un peu de graphique 1. Traiter les exceptions usuelles 2. Créer ses propres exceptions 3. Exemples: les files. 4. Quelques éléments sur les graphiques 2 Exceptions Une exception

Plus en détail

2. lancer (throw) une exception consiste à la signaler

2. lancer (throw) une exception consiste à la signaler Cours 7 Exceptions 1 1. Une exception est un signal qui indique que quelque chose d'exceptionnel (par exemple une erreur) s est produite qui interrompt le flot d exécution normal du programme 2. lancer

Plus en détail

TP JUnit 4.12. Première partie Le premier test d'une classe

TP JUnit 4.12. Première partie Le premier test d'une classe TP JUnit 4.12 Récupérez les deux fichiers junit.jar et hamcrest-core.jar à partir de l'url https://github.com/junit-team/junit/wiki/download-and-install (plus précisément à partir de l'url http://junit.org).

Plus en détail

Arbres binaires. Illustration avec des arbres binaires de décision Généricité bornée Synthèse sur les assertions et les exceptions

Arbres binaires. Illustration avec des arbres binaires de décision Généricité bornée Synthèse sur les assertions et les exceptions Arbres binaires Illustration avec des arbres binaires de décision Généricité bornée Synthèse sur les assertions et les exceptions FMIN220 Structures de données Université de Montpellier 2015 FMIN220 (UM)

Plus en détail

Cours Java : deuxième saison

Cours Java : deuxième saison Programmation Objet en Java Cours 5 Exception (C) 2005, Frédéric Peschanski 1 Cours Java : deuxième saison Cours 7 : Exceptions, tests unitaires et assertions Cours 8 : Design Patterns 1 Cours 9 : Design

Plus en détail

Java Licence professionnelle CISII, 2009-2010

Java Licence professionnelle CISII, 2009-2010 Java Licence professionnelle CISII, 2009-2010 Cours 6 : le paquetage (package) Cours inspiré des cours de Richard Grin, Antoine Tabbone et Hazel Everett 1 Définition - Les classes Java sont regroupées

Plus en détail

Java : Programmation Impérative

Java : Programmation Impérative 1 Java : Programmation Impérative Résumé du cours précédent (I11) Paradigme impératif Algorithmique simple Découpage fonctionnel Qu est-ce qu un programme informatique? / un langage de programmation? /

Plus en détail

Static. static. USTL http://www.lifl.fr/ routier 1

Static. static. USTL http://www.lifl.fr/ routier 1 Static static USTL http://www.lifl.fr/ routier 1 Static Le rôle essentiel d un moule est de permettre la création d objets.... mais un moule a également des caractéristiques Il en est de même pour une

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

Programmation Objet. Cours 1

Programmation Objet. Cours 1 Programmation Objet. Cours 1 Marie-Pierre Béal UPEM DUT 1 Programmation objet. Classes et objets. Principaux styles de programmation Style impératif Fondé sur l exécution d instructions modifiant l état

Plus en détail

La plate-forme Java RMI

La plate-forme Java RMI La plate-forme Java RMI Frank Singhoff Bureau C-202 Université de Brest, France Lab-STICC/UMR 3192 singhoff@univ-brest.fr UE systèmes à objets répartis, Université de Brest Page 1/25 Sommaire 1. Le modèle

Plus en détail

PROB Introduction au langage JAVA

PROB Introduction au langage JAVA PROB Introduction au langage JAVA EPFC ULB 1 BACHELIER en INFORMATIQUE de Gestion PRMT(1) 120p. LAPR(2) 120p. PR(1) PROB(10) 120p. PR(1) PRDV(4) 40p. PR(2 ou 9) COFI(20) 60p. GBDR(5) 120p. LAOG(9) 120p.

Plus en détail

Contrôle de rattrapage Master II I - SRI

Contrôle de rattrapage Master II I - SRI Université de Batna Module : Bases de données orientées objets Faculté des sciences Département d informatique 2012/2013 Durée : 1h30 Le 19/03/2013 Questions de cours (4 pts) Contrôle de rattrapage Master

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

Remote Method Invocation (RMI)

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

Plus en détail

Programmation - Java - Fiches du Langage. Marie Beurton-Aimar

Programmation - Java - Fiches du Langage. Marie Beurton-Aimar Programmation - Java - Fiches du Langage Marie Beurton-Aimar Fiche Numéro 1 1.1 Structure d un programme Java Toutes les instructions se terminent par un ; Le nom du fichier qui contient une classe doit

Plus en détail

Introduction au langage Java

Introduction au langage Java Introduction au langage Java Nicolas Dumoulin nicolas.dumoulin@cemagref.fr Cemagref Laboratoire d ingénierie pour les systèmes complexes 2010 Notes aux lecteurs Ce document est un support de cours qui

Plus en détail

Héritage, et quelques petits mots-clés de Java

Héritage, et quelques petits mots-clés de Java Héritage, et quelques petits mots-clés de Java Bilan de la séance du 3 février. 1 Champs d instance, champs de classe La situation usuelle pour les attributs et les méthodes est la suivante : La classe

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

NFP111 Systèmes et Applications Réparties

NFP111 Systèmes et Applications Réparties NFP111 Systèmes et Applications Réparties 1 de 9 NFP111 Systèmes et Applications Réparties Cours 6 - Remote Method Invocation (RMI)/Partie 2 Claude Duvallet Université du Havre UFR Sciences et Techniques

Plus en détail

Introduction au langage Java

Introduction au langage Java Introduction au langage Java 1 / 24 1 Vue générale La technologie Java Le langage Java La machine virtuelle Java Résumé Plan 2 Hello World Prérequis Premier programme : 3 étapes Résumé 3 HelloWorld en

Plus en détail

Solutions du chapitre 14

Solutions du chapitre 14 Solutions du chapitre 14 Traitement des exceptions 14.16 Sous quelles circonstances utiliseriez-vous l instruction suivante? catch ( Exception e ) { throw e; } Cette instruction sert à capturer toute exception

Plus en détail

Une introduction à Java

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

Plus en détail

Le parallélisme en Java

Le parallélisme en Java Chapitre 7 Le parallélisme en Java L espoir du parallélisme est de pouvoir faire exécuter plusieurs tâches à un ordinateur (avec plusieurs processeurs). Ceci trouve un début d application sur certains

Plus en détail

Université Mohammed Premier Année universitaire 2012-2013

Université Mohammed Premier Année universitaire 2012-2013 Université Mohammed Premier Année universitaire 2012-2013 Faculté des Sciences Filière SMI Département de Mathématiques Module : POO Java et d Informatique Semestre : S5 Responsable du cours : El Mostafa

Plus en détail

Cours 4 Programmation web, orientée serveur

Cours 4 Programmation web, orientée serveur DUT MMI IUT de Marne-la-Vallée 17/03/2015 M2202 - Algorithmique Cours 4 Programmation web, orientée serveur Philippe Gambette Sources phpdebutant.net www.php.net (documentation du langage PHP) Plan du

Plus en détail

Java Remote Method Invocation

Java Remote Method Invocation Java Remote Method Invocation Ce support est très largement inspiré du livre et du cours de S. Krakowiak S. Krakowiak Java Remote Method Invocation 1 / 25 Intérêt des objets pour la construction d applications

Plus en détail

JVM. RMI - couche de référence. RMI - couche de transport TCP/IP

JVM. RMI - couche de référence. RMI - couche de transport TCP/IP Chapitre 9 Dans ce chapitre nous abordons le mécanisme RMI (Remote Method Invocation) permettant le développe ment des systèmes répartis. Nous expliquerons comment les classes d un serveur peuvent être

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

ENSTA IN204 Introduction à JAVA

ENSTA IN204 Introduction à JAVA Ecole Nationale Supérieure de Techniques Avancées (ENSTA) -http://www.ensta.fr ENSTA IN204 Introduction à JAVA Olivier Sigaud LIP6/AnimatLab olivier.sigaud@lip6.fr 01.44.27.88.53 Ce document est mis à

Plus en détail

Bases Java - Eclipse / Netbeans

Bases Java - Eclipse / Netbeans Institut Galilée Master 1 T.P. 1 Bases Java - Eclipse / Netbeans PDJ Environnements Java Il existe plusieurs environnements Java. Il est ESSENTIEL d utiliser la bonne version, et un environnement d exécution

Plus en détail

Cours 1. Contenu du cours : " Premières applications. " Compilation, Exécution, Chemin. " Affichage et saisie. " Types de données. " Flux de contrôle

Cours 1. Contenu du cours :  Premières applications.  Compilation, Exécution, Chemin.  Affichage et saisie.  Types de données.  Flux de contrôle Cours 1 1 Contenu du cours : " Premières applications " Compilation, Exécution, Chemin " Affichage et saisie " Types de données " Flux de contrôle " Applets " Arrays " OO de base Edition Le fichier texte

Plus en détail

PRESENTATION DE JAVA. Qu est-ce que java? Les caractéristiques du langage java Les outils Les API Références. Software Associates International

PRESENTATION DE JAVA. Qu est-ce que java? Les caractéristiques du langage java Les outils Les API Références. Software Associates International PRESENTATION DE JAVA Qu est-ce que java? Les caractéristiques du langage java Les outils Les API Références 1 Qu est-ce que java? Un langage de programmation orienté objets Une architecture de Virtual

Plus en détail

RMI : Remote Method Invocation Appel de méthodes à distance TD/TP

RMI : Remote Method Invocation Appel de méthodes à distance TD/TP RMI : Remote Method Invocation Appel de méthodes à distance TD/TP Patrice Torguet torguet@irit.fr Université Paul Sabatier But l But du TD/TP : application répartie permettant de gérer des comptes bancaires.

Plus en détail

Plan. Conseils de Programmation. Types et Classes. Exemple: fraction. Méthodes. Variables locales:

Plan. Conseils de Programmation. Types et Classes. Exemple: fraction. Méthodes. Variables locales: Plan Conseils de Programmation Joël Quinqueton Dépt MIAp, UFR IV UPV Université Montpellier III Types et classes Un exemple de classe Les erreurs en Java L héritage en Java Types primitifs Tableaux Classes:

Plus en détail

Java RMI. Programmation des applications réparties. Olivier Flauzac URCA. Master EEAMI-Informatique première année

Java RMI. Programmation des applications réparties. Olivier Flauzac URCA. Master EEAMI-Informatique première année Java RMI Programmation des applications réparties Olivier Flauzac URCA Master EEAMI-Informatique première année Olivier Flauzac (URCA) PAR : Java RMI MSTIC-INFO 1 1 / 30 1 RMI 2 Architecture 3 Développement

Plus en détail

Cours de Programmation Orientée Objet

Cours de Programmation Orientée Objet Contrat et application à la librairie standard JAVA mailto:marc.champesme@lipn.univ-paris13.fr 6 février 2011 1 Qu est ce qu une classe? Un exemple en JAVA Résumé Expression du contrat Par des commentaires

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

Corrigé Barème Contrôle de connaissances 2013/2014 des étudiants de 2 è année (EI2) CSC4002 : Contrôle Final Session 2

Corrigé Barème Contrôle de connaissances 2013/2014 des étudiants de 2 è année (EI2) CSC4002 : Contrôle Final Session 2 Corrigé Barème Contrôle de connaissances 2013/2014 des étudiants de 2 è année (EI2) CSC4002 : Contrôle Final Session 2 Date : 27 Mars 2014 Durée : 1H30 Coordonnateurs : Christian Bac et Denis Conan Les

Plus en détail

POO 1/3 - Introduction à la Programmation Orientée Objet. Pierre Parrend IUT Lumière Lyon II, 2005-2006 pierre.parrend@univ-lyon2.

POO 1/3 - Introduction à la Programmation Orientée Objet. Pierre Parrend IUT Lumière Lyon II, 2005-2006 pierre.parrend@univ-lyon2. POO 1/3 - Introduction à la Programmation Orientée Objet Pierre Parrend IUT Lumière Lyon II, 2005-2006 pierre.parrend@univ-lyon2.fr Sommaire Les Langages de Programmation Premier Programme Les Objets Objets

Plus en détail

Support de Cours Christophe Dony Université Montpellier-II

Support de Cours Christophe Dony Université Montpellier-II Cours de base d Ingéniérie des applications objet. Généralités sur le langage Java - Modèle d exécution - Syntaxe Support de Cours Christophe Dony Université Montpellier-II 1 Le langage Java 1.1 Langage

Plus en détail

Module B9-1 : sensibilisation à l UML

Module B9-1 : sensibilisation à l UML Module B9-1 : sensibilisation à l UML Olivier Habart : habart.olivier@gmail.com ENSTA B9-1 UML (Olivier Habart) Septembre 14 Diapositive N 1 Session 2 : Vue statique Sommaire Diagramme de classes Diagrammes

Plus en détail

Traduction des Langages : Le Compilateur Micro Java

Traduction des Langages : Le Compilateur Micro Java BARABZAN Jean-René OUAHAB Karim TUCITO David 2A IMA Traduction des Langages : Le Compilateur Micro Java µ Page 1 Introduction Le but de ce projet est d écrire en JAVA un compilateur Micro-Java générant

Plus en détail

public class StaticExample { private static int compteur; public static double pi = 3.14159; } utilisation de la notation. respect des modificateurs

public class StaticExample { private static int compteur; public static double pi = 3.14159; } utilisation de la notation. respect des modificateurs static static : usage Le rôle essentiel d un moule est de permettre la création d objets. mais un moule a également des caractéristiques Il en est de même pour une classe. Usage : La déclaration des attributs

Plus en détail

INF 103 Langage JAVA. Contrôle du 7 janvier 2015 Durée : 1h30

INF 103 Langage JAVA. Contrôle du 7 janvier 2015 Durée : 1h30 INF 103 Langage JAVA Contrôle du 7 janvier 2015 Durée : 1h30 Nom : Prénom : Casier : Groupe :........ Écrire les réponses directement sur les feuilles du sujet dans les cases prévues à cet effet. Le barème

Plus en détail

Java Avancé. Les exceptions. Rémi Forax forax@univ-mlv.fr

Java Avancé. Les exceptions. Rémi Forax forax@univ-mlv.fr Java Avancé Les exceptions Rémi Forax forax@univ-mlv.fr 1 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

Plus en détail

Cours de Java. Benjamin FAUCHER Cubis-Helios Consulting

Cours de Java. Benjamin FAUCHER Cubis-Helios Consulting Cours de Java Benjamin FAUCHER Cubis-Helios Consulting Cours 1 : Les bases du Langage Java 1/2 I. Introduction II. Compilation III. Rappel sur la POO IV. Les classes Java V. Syntaxe de base du Java Langage

Plus en détail

Programmation par RPC et Java-RMI :

Programmation par RPC et Java-RMI : 2A-SI 3 Prog. réseau et systèmes distribués 3.2 et JavaRMI Stéphane Vialle Stephane.Vialle@supelec.fr http://www.metz.supelec.fr/~vialle Support de cours élaboré avec l aide de l équipe pédagogique du

Plus en détail

Programmation orientée objet TP 1 Prise en main de l environnement Java

Programmation orientée objet TP 1 Prise en main de l environnement Java Programmation orientée objet TP 1 L2 MPCIE Prise en main de l environnement Java Exercice 1 Nous désirons développer un programme pour la gestion (très simplifiée) d'un parc de véhicules destinés à la

Plus en détail

Listes et arbres binaires

Listes et arbres binaires Des structures de données dynamiques Listes, Listes ordonnées Arbres binaires, arbre binaires de recherche Listes chaînées Utile si le nombre d éléments n est pas connu à l avance et évolue beaucoup. Permet

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

I21 Algorithmique et programmation II. David Gross-Amblard, Joël Savelli IEM-uB 2008-2009 - GFDL 1.2 CM 5/8 v2

I21 Algorithmique et programmation II. David Gross-Amblard, Joël Savelli IEM-uB 2008-2009 - GFDL 1.2 CM 5/8 v2 I21 Algorithmique et programmation II David Gross-Amblard, Joël Savelli IEM-uB 2008-2009 - GFDL 1.2 CM 5/8 v2 II. Programmation par objet 1. Motivation 2. Encapsulation 3. Héritage 4. Initiation à la modélisation

Plus en détail

Programmation Orientée Objet. Exceptions et assertions

Programmation Orientée Objet. Exceptions et assertions Programmation Orientée Objet Exceptions et assertions Julien Provillard http://www.i3s.unice.fr/~provilla/poo/ julien.provillard@unice.fr Robustesse et Exceptions Error, RuntimeException Exceptions (non)

Plus en détail

Concept de classes (1) Classes et objets en Java Master Informatique 1 ère année. Concept de classes (2) Concept de classes (3)

Concept de classes (1) Classes et objets en Java Master Informatique 1 ère année. Concept de classes (2) Concept de classes (3) Université Lumière Lyon 2 Faculté de Sciences Economiques et Gestion KHARKIV National University of Economic Classes et objets en Java Master Informatique 1 ère année Julien Velcin http://mediamining.univ-lyon2.fr/velcin

Plus en détail

Plan du cours. Syntaxe abstraite. Actions sémantiques Exemple : Analyseur d expressions arithmétiques Arbres de syntaxe.

Plan du cours. Syntaxe abstraite. Actions sémantiques Exemple : Analyseur d expressions arithmétiques Arbres de syntaxe. Plan du cours Syntaxe abstraite Martin Odersky 21 et 22 novembre 2005 version 1.0 1 2 3 Syntaxe abstraite Martin Odersky 1 de 31 Syntaxe abstraite Martin Odersky 2 de 31 Un analyseur syntaxique fait généralement

Plus en détail