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

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

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

Transcription

1 Analyse statique de programmes Typage et analyse statique au sein de Java Master Professionnel Informatique spécialité FSIL/FSI Jean-Marc Talbot Aix-Marseille Université 7 nov 2011 Jean-Marc Talbot (Aix-Marseille Université)Typage et analyse statique au sein de Java 7 nov / 32

2 Bibliographie Notes de cours de François Barthélemy Notes de cours de Jean-Marc Rifflet The Java TM Virtual Machine Specification Sun Jean-Marc Talbot (Aix-Marseille Université)Typage et analyse statique au sein de Java 7 nov / 32

3 Plan du cours 1 Typage de Java 2 Typage et le bytecode Java Jean-Marc Talbot (Aix-Marseille Université)Typage et analyse statique au sein de Java 7 nov / 32

4 Java Langage Orienté Objet à base de classes supporte l héritage simple (contrairement à C++) mais notion d interfaces (classe abstraite en C++ avec méthodes virtuelles pures) une classe... ne peut hériter que d une classe mais implémenter plusieurs interfaces Jean-Marc Talbot (Aix-Marseille Université)Typage et analyse statique au sein de Java 7 nov / 32

5 Typage de Java : garanties comme dans tous les autres langages, les opérandes et les opérations doivent avoir des types qui correspondent. l écriture de a.m(s 1,.., s n ) dans mon programme implique que l objet a a effectivement une méthode qui s appelle m et le type de la méthode est le bon (paramètres et valeur retournée) class A{ void m(a a){... class B extends A{ void n(b b){... B b = new B();.. b.m(b)... une affectation est possible si la valeur a suffisament de champs B b = new B(); A a = b; Jean-Marc Talbot (Aix-Marseille Université)Typage et analyse statique au sein de Java 7 nov / 32

6 Typage de Java : garanties comme dans tous les autres langages, les opérandes et les opérations doivent avoir des types qui correspondent. l écriture de a.m(s 1,.., s n ) dans mon programme implique que l objet a a effectivement une méthode qui s appelle m et le type de la méthode est le bon (paramètres et valeur retournée) class A{ void m(a a){... class B extends A{ void n(b b){... B b = new B();.. b.m(b)... une affectation est possible si la valeur a suffisament de champs B b = new B(); A a = b; Jean-Marc Talbot (Aix-Marseille Université)Typage et analyse statique au sein de Java 7 nov / 32

7 Typage de Java : généralités Le typage passe par les classes et les interfaces avec une relation de sous-typage comprenant : une classe peut hériter d une autre classe une classe peut implémenter un ou plusieurs interfaces une interface peut hériter d une ou plusieurs interfaces Java est un langage à typage statique fort En réalité, statique : pas complètement (une partie du typage est faite dynamiquement) fort : pas tant que ça (mais de gros progrès depuis la généricité) Jean-Marc Talbot (Aix-Marseille Université)Typage et analyse statique au sein de Java 7 nov / 32

8 Typage de Java : curiosité class A{ void m(a a){ System.out.println("m de A"); void n(a a){ System.out.println("n de A"); class B extends A{ void m(a a){ System.out.println("m de B"); void n(b b){ System.out.println("n de B"); public static void main(string[] argv){ A a = new B(); B b = new B(); a.m(b); a.n(b); Quel est le type de a? Que fait ce programme? Jean-Marc Talbot (Aix-Marseille Université)Typage et analyse statique au sein de Java 7 nov / 32

9 Typage de Java : curiosité class A{ void m(a a){ System.out.println("m de A"); void n(a a){ System.out.println("n de A"); class B extends A{ void m(a a){ System.out.println("m de B"); void n(b b){ System.out.println("n de B"); public static void main(string[] argv){ A a = new B(); B b = new B(); a.m(b); a.n(b); m de B n de A Jean-Marc Talbot (Aix-Marseille Université)Typage et analyse statique au sein de Java 7 nov / 32

10 Hiérarchie des Types Un type est soit une classe C, soit une interface I Définition de la relation de sous-typage : pour tout type T on a T T (réflexivité de la relation) ; si la classe SC est une sous-classe de C, on a SC C ; si l interface SI est une sous-interface de I, on a SI I; si la classe C implante l interface I, on a C I; si ST T, alors ST [ ] T [ ]; si SST ST et ST T, alors SST T (transitivité de la relation). si T est un type, alors T [ ] Object Si ST T alors on peut mettre une valeur de type ST là où une valeur de type T est attendue. Jean-Marc Talbot (Aix-Marseille Université)Typage et analyse statique au sein de Java 7 nov / 32

11 Algorithme de typage en 2 phases Chaque phase parcourt le source Java du fichier Phase 1 : collection de l environnement de typage Γ Phase 2 : vérification des types pour l environnement Γ Utile car l ordre de définition des classes est sans importance au sein d un même fichier. Jean-Marc Talbot (Aix-Marseille Université)Typage et analyse statique au sein de Java 7 nov / 32

12 Algorithme de typage : Phase 1 Construction de l environnement de typage en parcourant l ensemble des classes et interfaces d un fichier. Cet environnement regroupe les informations de type pour les variables d instance et les méthodes de chacune des classes et interfaces. Pour chaque classe, on conserve le nom de la super-classe les interfaces implémentées par la classe les variables d instances définies dans cette classe (non héritées) avec leur type. les méthodes définies dans cette classe (non héritées) avec leur type. Pour chaque interface, on conserve les noms des super-interfaces les variables d instances définies dans cette interface (non héritées) avec leur type. les méthodes définies dans cette interface (non héritées) avec leur type. Jean-Marc Talbot (Aix-Marseille Université)Typage et analyse statique au sein de Java 7 nov / 32

13 Algorithme de typage : Phase 1 Exemple : class A{ void m(a a){ System.out.println("m de A"); void n(a a){ System.out.println("n de A"); Γ = class B extends A{ void m(a a){ System.out.println("m de B"); void n(b b){ System.out.println("n de B"); public static void main(string[] argv) { A a = new B(); B b = new B(); a.m(b); a.n(b); { (class A, Object, {, {, {(m, A, void), (n, A, void)), (class B, class A, {, {, {(m, A, void), (n, B, void), (main, String[], void)) Jean-Marc Talbot (Aix-Marseille Université)Typage et analyse statique au sein de Java 7 nov / 32

14 Algorithme de typage : Phase 2 Typage des classes : une classe C est bien typée si : la relation ne contient pas de cycle non-triviaux les variables d instance ont toutes des noms différents il n existe pas deux méthodes de C qui possèdent exactement le même profil d arguments si C redéfinit une méthode d une de ses classes ancètres (ie avec le même profil d arguments) alors les types de retour sont identiques. C contient directement ou par héritage toutes les méthodes des interfaces qu elle implémente et ce avec des types identiques la suite des variables d instance est bien typée toutes les méthodes de la classe C sont bien typées Jean-Marc Talbot (Aix-Marseille Université)Typage et analyse statique au sein de Java 7 nov / 32

15 Algorithme de typage : Phase 2 Typage des variables d instance T 1 v 1 = e 1 ; T 2 v 2 = e 2 ;... T n v n = e n; e 1 : T 1 Γ et T 1 T 1 e 2 : T 2 Γ {(v 1 : T 1 ) et T 2 T 2... e n : T n Γ {(v 1 : T 1 )...(v n 1 : T n 1 ) et T n T n T 1 v 1 = e 1 ; T 2 v 2 = e 2 ;... T n v n = e n ; : void Γ Jean-Marc Talbot (Aix-Marseille Université)Typage et analyse statique au sein de Java 7 nov / 32

16 Algorithme de typage : Phase 2 Typage des méthodes de la classe T m(t 1 x 1,...,T n x n){ inst 1 ; inst 2 ;... inst k ; ; inst 1 ; : void, inst 2 ; : void,..., inst k ; : void pour tout i tel que inst i = return exp, exp : T Γ {(x 1 : T 1 ),..., (x n : T n) et T T T m(t 1 x 1,..., T n x n){inst 1 ; inst 2 ;...inst k ; ; : void Jean-Marc Talbot (Aix-Marseille Université)Typage et analyse statique au sein de Java 7 nov / 32

17 Algorithme de typage : Phase 2 Typage des instructions : affectation v : T Γ, e : T Γ et T T v = e; : void Jean-Marc Talbot (Aix-Marseille Université)Typage et analyse statique au sein de Java 7 nov / 32

18 Algorithme de typage : Phase 2 Typage des instructions : invocation de méthode le typage statique de l invocation d une méthode vise à déterminer le profil de la méthode qui sera invoquée à l exécution. (mais le choix de la méthode se fait à l exécution : liaison tardive) Afin que o.m(e 1,..,e n ) soit bien typé, si e 1 :T 1 Γ,..., e n :T n Γ alors la méthode invoquée m(t 1 x 1,...,T n x n ) vérifie T 1 T 1,...,T n T n. Mais dans quelle classe choisir cette méthode du fait de l héritage et de la surcharge et quel sera le type statique exacte de cette méthode? Jean-Marc Talbot (Aix-Marseille Université)Typage et analyse statique au sein de Java 7 nov / 32

19 Algorithme de typage : Phase 2 Typage des instructions : invocation de méthode class A{ int m(a a) {... class B extends A{ boolean m(b b) {... int m(a a) {... B b1 = new B(); A b2 = new B();... Quel est le type de b1.m(b1), de b2.m(b2) et de b1.m(b2)? En partant de la classe de l objet sur lequel l invocation est faite, on collectionne en remontant la hiérarchie toutes les méthodes de nom m et de type compatible. ici, pour b1.m(b1) (avec b1:b Γ): 1 boolean m(b b) dans la classe B 2 int m(a a) dans la classe B 3 int m(a a) dans la classe A Jean-Marc Talbot (Aix-Marseille Université)Typage et analyse statique au sein de Java 7 nov / 32

20 Algorithme de typage : Phase 2 Typage des instructions : invocation de méthode class A{ int m(a a) {... class B extends A{ boolean m(b b) {... int m(a a) {... B b1 = new B(); A b2 = new B();... Quel est le type de b1.m(b1), de b2.m(b2) et de b1.m(b2)? En partant de la classe de l objet sur lequel l invocation est faite, on collectionne en remontant la hiérarchie toutes les méthodes de nom m et de type compatible. ici, pour b1.m(b1) (avec b1:b Γ): 1 boolean m(b b) dans la classe B 2 int m(a a) dans la classe B 3 int m(a a) dans la classe A Jean-Marc Talbot (Aix-Marseille Université)Typage et analyse statique au sein de Java 7 nov / 32

21 Algorithme de typage : Phase 2 Typage des instructions : invocation de méthode (suite) Pour chacune des méthodes trouvées, on calcule le produit cartésien de la classe et du profil des arguments de la méthode. ici, 1 (B,B) 2 (B,A) 3 (A,A) On choisit comme type de l invocation celui retourné par la méthode de m de la classe C avec pour profil d arguments (T 1,...,T n ) avec un produit cartésien minimal dans ceux calculés, pour l ordre (C, T 1,..., T n ) (C, T 1,..., T n ) ssi C C et T 1 T 1,..., T n T n ici, le tuple minimal est B,B (puisque B A) et donc le type retourné par cette méthode est boolean. b1.m(b1) est donc de type boolean Jean-Marc Talbot (Aix-Marseille Université)Typage et analyse statique au sein de Java 7 nov / 32

22 Algorithme de typage : Phase 2 Typage des instructions : invocation de méthode Cependant,... class A{ int m(b b) {... class B extends A{ bool m(a a) {... A a = new A(); B b = new B();... Quel est le type de b1.m(b1)? 1 (A,B) 2 (B,A) Pas d élement minimal ambiguité : le programme est rejeté à la compilation. On peut lever l ambiguité en privilégiant, par exemple, la classe. Jean-Marc Talbot (Aix-Marseille Université)Typage et analyse statique au sein de Java 7 nov / 32

23 Typage réel/dynamique vs type déclaré/statique class A{ void print(int i){system.out.println("dans A");; class B extends A{ void print(int i){system.out.println("dans B");; class essai{ public static void main(string[] argv){ A b = new B(); b.print(1); Type statique : inférer par l algorithme (type statique de b = A) Type dynamique : celui de l objet à l exécution (type dynamique de b = B) Le typage (statique) nous donne le profil de la méthode à invoquer et nous assure qu une méthode avec le bon type existe Mais liaison tardive/late binding : le choix de la méthode se fait à l exécution avec le type réel. Jean-Marc Talbot (Aix-Marseille Université)Typage et analyse statique au sein de Java 7 nov / 32

24 Typage à l exécution : ce qu il reste à vérifier Transtypage vers le bas (explicite) : (T)a utile notamment pour les SDD de l API Java (antérieures à la généricité) en supposant a de type T, ce transtypage nécessite juste un type comparable : T T ou T T pour passer la compilation Remarque : (T)a est une expression de type T Eventuel problème à l exécution si le type réel de l objet n est un sous-type de T. Jean-Marc Talbot (Aix-Marseille Université)Typage et analyse statique au sein de Java 7 nov / 32

25 Typage à l exécution : ce qu il reste à vérifier Transtypage vers le bas (explicite) : (T)a utile notamment pour les SDD de l API Java (antérieures à la généricité) en supposant a de type T, ce transtypage nécessite juste un type comparable : T T ou T T pour passer la compilation Remarque : (T)a est une expression de type T Eventuel problème à l exécution si le type réel de l objet n est un sous-type de T. Jean-Marc Talbot (Aix-Marseille Université)Typage et analyse statique au sein de Java 7 nov / 32

26 Plan du cours 1 Typage de Java 2 Typage et le bytecode Java Jean-Marc Talbot (Aix-Marseille Université)Typage et analyse statique au sein de Java 7 nov / 32

27 Exécution d un programme Java Jean-Marc Talbot (Aix-Marseille Université)Typage et analyse statique au sein de Java 7 nov / 32

28 Un exemple de fichier.class class essai extends java.lang.object{ essai(); Code: 0: aload 0 1: invokespecial #1; //Method java/lang/object."<init>":()v 4: return public static void main(java.lang.string[]); Code: 0: new #2; //class B 3: dup 4: invokespecial #3; //Method B."<init>":()V 7: astore 1 8: aload 1 9: iconst 1 11: invokevirtual #4; //Method A.print:(I)V 14: return Jean-Marc Talbot (Aix-Marseille Université)Typage et analyse statique au sein de Java 7 nov / 32

29 La machine virtuelle Java : architecture Jean-Marc Talbot (Aix-Marseille Université)Typage et analyse statique au sein de Java 7 nov / 32

30 JVM pc contient l adresse de l instruction courante; La mémoire contient un tas (heap) dans lequel les objets sont alloués Pour chaque thread, Frame stack : une frame est créée à chaque invocation de méthodes et empilée sur la frame stack; à la fin de l exécution de la méthode, la frame correspondante est dépilée. Chaque frame contient : la méthode courante des variables locales la pile des opérandes Jean-Marc Talbot (Aix-Marseille Université)Typage et analyse statique au sein de Java 7 nov / 32

31 JVM : langage Le langage de la JVM est un langage de bas niveau (type langage machine) mais orientée objet. contient les principaux types primitifs de Java supporte les classes et les interfaces. Le langage utilise intensément la pile des opérandes pour faire la manipulation des données (y compris objet) et les branchements conditionnels : iadd, isub,... ifeq, if icmpeq, if icmpne,... new, putfield, getfield,... L appel de méthodes se fait notamment avec invokevirtual, invokespecial. Jean-Marc Talbot (Aix-Marseille Université)Typage et analyse statique au sein de Java 7 nov / 32

32 JVM : Bytecode verifier Le bytecode est un langage de bas niveau orientée objet avec un mécanisme de typage statique. Pourquoi vérifier le bytecode? le code produit par javac est sûr mais la JVM ignore la provenance du bytecode qu elle charge. il faut donc (re)vérifier le typage il faut garantir des propriétés supplémentaires pour le bon fonctionnement de la JVM Le gestionnaire de sécurité effectue d autres vérification : Propriétés de sécurité (voir le cours de sécurité) Jean-Marc Talbot (Aix-Marseille Université)Typage et analyse statique au sein de Java 7 nov / 32

33 JVM : Bytecode verifier Propriétés vérifiées : on ne forge pas de pointeur l accès aux méthodes et aux champs d un objet est garanti (le champs ou la méthode existe effectivement) l accès aux méthodes et aux champs d un objet respecte les règles d accès les opérations et les invocations de méthodes se font sur des valeurs de type correct. la hauteur de la pile d opérandes est borné et il n y a pas d erreurs d understack. toutes les branches du flot de contrôle d une méthode non-void conduit à un return et le sommet de la pile des opérandes est du type de la méthode.... Jean-Marc Talbot (Aix-Marseille Université)Typage et analyse statique au sein de Java 7 nov / 32

34 JVM : Bytecode verifier Hauteur de pile bornée : La zone contenant la pile opérandes de la JVM et les variables locales doit être de taille borné. La pile doit donc être de hauteur bornée. 8 : ifeq : dup 13 : iconst 1 14 : isub 15 : dup 16 : goto 8 17 : ne passe pas le vérificateur! Jean-Marc Talbot (Aix-Marseille Université)Typage et analyse statique au sein de Java 7 nov / 32

35 JVM : Bytecode verifier Hauteur de pile bornée : On va vérifier que pour chaque instruction, il existe un entier k tel que la hauteur de la pile est k à l issu de l exécution de l instruction. On se place dans le cadre de l analyse de flot de données : On abstrait chaque instruction par une fonction que résume l action de celle-ci sur la pile 8 : ifeq : dup 13 : iconst 1 14 : isub 15 : dup 16 : goto 8 17 : λx.x 1 λx.x + 1 λx.x + 1 λx.x 1 λx.x + 1 λx.x Jean-Marc Talbot (Aix-Marseille Université)Typage et analyse statique au sein de Java 7 nov / 32

36 JVM : Bytecode verifier Hauteur de pile bornée : On extrait du programme un ensemble d équations en utilisant les fonctions d abstraction (en supposant que H i est la hauteur de pile après l instruction i): et on résout ce système sur N, H 12 = H H 13 = H H 14 = H 13 1 H 15 = H H 16 = H 15 H 8 = H 16 1 H 16 = H Pas de solution! le code est rejeté! Remarque : S il existe une solution sur Z mais pas sur N alors on a détecté un stack underflow Jean-Marc Talbot (Aix-Marseille Université)Typage et analyse statique au sein de Java 7 nov / 32

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

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

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

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

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

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

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

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

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

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

Objets et Programmation. origine des langages orientés-objet

Objets et Programmation. origine des langages orientés-objet Objets et Programmation origine des langages orientés-objet modularité, encapsulation objets, classes, messages exemples en Java héritage, liaison dynamique G. Falquet, Th. Estier CUI Université de Genève

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

F. Barthélemy. 17 mai 2005

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

Plus en détail

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

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

Plus en détail

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

Java embarqué. Module I500 de L3 Benoît Miramond

Java embarqué. Module I500 de L3 Benoît Miramond Java embarqué Module I500 de L3 Benoît Miramond Problématique Quel rapport entre Java et l architecture? Java travail sur un modèle d exécutif différent des langages compilés => Étude des modèles exécutif

Plus en détail

Chapitre VI- La validation de la composition.

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

Plus en détail

Algorithmique et Analyse d Algorithmes

Algorithmique et Analyse d Algorithmes Algorithmique et Analyse d Algorithmes L3 Info Cours 5 : Structures de données linéaires Benjamin Wack 2015-2016 1 / 37 La dernière fois Logique de Hoare Dichotomie Aujourd hui Type Abstrait de Données

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

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

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

Algorithmique Programmation

Algorithmique Programmation Algorithmique Programmation 2ème partie DUT en alternance CNAM 2007-2008 2 Table des matières 1 Premiers Pas en Programmation Objet : les Classes et les Objets 7 1.1 Définir une Classe........................................

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

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

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

Introduction à la Programmation 1

Introduction à la Programmation 1 Introduction à la Programmation 1 Séance 7 de cours/td Université Paris-Diderot Objectifs: Savoir écrire un programme en entier (structure du programme avec une procédure main et des déclarations de fonctions,

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

DG-ADAJ: Une plateforme Desktop Grid

DG-ADAJ: Une plateforme Desktop Grid DG-ADAJ: Une plateforme pour Desktop Grid Olejnik Richard, Bernard Toursel Université des Sciences et Technologies de Lille Laboratoire d Informatique Fondamentale de Lille (LIFL UMR CNRS 8022) Bât M3

Plus en détail

Vérification formelle de la plate-forme Java Card

Vérification formelle de la plate-forme Java Card Vérification formelle de la plate-forme Java Card Thèse de doctorat Guillaume Dufay INRIA Sophia Antipolis Cartes à puce intelligentes Java Card : Environnement de programmation dédié. Dernières générations

Plus en détail

La technologie Java Card TM

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

Plus en détail

Sécurité de la plate-forme d exécution Java : limites et proposition d améliorations

Sécurité de la plate-forme d exécution Java : limites et proposition d améliorations Sécurité de la plate-forme d exécution Java : limites et proposition d améliorations Guillaume Hiet, Frédéric Guihéry, Goulven Guiheux, David Pichardie, Christian Brunette AMOSSYS-INRIA-SILICOM 10 juin

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

3ETI, Examen [CSC2] Developpement Logiciel en C CPE Lyon

3ETI, Examen [CSC2] Developpement Logiciel en C CPE Lyon 3ETI, Examen [CSC2] Developpement Logiciel en C CPE Lyon 2012-2013 (2eme session) durée 2h Tous documents et calculatrices autorisés. Le sujet comporte 6 pages Le temps approximatif ainsi que le barème

Plus en détail

Mieux programmer en Java

Mieux programmer en Java Mieux programmer en Java Peter Haggar Éditions Eyrolles ISBN : 2-212-09171-0 2000 PARTIE 1 l exécution de l instruction return, cependant, le contrôle est transféré au bloc finally en // 2. Cela provoque

Plus en détail

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

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

Plus en détail

Chapitre 6 Héritage en Java

Chapitre 6 Héritage en Java Chapitre 6: Héritage 1/12 Chapitre 6 Héritage en Java Chapitre 6: Héritage 2/12 1. Généralités L'héritage est le troisième des paradigmes de la programmation orientée objet (le 1 er étant l'encapsulation,

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

Compilation. Vb. Analyse sémantique statique Analyse de nom et analyse de type

Compilation. Vb. Analyse sémantique statique Analyse de nom et analyse de type Université de Nice - Sophia Antipolis Licence 3 Informatique 2012-2013 1/32 Compilation Vb. Analyse sémantique statique Analyse de nom et analyse de type Jacques Farré Jacques.Farre@unice.fr Université

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

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 à la Programmation Orientée Objet

Introduction à la Programmation Orientée Objet Introduction à la Programmation Orientée Objet Bertrand Estellon Département Informatique et Interactions Aix-Marseille Université 4 avril 2013 Bertrand Estellon (DII AMU) Introduction à la Programmation

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

Objectifs. Architecture des Ordinateurs Partie III : Liens avec le système d exploitation. Au sommaire... Schéma général d un compilateur (1/8)

Objectifs. Architecture des Ordinateurs Partie III : Liens avec le système d exploitation. Au sommaire... Schéma général d un compilateur (1/8) Architecture des Ordinateurs Partie III : Liens avec le système d exploitation 2. Génération de code David Simplot simplot@fil.univ-lille1.fr Objectifs Voir la génération de code ainsi que les mécanismes

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

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

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

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

Cours 1 : Introduction Générale + Objet I

Cours 1 : Introduction Générale + Objet I Organisation du cours Équipe pédagogique DUT Informatique S3 - Programmation Java Jean-Claude MARTIN MARTIN@LIMSI.FR Cours 1 : Introduction Générale + Objet I Jean-Claude MARTIN (Responsable, Cours, TD

Plus en détail

Listes de personnes et calculatrice polonaise inverse en Java

Listes de personnes et calculatrice polonaise inverse en Java Listes de personnes et calculatrice polonaise inverse en Java Université Paris Sud Motivation Le but de cet exercice est de manipuler les listes chaînées et les piles et de voir leur application en analyse

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

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

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

Plus en détail

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

Algorithmique et programmation avec Java (NFA002)

Algorithmique et programmation avec Java (NFA002) Algorithmique et programmation avec Java (NFA002) Deuxième session 13 septembre 2012 Aucun document n est autorisé. Le barème est donné à titre indicatif. Exercice 1 : listes (4 points) Etudiez le programme

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

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

Premiers Pas en Programmation Objet : les Classes et les Objets

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

Plus en détail

Synchro et Threads Java TM

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

Plus en détail

Héritage [he] Exercices résolus

Héritage [he] Exercices résolus Héritage [he] Exercices résolus Karine Zampieri, Stéphane Rivière, Béatrice Amerein-Soltner Unisciel algoprog Version 29 avril 2015 Table des matières 1 Comptes bancaires 1 1.1 Classe CBancaire...............................

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

Génération de code : langages objets Gestion mémoire 2 novembre 2011

Génération de code : langages objets Gestion mémoire 2 novembre 2011 Génération de code : langages objets Gestion mémoire 2 novembre 2011 1 Compilation d un langage objet Représentation des classes et des objets Héritage multiple Appartenance à une classe 2 Environnement

Plus en détail

Programmation Orientée Objet Java

Programmation Orientée Objet Java Programmation Orientée Objet Java Bertrand Estellon Département Informatique et Interactions Aix-Marseille Université 29 octobre 2015 Bertrand Estellon (DII AMU) Programmation Orientée Objet Java 29 octobre

Plus en détail

IN104. Programmation orientée objet Introduction aux objets

IN104. Programmation orientée objet Introduction aux objets IN104 Programmation orientée objet Introduction aux objets Séance de Travaux Dirigés du 24 septembre 2009 B. Monsuez, F. Védrine Exercice 1 Notre compteur en C++ Nous étudions dans cet exercice l exemple

Plus en détail

} 7 Variables (composantes)

} 7 Variables (composantes) Chapitre 4 Tableaux Jusqu ici, nous avons employé les variables pour stocker les valeurs individuelles de types primitifs : une variable de type int pour stocker un entier, une variable de type boolean

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

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

Java 1.5 : principales nouveautés

Java 1.5 : principales nouveautés Cours 6 - TEP - M2 STL - UPMC - 2006/2007 p. 1/30 Java 1.5 : principales nouveautés classes paramétrées : generics encapsulation des valeurs de types primitifs : auto[un]boxing itération sur les boucles

Plus en détail

Les tableaux. Programmation Orientée Objet Java. Références et Garbage Collector. Les tableaux

Les tableaux. Programmation Orientée Objet Java. Références et Garbage Collector. Les tableaux Les tableaux Déclaration d une variable de type référence vers un tableau : Programmation Orientée Objet Bertrand Estellon Département Informatique et Interactions Aix-Marseille Université 29 octobre 2015

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

Machines virtuelles. Brique ASC. Samuel Tardieu sam@rfc1149.net. Samuel Tardieu (ENST) Machines virtuelles 1 / 40

Machines virtuelles. Brique ASC. Samuel Tardieu sam@rfc1149.net. Samuel Tardieu (ENST) Machines virtuelles 1 / 40 Machines virtuelles Brique ASC Samuel Tardieu sam@rfc1149.net École Nationale Supérieure des Télécommunications Samuel Tardieu (ENST) Machines virtuelles 1 / 40 Machines virtuelles La compilation peut

Plus en détail

Langage Élémentaire Algorithmique Spécifications du langage

Langage Élémentaire Algorithmique Spécifications du langage Langage Élémentaire Algorithmique Spécifications du langage Lionel Clément Version provisoire Novembre 2012 Le but de ce projet est de livrer un compilateur pour un langage élémentaire algorithmique (Léa).

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

É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

Moniteurs, Java, Threads et Processus

Moniteurs, Java, Threads et Processus Moniteurs, Java, Threads et Processus 1 Une vue orientée-objet de la mémoire partagée On peut voir un sémaphore comme un objet partagé accessible par deux méthodes : wait et signal. L idée du concept de

Plus en détail

CONTRÔLE HORS-CLASSEMENT ÉCOLE POLYTECHNIQUE INFORMATIQUE COURS INF 431

CONTRÔLE HORS-CLASSEMENT ÉCOLE POLYTECHNIQUE INFORMATIQUE COURS INF 431 CONTRÔLE HORS-CLASSEMENT ÉCOLE POLYTECHNIQUE INFORMATIQUE COURS INF 431 GUILLAUME HANROT ET JEAN-JACQUES LÉVY On se propose de résoudre le problème de l affectation de k tâches à n employés (k > 0, n >

Plus en détail

Projet 1 ENS Lyon L3IF

Projet 1 ENS Lyon L3IF Projet 1 ENS Lyon L3IF Génération de code Sébastien Briais 8 janvier 2008 Dans cette partie, vous allez devoir implémenter le générateur de code pour l émulateur DLX risc-emu. À rendre pour le 18 janvier

Plus en détail

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

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

Plus en détail

Surcharge et Redéfinition.

Surcharge et Redéfinition. Surcharge et Redéfinition. Surcharge et Redéfinition...1 La surcharge...1 Type déclaré et type réel....2 Algorithme de résolution de la surcharge....2 La redéfinition...4 Exécution de service...5 Exemple

Plus en détail

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

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

Plus en détail

Mode d emploi pour la P-machine utilisée lors des TPs et des projets du cours INFO010 Théorie des langages et de la compilation.

Mode d emploi pour la P-machine utilisée lors des TPs et des projets du cours INFO010 Théorie des langages et de la compilation. Mode d emploi pour la P-machine utilisée lors des TPs et des projets du cours INFO010 Théorie des langages et de la compilation. Sébastien COLLETTE et Gilles GEERAERTS 1 Introduction Ce document décrit

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

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

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

Les références et la mémoire

Les références et la mémoire Chapitre 3 Les références et la mémoire 3.1 Introduction En Java, pour déclarer une variable, il faut donner son nom, précédé du type qu on souhaite lui attribuer. Ces types peuvent être des types primitifs

Plus en détail

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

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

Plus en détail

2 ème partie : Programmation concurrente multi-thread

2 ème partie : Programmation concurrente multi-thread 2 ème partie : Programmation concurrente multi-thread TC-INFO-ASR4 Françoise Baude Université de Nice Sophia-Antipolis UFR Sciences Département Informatique baude@unice.fr web du cours : www-mips.unice.fr/~baude

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

C++ / MC-II1 - Cours n o 3 Allocation Mémoire et Constructeurs

C++ / MC-II1 - Cours n o 3 Allocation Mémoire et Constructeurs C++ / MC-II1 - Cours n o 3 Allocation Mémoire et Constructeurs Sebastien.Kramm@univ-rouen.fr IUT GEII Rouen 2010-2011 S. Kramm (IUT Rouen) MCII1 - Cours 3 2010-2011 1 / 47 Sommaire 1 Rappels de C et définitions

Plus en détail

Polymorphisme. Programmation Orientée Objet. Jean-Christophe Routier Licence mention Informatique Université Lille 1

Polymorphisme. Programmation Orientée Objet. Jean-Christophe Routier Licence mention Informatique Université Lille 1 Polymorphisme Programmation Orientée Objet Jean-Christophe Routier Licence mention Informatique Université Lille 1 Université Lille 1 - Licence Informatique Programmation Orientée Objet 1 des méthodes

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

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

Claude Delannoy. Exercices C++ en langage. 3 e édition. Groupe Eyrolles, 1997, 1999, 2007, ISBN : 978-2-212-12201-5

Claude Delannoy. Exercices C++ en langage. 3 e édition. Groupe Eyrolles, 1997, 1999, 2007, ISBN : 978-2-212-12201-5 Claude Delannoy Exercices en langage C++ 3 e édition Groupe Eyrolles, 1997, 1999, 2007, ISBN : 978-2-212-12201-5 Chapitre 3 Les fonctions Rappels Généralités Une fonction est un bloc d instructions éventuellement

Plus en détail

U.F.R Mathématiques de la Décision. Programmation objet. Partie II. André Casadevall

U.F.R Mathématiques de la Décision. Programmation objet. Partie II. André Casadevall U.F.R Mathématiques de la Décision Programmation objet Partie II André Casadevall Mai 2001 p. 2 AJ.C 12 juin 2001 Table des matières 3 Héritage 5 3.1 Introduction - L héritage, qu est-ce que c est?......................

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

Instrumentation et réflexivité en Java 5.0 et 6.0

Instrumentation et réflexivité en Java 5.0 et 6.0 Java Instrumentation et réflexivité en Java et 6.0 UPMC November 9, 2006 (UPMC) Instrumentation November 9, 2006 1 / 28 Java Petit Plan Plan de ce cour 1 Présentation de l Instrumentation 2 Présentation

Plus en détail

Formalisation d analyses statiques pour Java multithreadé

Formalisation d analyses statiques pour Java multithreadé Formalisation d analyses statiques pour Java multithreadé LANDE, (ParSec, Rennes, 09/06/2008) 1 INRIA, LANDE LANDE, (ParSec, Rennes, 09/06/2008) (INRIA, LANDE)Static race detection 1 / 30 Outline Contexte

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

Chapitre 3 : Pointeurs et références

Chapitre 3 : Pointeurs et références p. 1/18 Chapitre 3 : Pointeurs et références Notion de pointeur L adresse d une variable est une valeur. On peut donc la stocker dans une variable. Un pointeur est une variable qui contient l adresse d

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

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