Java Modeling Language

Save this PDF as:
 WORD  PNG  TXT  JPG

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

Download "Java Modeling Language"

Transcription

1 Java Modeling Language Benoit Darties ESIREM ITR4 bourgogne.fr

2 Bibliographie Documents références sur JML :

3 Java Langage de programmation orientée Objet Développé par Sun Projet OAK (1991), Java (1995) Java 1.5 (2004) Langage interprété JMV : Java Virtual Machine Multi-plateforme : Windows, Linux, MacOsX, etc... Niveau d'abstraction Code / Architecture machine

4 Java Compilation : javac Program.java Produit un fichier Program.class : bytecode Execution : java Fichier Interprétation du Bytecode par la JVM

5 Java concepts de la programmation Objet : encapsulation de données: public, private, protected notions d'objets : classe : «moule» à objet instance de classes : objets créés avec ce moule héritage : Class A extends B { } polymorphisme

6 Introduction à JML

7 Qu'est ce que JML? JML : Java Modeling Language Langage de modélisation formelle Associé au langage de programmation Java Inspiré par Eiffel : conception par contrat Auteur de départ : Gary T. Leavens, 1999 Exprime des propriétés sur les classes Java Supporté par différents outils : JML Runtime Assertion Checker JMLUnit, ESC/java2 Site de référence :

8 Outils JML Le compilateur jmlc Compile un fichier java en prenant en compte les annotations JML qu'il contient pour les transformer en vérifications à l'exécution (runtimes checks) Compilateur java amélioré produit un fichier Bytecode qui pourrait etre directement interprété par java s'il n'y avait pas de références vers les packages JML Le compilateur jmlrac Runtime Assertion Checker Ajoute les packages necessaires et appelle java

9 Invariants, Préconditions, Postconditions Invariant : propriété toujours vraie quel que 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

10 Conception par contrat Logique d'hoare : pré/-postconditions des programmes Design by Contract : introduit dans langage Eiffel Contrat entre le système qui invoque une méthode, et la méthode qui est invoquée : 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 les postconditions lorsqu'elle est invoquée La méthode et l'environnement s'engagent également à maintenir l'invariant de classe

11 Un premier exemple Calcul d'une racine carrée : fonction sqrt( ) /** double x réel positif double racine carrée de x */ Public static double sqrt(double x) { }

12 Un premier exemple Calcul d'une racine carrée : fonction sqrt( ) /** double x réel positif double racine carrée de x Public static double sqrt(double x) { } Définition des instructions JML : entre les balises et

13 Un premier exemple Calcul d'une racine carrée : fonction sqrt( ) /** double x réel positif double racine carrée de x requires x >= 0.0; Définition d'une précondition : mot clé Public static double sqrt(double x) { }

14 Un premier exemple Calcul d'une racine carrée : fonction sqrt( ) /** double x réel positif double racine carrée de x */ Définition d'une postcondition requires x >= ensures x == \result *\result; mot clé Public static double sqrt(double x) { }

15 Un premier exemple requires x >= 0.0; Précondition assurant que le paramètre x est bien un réél positif ensures x == \result * \result; Postcondition assurant que le résultat \result est bien la racine carrée de x (à epsilon près) \result : identifie le résultat d'une méthode

16 Annotations JML Une spécification JML s'exprime par un programme Java annoté : annotations JML écrites dans le code Java Placées dans des blocs de commentaires Java spécifiques : Une seule ligne commence par Un bloc est délimité Cohérence avec syntaxe Java : un programme annoté continue de fonctionner normalement (compilation + exécution)

17 Clauses de spécification Modélisation composée de clauses (prédicats) Décrivent la classe ou les méthodes Spécification de types : parties statiques du modèle initially predicatuml invariant predicatuml constraint predicatuml Spécification de méthodes : parties dynamiques requires predicatuml diverges predicatuml assignable predicatuml ensures predicatuml signals predicatuml

18 Spécifications de types Propriétés portant sur les attributs de la classe Contrainte initiales : clause initially Doit être établie à la création de l'objet Invariant de classe : clause invariant propriété portant sur les attributs de classe qui doivent être vrais dans tous les états «visibles» du système (= état après exécution d'une méthode) Contrainte historique : clause constraint propriété entre un état visible et l'état visible précédent qui doit etre vraie dans tous les états du système

19 Spécifications de méthodes Propriétés relatives aux comportements autorisés des méthodes préconditions : clause requires condition a remplir par le système et les paramètres pour que la méthode puisse etre appelée Divergence : clause diverges condition sous laquelle la méthode ne peut pas se terminer, i.e. boucles infinies, etc.. Champs modifiés : clause assignable liste des attributs modifiés à l'exécution de méthode Postcondition normale : clause ensures condition que la méthode s'engage à établir lorsqu'elle termine normalement

20 Expression des prédicats JML Les prédicats JML sont exprimés à l'aide : des attributs (variables) et 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 des opérateurs spécifiques à JML «nouveaux» opérateurs arithmétiques «nouveaux» opérateurs booléens opérateurs avant / après opérateurs de typage Objet

21 Méthodes pures Méthode pure : méthode qui ne modifie aucun attribut peut être utilisée dans les prédicats JML Les méthodes de consultation des classes de l'api Java sont considérées comme pures déclarer une méthode comme étant pure : class C { int val; public pure */ int getval() { return val; } }

22 Opérateurs arithmétiques 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 de JML \sum, \product, \min, \max, \num.of

23 Opérateurs booléens opérateurs logiques opérateurs relationnels Symbole Fonction & ET logique OU logique ^ OU exclusif! négation logique ==> implication <==> équivalence 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) )

24 Opérateurs avant / après Certaines clauses font référence à l'état avant et l'état après l'exécution d'une méthode \result fait référence au résultat de la méthode \old(x) permet de faire référence à la valeur de x à l'état d'avant exécution de la méthode x fait référence à la valeur de x après exécution de la méthode \not.modified(x) est un booléen indiquant si x n'a pas été modifié lors de l'exécution de la méthode

25 Opérateurs de typage Objet Opérateurs de typage Objet \type(maclasse) retourne le type décrit par la spécification de la classe MaClasse \typeof(monobj) retourne le type de l'objet monobj < : permet de savoir si un type est un sous-type d'un autre (héritage) \typeof(monobj) < : \type(maclasse) est vrai si le type de l'objet monobj est un sous-type de la classe MaClasse. Dit autrement : monobj est une instance d'une sous-classe de Maclasse.

26 Visibilité des spécifications

27 Portée des spécifications Les prédicats d'une méthode font partie de son interface, donc de sa documentation méthodes privées : ont droit aux prédicats comme les méthodes publiques par contre, on n'a pas envie de publier les prédicats à l'extérieur à de la classe (dans Javadoc par ex) Spécifications : visibilité comme en Java public, private, protected, ou limitée au package par défaut : visibilité de la spécification = visibilité de la méthode / du type associé au prédicat

28 Portée des spécifications Attention : Mais : une spécification de doit pas autoriser plus d'accès que le source Java Ex : impossible de mentionner un attribut Java privé dans une spécification publique elle décrit comment l'état de l'objet évolue l'état de l'objet est représenté par ses attributs pour respecter le principe d'encapsulation, les attributs d'un objet sont le plus souvent privés les spécifications des attributs seraient le plus souvent privées peu d'utilité

29 Portée des spécifications La spécification suivante est incorrecte : utilisation d'un attribut privé dans une spec publique public class Disk { /** size of the disk */ private int size; requires t > 0 ensures this.size == t; public Disk(int t) { } } La postcondition d'une méthode publique n'a pas de visibilité sur l'attribut privé

30 Portée des spécifications Une solution : spec_public Autorise un attribut dans toute spécification Donne une visibilité publique pour les spécifications revient à dévoiler l'implémentation fort couplage avec la mise en oeuvre public class Disk { /** size of the disk */ private int size; requires t > 0 ensures this.size == t; public Disk(int t) { } }

31 Portée des spécifications Autre solution : attribut modèle Déclarer un attribut abstrait JML qui représente l'attribut Java dans les spécifications ne doit apparaître QUE dans les spécifications ne doit jamais apparaître dans le code plus orienté type abstrait de données, plus élégant met en valeur le fait que la spécification représente une abstraction du comportement de l'objet

32 Portée des spécifications Autre solution : attribut modèle public class Disk { /** size of the disk */ public model int size; private int itssize; private represents this.size < this.itssize; requires t > 0 ensures this.size == t; public Disk(int t) { } }

33 Portée des spécifications L'attribut modèle size est déclaré : public pour pouvoir l'utiliser dans une spécification de n'importe quel niveau de visibilité avec le modificateur model, qui le distingue d'un attribut Java classique. Pour corréler les valeurs de size et itssize : clause represents : size a la valeur de itssize clause privée, car elle mentionne un attribut privé

34 Portée des spécifications Autre exemple : private int hour; private int minuts; private int seconds; public model long time; private represents time < seconds + minuts*60 + hours*60*60; ensures time == \old( time +1) % 24*60*60; public void tick { seconds++; if (seconds == 60) {seconds =0; minuts++;} if (minuts == 60) {minuts = 0; hours++;} if (hours == 24) {hours = 0;} }

35 Spécification de méthodes et de classes

36 Spécification de méthodes et de classes Quatre cas exclusifs pour la terminaison d'une méthode, propre à JML : terminaison normale terminaison exceptionnelle (levée d'exception) la JML génère une erreur la méthode diverge (ne lève pas d'exception, mais elle ne retourne rien)

37 Spécification de méthodes et de classes Précondition: la précondition doit être vraie lors de l'appel a la méthode mot clé requires requires x >= 0.0; Public static double sqrt(double x) {... } valeur par défaut : \not_speficied, interprétée à true lors de l'exécution et par la majorité des outils

38 Spécification de méthodes et de classes Précondition: deux clauses requires P1; et requires P2; sont équivalentes à requires P1 && P2; l'opérateur && n'est pas commutatif : l'ordre des préconditions a son importance! requires o!= null; requires o.getval() > 10; différent de requires o.getval() > 10; requires o!= null;

39 Spécification de méthodes et de classes Précondition : l'outil jmlc sait générer automatiquement le code correspondant à la supervision des préconditions depuis JML 5.3 : pour tout paramètre formel x, x!= null est une précondition par défaut pour invalider ce mode par défaut : mot clé nullable public void String x) {... }

40 Spécification de méthodes et de classes Postcondition : Si la précondition est vraie lors de l'appel à la méthode, et que celle-ci se termine normalement, alors la postcondition normale doit etre vraie mot clé ensures requires x >= 0.0; ensures x == \result *\result; public static double sqrt(double x) {... } valeur par défaut : \not_specified, interprétée à true lors de l'exécution et par la majorité des outils

41 Spécification de méthodes et de classes Postcondition: deux clauses ensures P1; et ensures P2; sont équivalentes à ensures P1 && P2; l'opérateur && n'est pas commutatif : l'ordre des postconditions a son importance! Résultat d'une fonction : \result Accès aux valeurs avant appel : \old Attention : \old copie les référence \old(o) souvent différent de \old(o.a)

42 Spécification de méthodes et de classes Attributs modifiables Appelés «frame action» Permet de dire dans une spéc. «ces attributs peuvent changer... et rien d'autre ne change» terme venant du domaine IA héritage des prouveurs

43 Spécification de méthodes et de classes Attributs modifiables exemple : classe Point avec coordonnées x et y l'accesseur en écriture sur x ne doit pas modifier y ensures this.x == x; public void setx(int x) { this.x = x; }

44 Spécification de méthodes et de classes Attributs modifiables exemple : classe Point avec coordonnées x et y l'accesseur en écriture sur x ne doit pas modifier y ensures this.x == x; ensures \old(y) == y; public void setx(int x) { this.x = x; y = 1234; } ajout d'une post-condition pour détecter l'erreur

45 Spécification de méthodes et de classes Attributs modifiables exemple : classe Point avec coordonnées x et y l'accesseur en écriture sur x ne doit pas modifier y assignable x ensures this.x == x; public void setx(int x) { this.x = x; } En JML, on écrira que seul x peut changer

46 Spécification de méthodes et de classes Mot clé assignable exclut les paramètres formels et les variables locales si x est un attribut modèle, impossible d'utiliser x.toto dans une clause assignable; valeur par défaut : \not_specified, qui vaut dans la plupart des outils \everything autre valeur possible : \nothing; Raccourci pour assignable \nothing; : déclarer la méthode pure La validation des clauses assignable n'est pas faite à l'exécution (difficile)

47 Spécification de méthodes et de classes Postconditions exceptionnelles pour indiquer quelles exceptions une méthode peut lever : mot clé signals_only suivi d'une liste de noms d'exceptions valeur par défaut : liste des java.lang.exception déclarées dans la clause throws de la méthode java.lang.error pas pris en compte Pour indiquer dans quelles conditions une exception peut etre levée : mot clé signals suivi du nom d'exception, suivi d'une condition qui doit etre vraie si l'exception est levée par défaut : \not_specified, interprété par true dans la plupart des outils

48 Spécification de méthodes et de classes Exemple public void mafonction(disk d) throws FullTowerExc eption, IllegalPushException, NullPointerException;

49 Spécification de méthodes et de classes Exemple : signals_only IllegalPushException, public void mafonction(disk d) throws FullTowerExc eption, IllegalPushException, NullPointerException;

50 Spécification de méthodes et de classes Exemple : signals_only IllegalPushException, signals (NullPointerException e) signals (IllegalPushException e) d.size> signals (FullTowerException e) public void mafonction(disk d) throws FullTowerExc eption, IllegalPushException, NullPointerException;

51 Spécification de méthodes et de classes Exemple : signals_only IllegalPushException, signals (NullPointerException e) signals (IllegalPushException e) d.size> signals (FullTowerException e) public void mafonction(disk d) throws FullTowerExc eption, IllegalPushException, NullPointerException; Attention : JML ne lève pas l'exception à la place du programmeur, il se contente de vérifier que l'exception a été levée à bon escient : verifie que si FullTowerException a été levé, isfull() est vrai

52 Spécification de méthodes et de classes Ordre des éléments de spécification préconditions : requires clauses assignable postconditions normales : ensures postconditions exceptionnelles : signals_only et signals

53 Quantificateurs

54 Quantificateurs Ajout de quantificateurs par rapport à Eiffel quantificateur universel \forall quantificateur existentiel \exists somme sur une collection de numériques : \sum produit sur une collection de numériques : \product Même syntaxe que le for de Java

55 Quantificateurs Quantificateurs généralisés \sum, \product, \min, \max utilisés avec types numériques, tels int ou float (\sum int i; 0 <= i && i < 5; i) == (\product int i; 0 < i && i < 5; i) == 1*2*3*4 (\max int i; 0 <= i && i < 5; i) == 4 (\min int i; 0 <= i && i < 5; i 1) == 1

56 Quantificateurs Exemple sur listes : type List Typer une liste en JML List l =... ; invariant (\forall Object o; l.contains(o); o instanceof Poser une contrainte d'initialisation List l =... ; invariant (\exists Object o; l.contains(o); o!=

57 Quantificateurs Exemple sur listes : type List Spécifier un résultat List l =... ; \result = \sum (Integer i; l.contains(i); Contraintes sur les éléments d'un tableau String[] array =... ; (\forall int i; 0 <= i && i < array.length; array[i]!=

58 Spécification par cas

59 Spécification par cas Permet de développer des spécifications en mini-contrats Mot clé : also Permet d'écrire des spécifications de la forme: Dans le cas précond1, alors postcond1; et aussi : dans le cas précond2, alors postcond2; etc...

60 Spécification par cas Exemple : calcul d'une valeur absolue ensures x >=0 ==> \result == x; ensures x <0 ==> \result == x; public int valabs(int x) {... } requires x >= ensures \result == requires x < ensures \result == public int valabs(int x) {...}

61 Spécification par cas Exemple : calcul d'une valeur absolue requires x >= 0 x < ensures \old(x>=0) ==> \result == ensures \old(x<0) ==> \result == public int valabs(int x) {... }

62 Application

63 Gestionnaire de cours Mise en place d'un gestionnaire de cours : Un cours a un nombre max de places disponibles Un étudiant (nom prénom) peut s'inscrire à un 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 diplome. Sinon il est collé Un étudiant collé peut repasser une fois l'examen avant d'etre définitivement refusé. etc...

64 Gestionnaire de cours Une classe Etudiant deux attributs : nom et prénom 1 constructeur : Etudiant (nom, prénom) 1 méthode : tostring() Une classe Cours 5 attributs : max, inscrits, collé, refusé, diplômé 1 constructeur : Cours(maxi) 4 méthodes : nouvel_etudiant(etudiant), test_reussi(etudiant), test_rate_colle(etudiant), test_rate_refuse(etudiant)

65 Gestionnaire de cours classe Etudiant 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 ; }

66 Gestionnaire de cours classe Etudiant 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 ; }

67 Gestionnaire de cours classe Etudiant 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 ; }

68 Gestionnaire de cours classe Cours 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) ; }

69 Gestionnaire de cours classe Cours public void nouvel_etudiant(etudiant etudiant) { inscrits.add(etudiant) ; } public void_test_reussi(etudiant etudiant) { inscrits.remove(etudiant) ; diplomes.add(etudiant) ; } public void test_rate_colle(etudiant etudiant) { colles.add(etudiant) ; } }

70 Gestionnaire de cours classe Cours 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 ;

71 Gestionnaire de cours classe Cours 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))

72 Gestionnaire de cours classe initially inscrits.isempty() initially colles.isempty() initially refuses.isempty() initially diplomes.isempty()

73 Gestionnaire de cours classe initially inscrits.isempty() initially colles.isempty() initially refuses.isempty() initially diplomes.isempty() Cours(int maxi) { max = maxi ; inscrits = new HashSet(max) ; colles = new HashSet(max) ; refuses = new HashSet(max) ; diplomes = new HashSet(max) ; }

74 Gestionnaire de cours classe 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) ; }

75 Gestionnaire de cours classe Cours public void nouvel_etudiant(etudiant etudiant){ inscrits.add(etudiant) ; }

76 Gestionnaire de cours classe 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) ; }

77 Gestionnaire de cours classe Cours public void test_reussi(etudiant etudiant) { inscrits.remove(etudiant) ; diplomes.add(etudiant) ; }

78 Gestionnaire de cours classe requires inscrits.contains(etudiant) ensures!inscrits.contains(etudiant) ensures diplomes.contains(etudiant) public void test_reussi(etudiant etudiant) { inscrits.remove(etudiant) ; diplomes.add(etudiant) ; }

79 Gestionnaire de cours classe Cours public void test_rate_colle(etudiant etudiant) { colles.add(etudiant) ; }

80 Gestionnaire de cours classe requires inscrits.contains(etudiant) requires!colles.contains(etudiant) ensures colles.contains(etudiant) public void test_rate_colle(etudiant etudiant) { colles.add(etudiant) ; }

81 Gestionnaire de cours classe Cours public void test rate refuse(etudiant etudiant){ inscrits.remove(etudiant) ; colles.remove(etudiant) ; refuses.add(etudiant) ; }

82 Gestionnaire de cours classe requires inscrits.contains(etudiant) requires colles.contains(etudiant) ensures!inscrits.contains(etudiant) ensures!colles.contains(etudiant) ensures refuses.contains(etudiant) public void test rate refuse(etudiant etudiant){ inscrits.remove(etudiant) ; colles.remove(etudiant) ; refuses.add(etudiant) ; }

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. Java Modeling Language (JML) Qu est-ce que JML? Java (suite) Conception par Contrat. Invariants, Pré-/Postconditions

Java. Java Modeling Language (JML) Qu est-ce que JML? Java (suite) Conception par Contrat. Invariants, Pré-/Postconditions 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) http://java.sun.com/

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

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

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

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

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

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

Plus en détail

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

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

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

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

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

L héritage Encore un petit topo des familles. Je pense qu'avec ce genre de chapitre, ce n'est pas du luxe...

L héritage Encore un petit topo des familles. Je pense qu'avec ce genre de chapitre, ce n'est pas du luxe... L héritage Encore un petit topo des familles. Je pense qu'avec ce genre de chapitre, ce n'est pas du luxe... Une classe hérite d'une autre classe par le biais du mot clé extends. Une classe ne peut hériter

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

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

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

Java Licence professionnelle CISI 2009-2010

Java Licence professionnelle CISI 2009-2010 Java Licence professionnelle CISI 2009-2010 Cours 10 : Type générique (c) http://manu.e3b.org/java/tutoriels/avance/generique.pdf 1 Introduction La programmation générique - nouveauté la plus significative

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

Programmation orientée objets

Programmation orientée objets POO : mais pourquoi? La Programmation Orientée Objets (POO) a pour but final de faciliter le débogage, la maintenance et la mise à jour d'applications complexes. C++, Java et Scala sont des exemples de

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

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

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

Plus en détail

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

Cours 13. Les classes abstraites Les méthodes abstraites Les interfaces. F. Gayral 1

Cours 13. Les classes abstraites Les méthodes abstraites Les interfaces. F. Gayral 1 Cours 13 Les classes abstraites Les méthodes abstraites Les interfaces F. Gayral 1 Un exemple pour mieux comprendre Pas d'instanciation d'un humain : un humain, c'est - soit un homme - soit une femme Humain

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

Programmation Java. Redéfinition de méthode (masquage)

Programmation Java. Redéfinition de méthode (masquage) Programmation Java Programmation objet avec Java Concepts plus avancés Christelle Urtado & Sylvain Vauttier Janvier 2013 Redéfinition de méthode (masquage) Une sous-classe peut redéfinir le code de méthodes

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

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml OCL Object Constraint Language Le langage de contraintes d'uml Plan 1. Introduction 2. Les principaux concepts d'ocl Object Constraint Language 1 Object Constraint Language 2 Exemple: une application bancaire

Plus en détail

Chapitre 2. Classes et objets

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

Plus en détail

BTS S.I.O. 2012-2013 PHP OBJET. Module SLAM4. Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais

BTS S.I.O. 2012-2013 PHP OBJET. Module SLAM4. Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais BTS S.I.O. 2012-2013 PHP OBJET Module SLAM4 Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais Table des matières 1 But... 3 2 Les bases :... 3 3 Utilisation d'une classe : Instanciation...3

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

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

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

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

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

Arité variable, énumérations. Arité variable. Arité des méthodes. Utilisation de la surcharge

Arité variable, énumérations. Arité variable. Arité des méthodes. Utilisation de la surcharge Arité variable, énumérations Théorie et pratique de la programmation Michel Schinz 2013-05-13 Arité variable 1 2 Arité des méthodes Utilisation de la surcharge Il est parfois utile d'offrir des méthodes

Plus en détail

1. Les fondements de l informatique 13

1. Les fondements de l informatique 13 Introduction à l'algorithmique 1. Les fondements de l informatique 13 1.1 Architecture de Von Neumann 13 1.2 La machine de Turing 17 1.3 Représentation interne des instructions et des données 19 1.3.1

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

Année 2008-2009. Les exceptions Java. Nicolas Baudru mél : nicolas.baudru@esil.univmed.fr page web : nicolas.baudru.perso.esil.univmed.

Année 2008-2009. Les exceptions Java. Nicolas Baudru mél : nicolas.baudru@esil.univmed.fr page web : nicolas.baudru.perso.esil.univmed. Année 2008-2009 Les exceptions Java Nicolas Baudru mél : nicolas.baudru@esil.univmed.fr page web : nicolas.baudru.perso.esil.univmed.fr 1 Introduction Supposez que vous écrivez un programme qui accède

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

La Gestion des Exceptions

La Gestion des Exceptions La Gestion des Exceptions Les exceptions Les exceptions représentent le mécanisme de gestion des erreurs intégré au langage Java. Il se compose d'objets représentant les erreurs et d'un ensemble de troismotsclésquipermettentdedétecteretdetraiterceserreurs(try,

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

Cours 1: Java et les objets

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

Plus en détail

Java 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

Programmation par les Objets en Java

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

Plus en détail

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

Syntaxe du langage JAVA. Philippe Roose (IUT Bayonne) Olivier Dedieu (INRIA)

Syntaxe du langage JAVA. Philippe Roose (IUT Bayonne) Olivier Dedieu (INRIA) Syntaxe du langage JAVA Philippe Roose (IUT Bayonne) Olivier Dedieu (INRIA) Structure du langage Les types primitifs boolean(true/false), byte (1 octet), char (2 octets), short (2 octets), int (4 octets),

Plus en détail

GL / C++ Chapitre 7. Lien Dynamique Méthodes Virtuelles

GL / C++ Chapitre 7. Lien Dynamique Méthodes Virtuelles GL / C++ Chapitre 7 Lien Dynamique Méthodes Virtuelles 1. Pointeur sur un objet d'une classe dérivée Considérons les classes écrites précédemment : Personne Etudiant // dérive de personne Salarie // dérive

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

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

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

Informatique / Programmation

Informatique / Programmation Informatique / Programmation Programmation orientée objet avec Java 06 : Les exceptions et leur traitement Jacques Bapst jacques.bapst@hefr.ch Exceptions Les exceptions représentent des événements qui

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

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

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

Tests unitaires avec Visual Studio

Tests unitaires avec Visual Studio Tests unitaires avec Visual Studio (source MSDN) Rappels (initiation aux tests unitaires SI6 Tp6) Les tests unitaires offrent aux développeurs une méthode rapide pour rechercher des erreurs de logique

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

Rappels Java. V.Marangozova-Martin. 1 Classes, instanciation, objets, main

Rappels Java. V.Marangozova-Martin. 1 Classes, instanciation, objets, main Rappels Java V.Marangozova-Martin 1 Classes, instanciation, objets, main Java est un langage pour la programmation orientée-objet (POO). La programmation par objets permet de structurer les programmes

Plus en détail

Exceptions. Fiabilité d un logiciel. Fiabilité en Java. Erreurs/exceptions. Localisation du traitement des erreurs/exceptions.

Exceptions. Fiabilité d un logiciel. Fiabilité en Java. Erreurs/exceptions. Localisation du traitement des erreurs/exceptions. Fiabilité d un logiciel Exceptions Université Française d Egypte Version O 5.7 5/10/15 Richard Grin Robustesse : fonctionne correctement, même en présence d événements exceptionnels Correction : donne

Plus en détail

Héritage Concepts généraux des classes dérivées. Les concepts de base de la POO Application en C++ Héritage Concepts généraux des classes dérivées

Héritage Concepts généraux des classes dérivées. Les concepts de base de la POO Application en C++ Héritage Concepts généraux des classes dérivées Les concepts de base de la POO Application en C++ Classes abstraites Possibilité de définir de nouveaux objets à partir des objets existants Hiérarchie de généralisation/ spécialisation Une classe descendante

Plus en détail

Plan. Environnement Client/Serveur. Cours 6 Rappels Java (suite) Appel de méthode à distance. Utilité. static

Plan. Environnement Client/Serveur. Cours 6 Rappels Java (suite) Appel de méthode à distance. Utilité. static Plan Environnement Client/Serveur Cours 6 Rappels Java (suite) Appel de méthode à distance kn@lri.fr http://www.lri.fr/~kn 1 Rappels sur les systèmes d'exploitations / Communication par mémoire partagée

Plus en détail

Informatique / Programmation

Informatique / Programmation Informatique / Programmation Programmation orientée objet avec Java 02 : Expressions et opérateurs Jacques Bapst jacques.bapst@hefr.ch Expressions [1] Les expressions sont des entités composées de littéraux,

Plus en détail

Chapitre 10. Les interfaces Comparable et Comparator 1

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

Plus en détail

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

Licence Professionnelle TAI Programmation Orientée Objets Gestion de comptes en banque (Philippe.Genoud@imag.fr)

Licence Professionnelle TAI Programmation Orientée Objets Gestion de comptes en banque (Philippe.Genoud@imag.fr) Grenoble 1 IMA Informatique & Mathématiques Appliquées UNIVERSITE JOSEPH FOURIER Sciences, Technologie, Médecine Licence Professionnelle TAI Programmation Orientée Objets Gestion de comptes en banque (Philippe.Genoud@imag.fr)

Plus en détail

Java. Partie 1 : QCM. Consignes pour le bons déroulement du devoir

Java. Partie 1 : QCM. Consignes pour le bons déroulement du devoir Consignes pour le bons déroulement du devoir - Ce document comporte un QCM et une partie où il faut écrire du code en - Marquez vos réponses au QCM sur la feuille de réponses fournie (notez que certaines

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

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

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

Héritage en java : Calculatrice SDC

Héritage en java : Calculatrice SDC Programmation orientée objet L3 MIAGE Héritage en java : Calculatrice SDC Travail à rendre : le code complet du projet SDC sous forme d une archive tar.gz. L archive comportera trois répertoires : un répertoire

Plus en détail

DUT Informatique Module JAVA Apprentis Département Informatique 2008 / 2009. Travaux Pratiques n o 2 : JUnit

DUT Informatique Module JAVA Apprentis Département Informatique 2008 / 2009. Travaux Pratiques n o 2 : JUnit iut ORSAY DUT Informatique Département Informatique 2008 / 2009 Travaux Pratiques n o 2 : JUnit Nom(s) : Groupe : Date : Objectifs : Apprendre à vérifier une implantation à l aide de tests unitaires sous

Plus en détail

Cours 3. La conditionnelle: instructions si et selon Les boucles Comment raisonner sur les boucles: les invariants de boucle

Cours 3. La conditionnelle: instructions si et selon Les boucles Comment raisonner sur les boucles: les invariants de boucle Cours 3 : Instructions qui changent l ordre d exécution séquentiel 1 Cours 3 Instructions qui changent l ordre d exécution séquentiel La conditionnelle: instructions si et selon Les boucles Comment raisonner

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

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

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

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

S. Laporte C# mode console DAIGL TS1

S. Laporte C# mode console DAIGL TS1 Bases du langage C# I. C# en mode console (mode texte) Avantages par rapport au mode graphique (Application Windows): - C'est un mode plus proche de l'approche algorithmique (pas de notions de composants,

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

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement des objets d'une classe Utilisation d'une classe Droit

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

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

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, 2000-2015, ISBN : 978-2-212-14154-2

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, 2000-2015, ISBN : 978-2-212-14154-2 Anne Tasso Java Le livre de premier langage 10 e édition Avec 109 exercices corrigés Groupe Eyrolles, 2000-2015, ISBN : 978-2-212-14154-2 Table des matières Avant-propos Organisation de l ouvrage..............................

Plus en détail

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

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

Plus en détail

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

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

Le mécanisme d exception du langage Java

Le mécanisme d exception du langage Java Le mécanisme d exception du langage Java 1 / 39 Plan 1 Introduction aux exceptions en Java 2 Exemples de code avec gestion des exceptions 3 Créer ses propres exceptions 4 Instruction try/catch/finally

Plus en détail

Java. Java. Le livrede. Avec 80 exercices corrigés. Avec 80 exercices corrigés. Le livre. Anne Tasso. 5 e édition. Un best-seller qui a déjà conquis

Java. Java. Le livrede. Avec 80 exercices corrigés. Avec 80 exercices corrigés. Le livre. Anne Tasso. 5 e édition. Un best-seller qui a déjà conquis Anne Tasso Un best-seller qui a déjà conquis des milliers d'étudiants! Java Le livre Java Le livrede de premier premier langage langage Avec 80 exercices corrigés Avec 80 exercices corrigés 5 e édition

Plus en détail

POO LES EXCEPTIONS LES EXCEPTIONS

POO LES EXCEPTIONS LES EXCEPTIONS CHAPITRE 7 : LES EXCEPTIONS Objectifs spécifiques 1. Introduire la notion d exception, les règles d utilisation et de définition des exceptions. 2. Distinguer entre les exceptions prédéfinies et les exceptions

Plus en détail

Exercice 1 (API Java)

Exercice 1 (API Java) Programmation orientée objet TP 3 L2 MPCIE API Java, Paquetages Exercice 1 (API Java) 1. Écrire la classe Ensemble comme étant une collection d'éléments ne contenant pas de doublon. Elle sera donc implémentée

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

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

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

OCL - Object Constraint Language

OCL - Object Constraint Language OCL - Object Constraint Language Laëtitia Matignon laetitia.matignon@univ-lyon1.fr Département Informatique - Polytech Lyon Université Claude Bernard Lyon 1 2012-2013 Laëtitia Matignon SIMA - OCL - Object

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

PHP 5 : PROGRAMMATION OBJET

PHP 5 : PROGRAMMATION OBJET PHP 5 : PROGRAMMATION OBJET 1. Déclaration d une classe 2. Déclaration d un objet 3. Encapsulation et visibilité 4. Membres statiques 5. Constructeur 6. Destructeur 7. Héritage 8. Surcharge et surdéfinition

Plus en détail

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

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

Plus en détail

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

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 au langage C++ Marc Jachym, Lurpa

Une introduction au langage C++ Marc Jachym, Lurpa Une introduction au langage C++ Marc Jachym, Lurpa Janvier 2008 À l origine, le langage C Langage procédural créé dans les années 1970 aux laboratoires Bell (ATT : télécoms américains) en vue d écrire

Plus en détail

Université de Bourgogne - UFR Sciences et Technique - Programmation objet - LPSIL - 2013

Université de Bourgogne - UFR Sciences et Technique - Programmation objet - LPSIL - 2013 Nom : Prénom : Contrôle continu n 4 Programmation objet Vous devez répondre dans les cadres aux questions posées. Documents de cours et notes personnelles autorisés. Téléphones portables, ordinateurs et

Plus en détail

Concepts des langages de. Introduction à Clojure

Concepts des langages de. Introduction à Clojure Concepts des langages de programmation Introduction à Clojure Plan C'est quoi clojure? Types et structures de données Fonctions et expressions dans Clojure Commentaires en Clojure Définition de variables

Plus en détail