Bloc Note JAVA Emmanuel ADAM Institut des Sciences et Techniques de Valenciennes

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

Download "Bloc Note JAVA Emmanuel ADAM Institut des Sciences et Techniques de Valenciennes"

Transcription

1 ISTV Bloc Note JAVA Emmanuel ADAM Institut des Sciences et Techniques de Valenciennes Contenu Ce document est en quelque sorte un résumé du cours de Java, à ceci près qu il ne contient pas encore d informations sur les bases de données. Les parties présentées sont : une introduction à java et à ses outils, la classe String, les ensembles, la notion d héritage et de composition de classes, les exceptions, les entrées-sorties, les processus, la programmation Réseau, les applets, les classes graphiques de base (AWT), quelques notions de swing, un exemple complet de graphisme awt avec gestion de souris. Il est à utiliser sous la forme d un bloc note/aide-mémoire où j ai jeté quelques informations que je trouvais utiles mais ne peut remplacer le cours, beaucoup plus fiable et mis à jour A ce propos, si vous trouvez des coquilles ou bugs, n hésitez pas à m en faire part à : emmanuel.adam@univ-valenciennes.fr Bonne Lecture, Emmanuel ADAM Emmanuel ADAM Bloc Note JAVA Page 1

2 ISTV Compilation Langage interprété Java est un langage interprété. Une fois compilé en J-code, un programme Java ne peut être lancé directement. Le programme ne peut s exécuter qu au travers une «machine» virtuelle, Java Virtual Machine (JVM), qui simule un processeur capable de comprendre le J-code. C est cet environnement virtuel qui est dépendant de l environnement d exécution, et c est ce qui fait la force de Java par rapport aux autres langages : on peut programmer sans se soucier de la plate-forme d exécution. Un source java est un fichier texte unicode (pour la portabilité du source java, il est important de n utiliser que les 128 premiers caractères d une table ASCII, soit tous les caractères sauf les accents et caractères dépendants des pays, ce qui correspond à l encodage UTF-7). Ce source doit porter l extension.java. Le J-code, le code java compilé, porte l extension.class. C est ce code compilé qui est interprété soit par une JVM soit par un navigateur (browser). JDK Java Development Kit Le JDK est le Kit de Développement Java de SUN à l origine du langage. Il se compose de deux principaux répertoires : un répertoire de libraires (lib), et un répertoire d exécutables (bin) (remarque, sous les environnements Windows, le répertoire jre (JavaRuntime Environment) est également obligatoire). Ce dernier contient les fichiers : - javac : le compilateur java Compile les fichiers sources java en bytecodes (.class). - java : l interpréteur Java Exécute les bytecodes Java. - jre : Interpréteur runtime java Interpréteur simplifié - appletviewer : l afficheur d applets permet de tester les applets sans passer par un navigateur - jdb : debugueur Java tout est dit! - javap : désassembleur désassemble les fichiers compilés (.class) et affiche une interprétation du code. - javadoc : Générateur de documentation java analyse les déclarations et les commentaires d un ensemble de source Java et produit un ensemble de pages HTML décrivant les classes publiques, privées, les constructeurs et les méthodes. Génère aussi la hiérarchie des classes et un index de tous les membres. - javah : générateur de fichier d entête C (.h) permet d attacher de lier des progs C à des progs Java. Ce sujet continue page suivante Page 2 Bloc Note JAVA Emmanuel ADAM

3 ISTV Compilation, JDK Java Development Kit (Suite) - jar : compresseur de classes (Java Archive Tool) permet de stocker plusieurs bytecodes (.class) en un seul fichier d extension.jar (sorte de DLL). - javakey : outil pour signatures digitales gère les clés, certificats et sécurité des programmes. - native2ascii converti un fichier natif en un fichier ASCII avec la notation unicode. - rmic : convertisseur d interface RMI Java génère des objets à partir des noms des classes compilées contenant les implémentations des objets éloignés (remote objects) - rmiregistry : Registre d objets Java éloignés Java (Remote Object Registry) créé et lance un registre d objets éloignés sur un port spécifié de l hôte courant - serialver : Serial Version Command renvoie le numéro de version de la classe Compiler et exécuter Voici comment compiler et exécuter un programme Java. Attention : ce n est pas le même schéma pour les applets! Prenons le classique exemple du programme affichant «Salut tout le monde!». Le source est le fichier texte suivant : public class Bonjour public static void main(string args[]) System.out.println("Salut tout le monde! "); Attention : le fichier doit porter le même nom que la classe, soit ici Bonjour.java. Pour compiler le fichier, il suffit de lancer javac Bonjour.java, le fichier bytecode Bonjour.class est alors créé. C est ce fichier qui peut être interprété par une machine virtuelle. Pour l exécuter, il faut lancer l interpréteur, suivi du nom de la classe créée sans l extension: java Bonjour Petite entrée en matière Le code précédent est fort semblable à un code C++, On retrouve les mots clés class, public (la fonction main est accessible à tous), static (toutes les instances de Bonjour utilise la même fonction main), void et main. String correspond à l objet chaîne de caractères. println est une méthode de la classe de l objet out gérant toutes les sorties et appartenant à la super-classe System. Ce sujet continue page suivante Emmanuel ADAM Bloc Note JAVA Page 3

4 ISTV Compilation, Documentati on javadoc Compression jar javadoc est un outil très important car il génère automatiquement une documentation des classes contenues dans un fichier source java. javadoc se charge de créer l arbre des classes, l index des fonctions et variables utilisées (publiques ou non selon les arguments passés à javadoc). Son utilisation première est simple : javadoc source.java javadoc permet d intégrer dans la documentation les commentaires présents dans le source. Pour cela, ceux ci doivent précéder les éléments (classes, fonctions, variables). Exemple : /** classe représentant une file d attente */ public class File La commande jar permet d archiver plusieurs classes en un seul fichier tout en les compressant, ce qui permet de gagner du temps lors de l exécution. Tout comme le code java compilé, le code java compilé et compressé peut être exécuté sur toutes les plates-formes. Le fichier archive porte l extension.jar. jar ne permet pas seulement d archiver des classes, il est également capable d archiver tout élément nécessaire à l exécution d un programme (telle qu un fichier son ou image par exemple). La création d une archive s effectue par la commande : jar cf fichier_archive fichiers Exemple : jar cf resto.jar resto.class couverts.class images son Compresse les classes resto.class et couvert.class ainsi que tous les fichiers se trouvant dans les répertoires images et son. Pour lire le contenu d une archive : jar tf fichier_archive Pour extraire le contenu : jar xf fichier_archive (fichiers) Pour exécuter une application archivée : java cp fichier_archive classe_principale Pour exécuter une applet archivée : L appel à partir d une page web se fera sous la forme : <applet code="classe Applet" archive= "nom_archive.jar" width=300 height=200> </applet> Manifest : Lorsque jar crée une archive, il crée également en entête de l archive le fichier MANIFEST.MF dans le répertoire META-INF. Ce fichier permet d ajouter quelques informations au fichier archive (concernant la classe principale et les signatures). Ainsi, il est possible de définir la classe principale que devra utiliser l archive. Si resto.class est la classe principale, il faut créer un fichier texte (par exemple, monmanif) ne contenant que la ligne : Main-Class: resto Il suffit ensuite d inclure ce fichier dans l archive en utilisant la commande suivante : jar cmf monmanif resto.jar resto.class couverts.class images son L exécution pourra alors se faire par la commande java jar resto.jar Page 4 Bloc Note JAVA Emmanuel ADAM

5 ISTV Emmanuel ADAM Bloc Note JAVA Page 5

6 ISTV Les éléments de base en java Les types simples Java dispose de 8 types simples, appelés primitives, pouvant être couvert par des classes, appelés Wrappers. Nom Taille Minimum Maximum Classe boolean 1 bit false true Boolean char 16 bits Unicode 0 Unicode Character byte 8 bits Byte short 16 bits Short int 32 bits Integer long 64 bits Long float 32 bits (+/-) (+/-) Float double 64 bits (+/-) (+/-) Double void Void Remarque : Pour passer d une primitive à un objet, il faut faire appel au construcuteur de l objet : int i = 5; Integer entier = new Integer(i); Les objets En Java, à part ces primitives, tout est objet. Tout découle de la classe Object. En fait, on a, pour les classes ci-dessus la hiérarchie suivante : Object Character Void Number Boolean Byte Short Integer Long Float Double De la classe object, on peut citer la méthode tostring(), qui permet de transformer tout objet (et donc nombres et booléens) en chaîne de caractère. De la classe Number, on peut citer les méthodes de conversion d un objet vers une primitive: bytevalue() (retourne la valeur en byte), doublevalue(), floatvalue(), intvalue(), longvalue(), shortvalue(). Remarque : il est possible aussi d utiliser le casting C ou C++ (reel = (float) entier). Tableaux Il est possible de créer de tableaux d objets, en utilisant la syntaxe suivante : int tab_entiers [] = new int[10]; // pour un tableaux de 10 entiers int cube[][][] = new int [3][3][3]; double tab_reels[] = 1.2, 2.3, 3.4, 4.5; length permet de connaître la taille d un tableau. System.out.println(tab_reels.length) affiche «4». Ce sujet continue page suivante Page 6 Bloc Note JAVA Emmanuel ADAM

7 ISTV Les éléments de base en java, Opérateur Je dirais, cf. C++! Du moins pour la plus grande partie des programmes. Pour tout nombre x, on peut écrire : x++, x--, --x, ++x, x+=2, x-=2, x/=2, x*=2, x%=2 (x = x modulo 2) Pour tout booléen x et y, on a : non x!x ; x et y x & y ; x ou y x y ; x ou exclusif y x ^ y Pour tout entier x et y, on peut écrire x = x << y (décalage de y bit à gauche) ; x = x >> y ; x = x <<< y ; x = x >>> y (dans ces deux derniers cas, des 0 sont ajoutés pour combler les décalages). Branchement s conditionnels Comme en C++, on a : if (test) action_1_si_vrai ; action_2_si_vrai ; else action_1_si_faux ; action_2_si_faux ; Le est pouvant être de la forme : a ;!a ; x<y ; x==y ; x!=y ;... switch (expression) case valeur_1 : actions ; break ; case valeur_2 : actions ; break ; case valeur_3 : actions ; break ; default : actions ; while (test) actions ; do actions ; while (test) ; for (int i=0 ; i<10 ; i++) actions ; ceci avec des possibilités de : - break (sorties), - continue (passe le reste de la boucle, mais n en sort pas), - goto (un label est alors suivi de : (label1 :) ) Emmanuel ADAM Bloc Note JAVA Page 7

8 ISTV La classe String Présentation Quelques méthodes de String La classe String correspond, comme d habitude, aux chaînes de caractères. Toutes les chaînes manipulées dans un code java sont des instances de cette classe. Les chaînes sont constantes, leurs valeurs ne peuvent être changées après leurs créations. Comme de nombreuses classes java, la classe String dispose de plusieurs constructeurs. La création de la chaîne str : String str = "abc"; est équivalente à char data[] = 'a', 'b', 'c'; String str = new String(data); La classe String comporte des méthodes d accès aux caractères, de comparaisons, de recherche, d extraction, de copie, de conversion minuscules/majuscule.. Le langage Java offre un support spécial à la concaténation ( + ), et à la conversion d objets en chaîne. La concaténation est issu de la classe StringBuffer. Préférer cette classe StringBuffer pour les concaténations et/ou modifications multiples!!! Gain de temps non négligeable (cf. cours). La conversion se fait de manière automatique en faisant appel à la méthode tostring() héritée de la classe Object. Il est possible de surcharger cette méthode dans les nouvelles classes créées. char charat(int index) retourne le caractère de la position index int compareto(string anotherstring) compare la chaîne à une autre, en gérant les majuscules-minuscules. Retourne 0 en cas d égalité, un entier négatif si la chaîne est inférieure à l autre, et positif si la chaîne est supérieure à l autre chaîne. int comparetoignorecase(string str) idem que la précédente, mais ignore la case. String concat(string str) ajoute la chaîne str à la fin de la chaîne. boolean endswith(string suffix) teste si la chaine se termine par le suffixe. boolean equals(object anobject) nécessaire pour comparer deux chaînes, traite la case. boolean equalsignorecase(string anotherstring) idem, mais ignore la case. void getchars(int srcbegin, int srcend, char[] dst, int dstbegin) copie les caractères de la chaîne dans un tableau de caractères. int indexof(int ch) retourne l index de la première occurrence du caractère. On trouve aussi int indexof(int ch, int fromindex) ; int indexof(string str) et indexof(string str, int fromindex) Ainsi que int lastindexof(int ch) ; int lastindexof(int ch, int fromindex) ; int lastindexof(string str) ; int lastindexof(string str, int fromindex) ;. int length() retourne la longueur String replace(char oldchar, char newchar) retourne une nouvelle chaîne après le remplacement de toutes les occurences du caractère. boolean startswith(string prefix) teste si la chaîne commence par le prefixe. String substring(int beginindex, int endindex) extrait une sous-chaîne. String tolowercase() ; String touppercase() change la case. int Page 8 Bloc Note JAVA Emmanuel ADAM

9 ISTV String trim() efface les espaces avant et après. Emmanuel ADAM Bloc Note JAVA Page 9

10 ISTV Listes et ensembles Les collections Les tableaux de Java peuvent contenir n importe quel objet, c est une des conséquences de sa structure totalement objet (tout découle de la classe Object). Rappel, on définit un tableau comme ceci : hamster tab[] = new hamster[5]; Ces tableaux sont fixes, une fois créés il est impossible de modifier leurs tailles. Pour répondre à ce problème, il existe des classes Java correspondant à des listes ou collection. La classe Vector est la plus utilisée. On définit un vecteur de la façon suivante : Vector liste_animaux = new Vector() ; Remarque : on ne précise pas de quoi est constitué le vecteur, il peut donc contenir des objets de types différents. La méthode addelement(objet) permet d ajouter un objet en queue, les méthodes element_at(index) et get(index) ont le même comportement et permettent de récupérer l objet positionné à l index donné. La classe Stack, hérite directement de la classe Vector et ajoute entre autres les méthodes push(objet) : ajoute un objet en tête ; pop() : retire le premier objet ; peek() : renvoie une référence au premier objet sans le retirer ; empty() : teste si la pile est vide. Une pile peut aussi contenir des objets de différents types. La classe Hashtable peut être vue comme un dictionnaire composé de deux vecteurs : un vecteur pour la clé et un vecteur pour l objet. Une table de clés possède les méthodes put(clé, objet) ; get(clé) ; containskey(clé) ; containsvalue(objet) et isempty() entre autres. La classe Enumeration ne contient que deux méthodes : nextelement() qui extrait et retourne un élément de la liste (comme pop) et hasmoreelements() indiquant la présence d au moins un élément. elle est utilisée notamment pour la lecture des éléments d un vecteur : for (Enumeration e = vecteur.elements(); e.hasmoreelements() ; ) System.out.println(e.nextElement()) ; Remarque : elements est la méthode qui retourne une énumération à partir du vecteur. Cependant l exécution de cette boucle est beaucoup plus lente que la lecture «classique» des éléments du vecteur suivante : int nbelt = vecteur.size() ; for (int i=0; i < nbelt; i++) System.out.println(vecteur.get(i)); Pour un parcourt encore plus rapide, préférez l utilisation de ArrayList à celle de Vector. En effet, ces derniers sont synchronisés par défaut (voir la gestion de tâches) alors que les ArrayList ne le sont pas Les ensembles ne peuvent contenir qu un exemplaire d un objet. La classe Set dispose, entre autres, des méthodes add(objet) qui n ajoute l objet que s il n est pas déjà présent; contains(objet) ; remove(objet) ; isempty(). Page 10 Bloc Note JAVA Emmanuel ADAM

11 ISTV Emmanuel ADAM Bloc Note JAVA Page 11

12 ISTV Héritage et composition de classes Héritage La notion d objet implique la notion d héritage et de composition de classes. En Java, la syntaxe la classe désirant hériter des attributs et méthodes de la classe principale doit utiliser le mot clé extends : class Animal. class Hamster extends Animal class Chasseur De quoi hérite le hamster? De tout ce qui n est pas privé (private). En effet, les attributs ou méthodes d une classe marquées comme private sont limités à cette classe. Les attributs ou méthodes d une classe marquées comme private protected sont accessible également aux sous classes (donc au Hamster, mais non au Chasseur). Les attributs ou méthodes d une classe marquées comme protected sont accessibles aux sous-classes, mais également aux classes voisines (soit ici, le chasseur de Hamster). Les attributs ou méthodes d une classe marquées comme public sont accessibles à tous, même aux classes d un autre paquetage. par défaut, les variables et méthodes sont de type protected. Autres mots clés Nous avons donc les mots clés public, protected, private, mais on peut trouver aussi les mots clés final, static, abstract et synchronized. final peut être utilisé pour signifier une constante, une méthode qui ne peut être remplacée dans une sous-classe et une classe qui ne doit pas être héritée. static associé à une variable signifie que toutes les instances d une classe utilisent la même variable (par exemple pi pour la classe cercle). Une variable statique( dite variable de classe) peut aussi être utilisée en tant que compteur, chaque instance. Une méthode statique ne peut agir que sur les variables et méthodes de classe. abstract ne s applique qu aux classes et procédures. Une classe abstraite ne peut être instanciée, seules ses classes dérivées le pourront. L abstraction permet de définir un moule général auquel se rapporteront les classes dérivées. synchronized sert à gérer l accès concurrent. En fait protège un code en le plaçant dans le moniteur (la partie gérant les accès mémoire des programmes Java). Remarque : en Java, on trouve aussi des interfaces. ce sont en quelques sorte des classes totalement abstraites, dont aucune partie n est implémentée. Les classes se réclamant d une interface donnée doivent utiliser le mot clé implements. Exemple : class Animal implements etre_vivant Ce sujet continue page suivante Page 12 Bloc Note JAVA Emmanuel ADAM

13 ISTV Héritage et composition de classes, Constructeur s Les constructeurs sans arguments sont automatiquement lancés. (La création d un Hamster sans argument entraîne la construction d un Animal sans argument). Pour les constructeurs avec argument, il faut faire appel à la classe supérieure (super) : class Animal String nom; Animal() nom = "."; Animal(String nvnom) nom = nvnom; void print() System.out.println(nom); class Hamster extends Animal String couleur; Hamster() // appelle automatiquement Animal() Hamster(String nvnom) super(nvnom); // correspond à Animal(String nvnom) Hamster(String nvnom, String nvcouleur) super(nvnom); couleur = nvcouleur; void print() System.out.println(nom + " "+ couleur); Trouver la classe Supposons que l on ait : class Lapin extends Animal int taille_oreille; Lapin() Lapin(String nvnom) super(nvnom); Lapin(String nvnom, int nvtaille) super(nvnom); taille_oreille = nvtaille; void print() System.out.println(nom + "taille oreille : " + taille_oreille); Il peut arriver que l on ait à se demander à quelle classe appartient un objet. En effet, on peut gérer de manière génériques des animaux dans une liste, puis vouloir accéder à une caractéristique particulière d un animal. Pour cela, la méthode instanceof permet de retrouver la classe d origine. Exemple : for(int i=0; i<vecteur.size(); i++) Object objet = vecteur.get(i); if (objet instanceof Hamster) ((Hamster)objet).print(); if (objet instanceof Lapin) ((Lapin)objet).print(); Combiner les classes Comme tout est objet, tous les attributs des classes sont objets. Une classe peut donc sans problème avoir une variable de type Animal ou Hamster ou autre. Emmanuel ADAM Bloc Note JAVA Page 13

14 ISTV Exceptions Le pourquoi La gestion des exceptions est très importante, voire primordiale, dans tous systèmes informatiques. Elle confère un aspect beaucoup plus professionnel aux applications. En effet, l utilisateur risque d être fortement perturbé voire lassé d applications qui plante sans information précise, comme celles du style : Heureusement, la plupart des langages actuels permettent de les gérer. Le comment Pour récupérer, ou attraper, une exception, il faut utiliser la syntaxe suivante : try. //endroit où pourrait apparaître une exception catch (type_exception_1 e1). // traitement de l exception de type 1 catch (type_exception_2 e2). // traitement de l exception de type 2 finally. // dans tous les cas, passer par ici Pour lancer, lever, une exception, il faut utiliser la commande throw : throw new Exception("ceci est une exception") ; Il est possible de relancer une exception suite à son traitement, il suffit d utiliser la commande throw dans le bloc de traitement. De nombreuses sous classes découlent de la classe Exception telles que :, IOException et ArithmeticException. Et il est possible de créer ses propres exceptions, héritants de la classe Exception, pour les lever et les traiter dans un programme Java. Méthodes d Exception La classe Exception possède peu de méthode (juste deux constructeurs Exception() et Exception (String msg) ). Mais hérite de méthodes de la classe Throwable, dont : getmessage qui permet de récupérer le message de l exception s il existe. tostring, qui retourne la classe et le message sous forme de chaîne. printstacktrace, qui fait appel à tostring, mais qui en plus indique l endroit du programme où a été levée l exception. Si on souhaite définir une méthode porteuse d exceptions, il faut ajouter throws Exception suite à sa déclaration. Page 14 Bloc Note JAVA Emmanuel ADAM

15 ISTV Emmanuel ADAM Bloc Note JAVA Page 15

16 ISTV Les entrées/sorties Le package java.io Le package java.io propose différentes classes et interfaces (classes totalement abstraites) permettant les différentes entrées/sorties entre un programme java et le système. Les classes principales sont les classes : InputStream dont dérivent les classes BufferedInputStream, ByteArrayInputStream, DataInputStream, FilterInputStream et PushbackInputStream. OutputStream dont dérivent les classes BufferedOutputStream, ByteArrayOutputStream, DataOutputStream et FilterOutputStream. FileInputStream, FileOutputStream et File. Les classes DataInputStream et DataOutputStream proposent des méthodes pour gérer les flux de données de type primitifs Java (int,...). Lire une saisie clavier Cela peut paraître simple, il existe en effet la fonction println(string) qui permet l affichage d une chaîne. Mais il n existe pas de fonction readln définie en Java! Depuis le jdk 1.3, il est possible de passer par une classe définie spécialement pour la gestion de flux de caractères : InputStreamReader et BufferedReader. Ce qui donne : InputStreamReader inputreader = new InputStreamReader(System.in) ; BufferedReader in = new BufferedReader(inputReader) ; String chaine = in.readline() ; Ce sujet continue page suivante Page 16 Bloc Note JAVA Emmanuel ADAM

17 ISTV Les entrées/sorties, La classe File Lecture d un fichier texte Copie d un fichier La classe File permet d accéder aux caractéristiques des fichiers et répertoires (ceux-ci sont considérés comme des fichiers particuliers). Il existe trois constructeurs : File(File dir, String name) ; File(String path, String name) et File(String path). Les différentes méthodes sont : canread() ; canwrite() ; delete() ; equals(object obj) ; exists() ; getabsolutepath() ; getcanonicalpath() ; getname() ; getparent() ; getpath() ; hashcode() ; isabsolute() ; isdirectory() ; isfile() ; lastmodified() ; length() ; list(filenamefilter filter) ; list() ; mkdir() ; mkdirs() ; renameto(file dest) ; tostring(). (Les méthodes list retournent un tableau de chaînes) Pour lire un fichier texte, il est possible d utiliser les classes DataInputStream et BufferedReader en leur passant en paramètre un flux basé sur le fichier à l aide de la classe FileInputStream. Ce qui donne : BufferedReader d = new BufferedReader(new InputStreamReader(FileInputStream("Io_1.java"))) ; pour créer un flux de caractères à partir du fichier "Io_1.java". La copie d un fichier est très simple, il suffit d utiliser les classes DataInputStream et DataOutputStream : fichier = new FileInputStream("Io_1.java"); DataInputStream data_in = new DataInputStream(fichier); FileOutputStream copie = new FileOutputStream("Io_1.copie"); DataOutputStream data_out = new DataOutputStream(copie); while (data_in.available() > 0) data_out.write(data_in.read()); data_in.close(); data_out.close(); Cet exemple copie un fichier byte par byte, ce qui est assez long. Il est aussi possible de copier le fichier par paquet de bytes. Emmanuel ADAM Bloc Note JAVA Page 17

18 ISTV Le stockage d objets La Serialization La Sérialisation d objets est apparue avec le Java 1.1. Elle permet de prendre tout objet implémentant l interface serializable et de le transformer en une série de bits qui peuvent être plus tard restaurer sous la forme de l objet original. Ce qui est particulièrement intéressant pour le partage d objets au travers d un réseau. En effet, la sérialisation d objets a été ajoutée pour supporter deux propriété importantes de Java : le RMI (remote method invocation) permettant à des objets distribués de communiquer, et les Java Beans (petits noyaux (fèves) de programme). La sérialisation d un objet n est possible que s il implémente l interface Serializable. L envoi d un objet vers un flux de sortie est réalisé par ma méthode writeobject() de la classe ObjectOutputStream. La lecture d un objet à partir d un flux d entrée est réalisée par ma méthode readobject() de la classe ObjectInputStream. Attention : on récupère alors un objet général (Object), il faut alors le downcaster, le convertir, pour récupérer le bon objet. La sérialisation ne sauve pas seulement une image de l objet, mais sauve aussi les objets qu il contient, les objets contenus dans ces objets, Un exemple import java.io.*; class Fromage implements Serializable String type; int poids; int nb_trous; Fromage(); Fromage(String nvtype, int nvpoids, int nvnb_trous) type = nvtype; poids = nvpoids; nb_trous = nvnb_trous; public String tostring() String s = type + "poids = " + poids + "nb_trous = " + nb_trous; return s; class Hamster_1 static Fromage morceaux[] = new Fromage[5]; public static void main(string[] args) for(int i=0; i<morceaux.length; i++) morceaux[i] = new Fromage("a", (i+1)*3, i*5); try FileOutputStream fic_out = new FileOutputStream("fromage.out"); ObjectOutputStream out = new ObjectOutputStream( fic_out ); out.writeobject("stockage d Hamster "); for(int i=0; i<morceaux.length; i++) out.writeobject(morceaux[i]); out.close(); FileInputStream fic_in = new FileInputStream("fromage.out"); ObjectInputStream in = new ObjectInputStream(fic_in); String s = (String)in.readObject(); for(int i=0; i<5; i++) Fromage f = (Fromage)in.readObject(); System.out.println(f); in.close(); System.out.println(s); catch(exception e) e.printstacktrace(); Page 18 Bloc Note JAVA Emmanuel ADAM

19 ISTV Gestion de tâches La classe Thread Exemple Pour créer une tâche, il suffit de faire hériter sa classe de la classe Thread. La principale méthode de Thread est run() qui doit être surchargée. C est la méthode qui sera exécutée simultanément par les autres tâches du programme. La méthode yield() oblige la tâche à se reposer, pour laisser aux tâches la possibilité de s exécuter class une_tache extends Thread une_tache(string nom) super(nom); // appel au constructeur de Thread public void run() while (true) System.out.println("Mon nom est : " + getname()); Thread.yield(); // petite pause class Exemple_tache_1 public static void main(string args[]) une_tache tache1 = new une_tache("tache 1"); une_tache tache2 = new une_tache("tache 2"); tache1.start(); tache2.start(); while (true) System.out.println("Je suis la tâche principale"); Thread.yield(); L interface Runnable La classe Thread implémente l interface Runnable. Il est donc possible de créer des tâches ayant des comportements particuliers à la terminaison (méthode stop() ), ou à l initialisation (méthode init() ). Eviter les collisions! La programmation multitâche implique le partage de ressources (mémoire, objets). Dans certains cas, ceci peut être problématique, et il peut être bénéfique de protéger une fonction, d empêcher son lancement par une autre tâche tant qu elle n est pas totalement exécutée. Pour cela, Java dispose du mot clé synchronized qui assure l exclusion mutuelle d une section critique en informant le moniteur (gestionnaire de mémoire). exemple: public synchronised void compte() empèche toute instance de la classe de lancer compte tant qu elle ne s est pas terminée. Il est possible de protéger aussi des portions de codes liées à un objet. En Effet, à chaque objet correspond un moniteur, si on veut protéger une portion de code utilisant un objet, il suffit d en informer son moniteur :... synchronized (compteur) compteur.add() ; compteur.mult() ; Ce sujet continue page suivante Emmanuel ADAM Bloc Note JAVA Page 19

20 ISTV Gestion de tâches, Synchroniser les tâches Le mot clé synchronized permet de protéger une ressource lorsque différents processus tentent de l utiliser. Voyons maintenant comment synchroniser ces processus (Thread). La méthode notify() réveille un processus mis en attente par le moniteur de l objet. S il y a plusieurs processus, le choix de l un d entre eux dépend de la plate-forme. La méthode wait() impose au processus courant d attendre tant qu un autre processus n a pas invoqué la méthode notify() ou notifyall() pour cet objet. Le processus courant doit posséder le moniteur de l objet. Il libère alors ce moniteur et attend la prochaine opportunité de récupérer le moniteur pour recommencer sa tâche. Exemple : le producteur et 2 consommate urs La méthode setpriority(int niveau) change le niveau de priorité du processus, il est possible d utiliser les constantes MIN_PRIORITY, NORM_PRIORITY et MAX_PRIORITY. class Tab_objets private Object tampon[]; private int taille; private int produits, consommes, nb_objets_courants; public Tab_objets (int taille) tampon = new Object[taille]; this.taille = taille; produits = 0; consommes = 0; nb_objets_courants = 0; public synchronized void depose(object obj) while (nb_objets_courants == taille) try wait(); catch (InterruptedException e) tampon[produits] = obj; nb_objets_courants++; produits = (produits + 1) % taille; notify(); // réveille un processus en attente de non vide public synchronized Object preleve() while (nb_objets_courants == 0) try wait(); catch (InterruptedException e) Object obj = tampon[consommes]; tampon[consommes] = null; nb_objets_courants--; consommes = (consommes + 1) % taille; notify(); // reveille un processus en attente de non plein return obj; Ce sujet continue page suivante Page 20 Bloc Note JAVA Emmanuel ADAM

21 ISTV Gestion de tâches, Suite du producteur et 2 consommate urs class producteur extends Thread private Tab_objets tab; private int val = 0; String nom; public producteur(string nom, Tab_objets tab) this.nom = nom; this.tab = tab; public void run() while (true) System.out.println(nom + " : je depose l objet "+val); tab.depose(new Integer(val++)); try Thread.sleep((int)(Math.random()*100)); // 100 ms max catch (InterruptedException e) class consommateur extends Thread private Tab_objets tab; String nom; public consommateur(string nom, Tab_objets tab) this.nom = nom; this.tab = tab; public void run() while (true) String nom_obj = (Integer)tab.preleve()).toString(); System.out.println(nom + ": je preleve l objet " + nom_obj) ; try Thread.sleep((int)(Math.random()*200)); // max 200 ms catch (InterruptedException e) class ProductConsom_1 public static void main(string args[]) Tab_objets tab = new Tab_objets(5); producteur prod = new producteur("product", tab); consommateur cons1 = new consommateur("consom 1", tab); consommateur cons2 = new consommateur("consom 2", tab); prod.start(); cons1.start(); cons2.start(); try Thread.sleep(10000); catch (InterruptedException e) cons2.stop(); cons1.stop(); prod.stop(); Emmanuel ADAM Bloc Note JAVA Page 21

22 ISTV Programmation réseau La classe Socket Les classes de java.net.* permettent très facilement de se connecter à une machine afin d y établir des flux d entrées/sorties. En java, la socket est équivalente à un gestionnaire d entrée/sortie entre deux machines. La classe Socket permet de définir une socket et la connecter sur le port d un serveur, soit par passage de son adresse IP, soit par passage de son nom (par Socket(InetAddress address, int port)ou Socket(String host, int port) ). La fonction getinputstream() permet de récupérer un objet de type InputStream, donc le flux d entrée pour la socket. De même, la fonction getoutputstream() permet de récupérer un objet de type OutputStream, donc le flux de sortie pour la socket. La classe ServerSocket Pour établir une communication par socket entre des machines, il faut que l une d entre elles soit définie en tant que serveur. La classe ServerSocket permet de créer une socket serveur guettant des demandes d autres sockets du réseau. Cette socket peut alors traiter les demandes et envoyer des réponses. Pour créer une socket serveur, il suffit de passer en paramètre le n du port que l on souhaite ouvrir. La méthode accept() permet de guetter et de capturer une demande de connexion. Une socket serveur permet aussi la gestion d entrées/ sorties par les mêmes méthodes que la classe Socket. Exemple de réception Par exemple, la déclaration d une socket server attendant une coonnection et récupérant la chaîne de caractères envoyée donne : ServerSocket s = new ServerSocket(8888); System.out.println("Socket lancee : " + s); try Socket socket = s.accept(); // Attendre une connection try System.out.println( "Connection acceptee: "+ socket); InputStream socket_in = new InputStream( socket.getinputstream()); DataInputStreaam in = new DataInputStreaam (socket.getinputstream()); String str = in.readline(); La gestion des exceptions d entrée/sortie doit bien sûr soit se faire directement, soit être laissée à la fonction appelante (en ce cas, il faudra définir la fonction contenant le code ci dessus en conséquence). Ce sujet continue page suivante Page 22 Bloc Note JAVA Emmanuel ADAM

23 ISTV Programmation réseau, Un exemple : le serveur Voici un exemple classique de programmation réseau : le client serveur. Un serveur est lancé sur une machine et attend la connexion d un client. Puis, il récupère es lignes envoyées par le client, les affiche et les lui renvoie. import java.io.*; import java.net.*; public class Serveur_1 // Choose a port outside of the range : public static final int PORT = 8080; public static void main(string[] args) throws IOException ServerSocket s = new ServerSocket(PORT); System.out.println("Socket lancee : " + s); try // Attendre une connection Socket socket = s.accept(); try System.out.println( "Connection acceptee: "+ socket); InputStreamReader socket_in = new InputStreamReader( socket.getinputstream()); BufferedReader in = new BufferedReader( socket_in ); // Output is automatically flushed by PrintWriter: OutputStreamWriter socket_out = new OutputStreamWriter( socket.getoutputstream()); PrintWriter out = new PrintWriter( new BufferedWriter(socket_out),true); while (true) String str = in.readline(); if (str.equals("end")) break; System.out.println("Recu : " + str); out.println(str); // Always close the two sockets... finally System.out.println("fermeture..."); socket.close(); finally s.close(); Ce sujet continue page suivante Emmanuel ADAM Bloc Note JAVA Page 23

24 ISTV Programmation réseau, Un exemple : le client import java.net.*; import java.io.*; public class Client_1 public static void main(string[] args) throws IOException // récupère l'adresse internet du host // null permet de tester les applis sur une machine unique InetAddress addr = InetAddress.getByName(null); System.out.println("addr = " + addr); Socket socket = new Socket(addr, Serveur_1.PORT); try System.out.println("socket = " + socket); InputStreamReader socket_in = new InputStreamReader( socket.getinputstream()); BufferedReader in = new BufferedReader(socket_in); OutputStreamWriter socket_out = new OutputStreamWriter( socket.getoutputstream()); PrintWriter out = new PrintWriter( new BufferedWriter( socket_out ),true); for(int i = 0; i < 10; i ++) out.println("envoie de la ligne " + i); String str = in.readline(); System.out.println(str); out.println("end"); finally System.out.println("fermeture..."); socket.close(); Page 24 Bloc Note JAVA Emmanuel ADAM

25 ISTV Les applets Programmati on sur Internet La programmation d applets est le second type de programmation Java. C est aussi la partie la plus visible et celle qui a le plus fait connaître la langage Java. Les applets Java permettent d intégrer des programmes dans les pages Web. Elles utilisent la librairie graphique AWT (Abstract Windowing Toolkit). Cette librairie permet de générer du graphisme portable sur tout environnement. La classe Applet Une applet est un petit programme destiné à être appelé par une page Web. Les méthodes les plus importantes des applets sont les méthodes : init(), que le navigateur appelle après chaque chargement de l applet., start(), lancée après l initialisation, stop(), arrête l applet lorsqu elle n est plus visible, destroy(), appelé à l arrêt du navigateur, ou au rechargement de l applet, paint(graphics g) est appelé chaque fois que l applet est réaffichée. Un exemple d applet Voici un exemple d applet affichant un simple message. import java.awt.*; import java.applet.*; public class Applet1 extends Applet Font font; public void init() font = new Font("TimesRoman", Font.PLAIN,20); public void paint(graphics g) g.setfont(font); g.setcolor(color.red); g.drawstring("salut tout le monde!", 0, font.getsize()); g.draw3drect(0, 0, 180, 30, true); Voici maintenant un code html lançant cette applet : <HTML> <HEAD> <TITLE>Exemple d'applet</title> <BODY> <H1>Un exemple dapplet</h1> <applet code="applet1.class" width=200 height=50> desole... ce navigateur ne supporte pas les applets... </applet> </BODY> </HEAD> </HTML> Ce sujet continue page suivante Emmanuel ADAM Bloc Note JAVA Page 25

26 ISTV Les applets, Passage de paramètres Il est encore possible dans une applet de passer des données en paramètres (sur la ligne d appel dans la page web). La méthode getparameterinfo("param") retourne une tableau n 3 de chaînes de caractères associant le nom du paramètre à sont type et à sa valeur. Exemple : static final String[][] paraminfo = "msg","texte","message","nb","entier","15" Ainsi, la commande msg = getparameter("msg"); permet de récupérer la valeur du paramètre msg passé en paramètre dans la page web. Pour passer les paramètres, il faut écrire appeler l applet dans la page web comme ceci : <Applet code="applet1.class" width=300 height=200> <param name=msg value="voici le message"> </Applet> Applets permanentes Toutes les applets utilisent la même machine virtuelle. Si l on souhaite créer une applet à activité permanente (défilement de texte, d images,...), il faut la créer en tant que processus afin de ne pas bloquer les autres applets. Pour cela, il faut que l applet implémente l interface Runnable (similaire à Thread, mais qui permet de réécrire la fonction stop()). Tester les applets Utilisez l appletviewer pour tester vos applets. Les navigateurs chargent généralement l applet en mémoire qu une fois par session. Même après modification et recompilation, le navigateur risque de ne pas prendre en compte les changements. Archiver les classes En général, une applet ne se suffit pas et utilise une autre classe située dans le même répertoire. Elle charge donc cette classe en mémoire en cas de besoin, ce qui cause un ralentissement du système du à l attente du chargement. Pour éviter les multiples chargement et pour mieux structurer les classes, java dispose maintenant d un outil d archive : jar. Supposons que l Applet1 ait besoin de la classe cube. Pour archiver et compresser ces classes dans une archive, il faut taper la commande : jar cvf nom_archive Applet1.class cube.class L appel à partir d une page web se fera sous la forme : <Applet code="applet1.class" archive= "nom_archive.jar" width=300 height=200> <param name=msg value="voici le message"> </Applet> Page 26 Bloc Note JAVA Emmanuel ADAM

27 ISTV Emmanuel ADAM Bloc Note JAVA Page 27

28 ISTV AWT : pour l Interface utilisateur Abstract Windowing Toolkit Le paquetage AWT (java.awt.*) contient les classes nécessaires à la conception d interfaces utilisateurs. Les interfaces crées grâce à AWT sont relativement pauvres, mais ont l avantage d être pauvres partout!!! En fait, que ce soit sous Windows, X-Windows ou Mac, les objets de la librairie AWT se comporte de la même manière. Classes principales Voici quelques classes généralement utilisées : Font, pour définir les polices de caractère utilisées, Button, TextField, TextArea, Label, Checkbox, CheckboxGroup, Choice, List et ActionListener. Fonctions principales Les fonctions de la classe Graphics permettent de dessiner simplement différentes figures sur la surface de l applet ou de la Frame: clearrect, draw3drect, drawarc, drawimage, drawline, drawoval, drawpolygon, drawpolyline, drawrect, drawstring, fill3drect, fillarc, filloval, fillpolygon, fillrect, getcolor, getfont, setcolor, setfont. Le bouton Voyons tout d abord l utilisation de la classe Button, et la gestion des événements sur les boutons : import java.awt.*; import java.awt.event.*; public class TestBoutons extends Frame Button b1 = new Button("Bouton n 1"); Button b2 = new Button("Bouton n 2"); public TestBoutons() setlayout(new FlowLayout()); b1.addactionlistener(new ActionB1()); b2.addactionlistener(new ActionB2()); add(b1); add(b2); pack() ; class ActionB1 implements ActionListener public void actionperformed(actionevent e) System.out.println ("Button 1"); class ActionB2 implements ActionListener public void actionperformed(actionevent e) System.out.println("Button 2"); Ce sujet continue page suivante Page 28 Bloc Note JAVA Emmanuel ADAM

29 ISTV AWT : pour l Interface utilisateur, Evénements Dans l exemple précédent, nous utilisons l interface ActionListener pour capturer l événement sur les boutons. En fait cette interface ne définit que la méthode void actionperformed(actionevent e) qui est à implémenter. On trouve aussi l interface MouseListener qui définit les méthodes void mouseclicked(mouseevent e) clic sur l objet void mouseentered(mouseevent e) passage sur l objet void mouseexited(mouseevent e) sortie de l objet void mousepressed(mouseevent e) pression sur l objet void mousereleased(mouseevent e) relâche de l objet Ainsi que l interface WindowListener qui définit les méthodes suivantes : void windowactivated(windowevent e) la fenêtre devient active void windowclosed(windowevent e) fermeture par un bouton ou autre void windowclosing(windowevent e) fermeture par menu système void windowdeactivated(windowevent e) la fenêtre n est plus active void windowdeiconified(windowevent e) de minimisée à un autre état void windowiconified(windowevent e) minimisation void windowopened(windowevent e) première ouverture Ce sujet continue page suivante Emmanuel ADAM Bloc Note JAVA Page 29

30 ISTV AWT : pour l Interface utilisateur, Label Un label est un élément simple, il affiche simplement un texte qu il est possible de modifier par la méthode settext(string). Label l = new Label("une interface") ; Choix dans une liste L objet Choice permet de choisir un élément dans une liste. On y ajoute des éléments par la méthode additem(string) La méthode String getselecteditem() retourne la chaîne sélectionnée. ItemListener est l interface permettant de gérer les événements sur cet objet et contient la méthode itemstatechanged(itemevent e) déclenchée lors de sélection/déselection d un item. Liste L objet List affiche une liste de choix multiples ou non dans un cadre. On y ajoute des éléments par la méthode additem(string) La méthode String getselecteditem() retourne la chaîne sélectionnée. La méthode String[] getselecteditems() retourne les chaînes sélectionnées. ItemListener est l interface permettant de gérer les événements sur cet objet et contient la méthode itemstatechanged(itemevent e) déclenchée lors de sélection/désélection d un item. Champ de texte L objet TextField permet à l utilisateur d entrer une ligne de texte. Héritant de TextComponent, TextField dispose de GetText() pour récupérer le texte transmis. La commande setechochar(char) permet d entrer un texte de façon masquée (pour un mot de passe, par exemple). L interface TextListener permet de gérer les événements par la méthode textvaluechanged(textevent e) Zone de texte L objet TextArea permet à l utilisateur d entrer des lignes de texte. Héritant de TextComponent, TextField dispose de GetText() pour récupérer le texte transmis. De même, l interface TextListener permet de gérer les événements par la méthode textvaluechanged(textevent e) Ce sujet continue page suivante Page 30 Bloc Note JAVA Emmanuel ADAM

31 ISTV AWT : pour l Interface utilisateur, Cases à cocher L objet Checkbox est utilisé à la fois pour les cases à cocher, comme pour les boutons radio. Les cases à cocher permettent de choisir aucune, une ou toute une série de propositions. La méthode getstate() permet de savoir si la case est cochée ou non. ItemListener est l interface permettant de gérer les événements sur cet objet et contient la méthode itemstatechanged(itemevent e) déclenchée lors d un cochage/décochage. Boutons Radio Les boutons radio ne permettent qu un choix dans un ensemble d options. Pour les définir, il faut également utiliser l objet Checkbox. Et, pour gérer l unicité du choix, il faut placer les Checkbox dans un groupe défini par la classe CheckboxGroup. L appartenance d une Checkbox à un groupe est indiqué dans son constructeur. La méthode Checkbox getselectedcheckbox() retourne la checkbox sélectionnée. Zone de dessin Il est possible de dessiner directement sur une applet ou une frame, mais il peut être utile de définir un cadre dans lequel s effectueront les dessins. Toute classe étendant Canvas contient aussi la méthode paint(graphics g) qui permet d accéder aux méthodes de la classe Graphics (drawline, drawarc par exemple). Un objet d une classe étendant la classe Canvas est un composant standard qui peut être placé sur une applet ou une frame ou JFrame (voir plus loin). Ce sujet continue page suivante Emmanuel ADAM Bloc Note JAVA Page 31

32 ISTV AWT : pour l Interface utilisateur, Mise en page La classe Applet dérive de la classe Panel qui dérive de la classe Container. Cette classe contient la méthode SetLayout(LayoutManager) qui permet de choisir entre différents gestionnaires d interface. Il suffit de l appeler dans le init() de l Applet. Il existe trois principaux gestionnaires : FlowLayout, BorderLayout et GridLayout. L utilisation d un gestionnaire s effectue selon l exemple suivant : setlayout(new BorderLayout()) ; FLowLayout C est le gestionnaire le plus simple. L ajout de composant s effectue de gauche à droite et de haut en bas. BorderLayout Ce gestionnaire permet de placer des composants selon 5 zones. North West Center East South Il suffit d indiquer où l on désire placer les composant : add("north", b); GridLayout Ce gestionnaire permet de créer une grille (n m). Les éléments sont ajoutés de gauche à droite et de haut en bas. Combiner les mises en page Pour pouvoir utiliser plusieurs gestionnaire dans une même applet, il faut passer par la classe Panel. Exemple : Panel p1 = new Panel() ; Panel p2 = new Panel() ; p1.setlayout(new BorderLayout()) ; p2.setlayout(new FlowLayout(FlowLayout.LEFT)) ; add(p1) ; add(p2) ; Page 32 Bloc Note JAVA Emmanuel ADAM

33 ISTV SWING : Interface évoluée SWING Le paquetage SWING (javax.swing.*) contient les classes nécessaires à la conception d interfaces utilisateurs plus évoluées que AWT : onglet, arborescence, éditeur de texte RTF, afficheur de page ouaibe,. Les interfaces crées grâce à SWING sont actuelles : images et logos dans les menus, sur les boutons, Bien que faisant appel au maximum au code natif, les programmes utilisant ce type d interface sont plus lent que les programmes utilisant les interfaces AWT. Classes La plupart des classes des interfaces utilisateurs swing portent le même nom que les classes AWT, à ceci près qu elles sont précédées de J : JFrame, JButton, JList, JPanel, Quelques exceptions : le bouton radio (JRadioButton) qui fait parti d un groupe (ButtonRadio), Evénements Une interface swing utilise les mêmes gestions d événements qu une interface AWT, mais peut utiliser quelques écoutes d événements supplémentaires telles que MenuListener pour suivre les évolutions de l utilisateur au travers des menus. L habillage Il est possible d habiller les fenêtres swing et leurs éléments selon la mode Windows, Motif ou Metal. Il faut alors spécifier leurs LookAndFeel /** chaine liee a l'affichage de type Windows*/ String look1 = "com.sun.java.swing.plaf.windows.windowslookandfeel"; /** chaine liee a l'affichage de type Motif*/ String look2 = "com.sun.java.swing.plaf.motif.motiflookandfeel"; /** chaine liee a l'affichage de type Metal*/ String look3 = "javax.swing.plaf.metal.metallookandfeel"; Pour modifier le look and feel, placer le code suivant : try UIManager.setLookAndFeel(look); SwingUtilities.updateComponentTreeUI(fenetre); catch(exception exception) exception.printstacktrace(); où look est l une des chaînes précédentes, et fenetre l objet de type JFrame dont on souhaite modifier l affichage. Il est également possible de demander un affichage particulier au lancement d un programme : java Fenetre // affichage façon métal par défaut java -Dswing.defaultlaf=com.sun.java.swing.plaf.windows.WindowsLookAndFeel Fenetre java -Dswing.defaultlaf=com.sun.java.swing.plaf.motif.MotifLookAndFeel Fenetre Ce sujet continue page suivante Emmanuel ADAM Bloc Note JAVA Page 33

34 ISTV SWING : Interface évoluée, Contenu En swing, les composants sont ajoutés dans le contenu (Container) de la fenêtre JFrame et non directement dans la fenêtre comme en AWT. Ainsi l exemple de la page 23 proposant deux boutons s écrit de la façon suivante (ici la gestion d événements est centralisée dans une seule classe, et l affichage façon Window été demandé) : import java.awt.*; import javax.swing.*; import java.awt.event.*; public class JTestBoutons extends JFrame JButton b1 = new JButton("Bouton n 1"); JButton b2 = new JButton("Bouton n 2"); public JTestBoutons() super(titre); Container content = getcontentpane(); content.setlayout(new FlowLayout()); ActionBouton ab = new ActionBouton(); b1.addactionlistener(ab); b2.addactionlistener(ab); content.add(b1); content.add(b2); try UIManager. setlookandfeel("com.sun.java.swing.plaf.windows.windowslookandfeel"); SwingUtilities.updateComponentTreeUI(this); catch(exception exception) exception.printstacktrace(); setdefaultcloseoperation(exit_on_close); pack() ; class ActionB1 implements ActionListener public void actionperformed(actionevent e) String nom = e.getacioncommand(); if (nom.equals("bouton n 1")) System.out.println("clic sur 1"); if (nom.equals("bouton n 2")) System.out.println("clic sur 2"); Ce sujet continue page suivante Page 34 Bloc Note JAVA Emmanuel ADAM

35 ISTV SWING : Interface évoluée, Les menus Les menus sont des composants légers sous SWING, ce qui fait qu il s affiche sous les autres composants de poids plus lourds!!! Il est donc fréquent que le menu déroulant soit caché par les autres composants de l interface. Pour remédier à cela, il faut signaler à Java que le menu que l on a créé possède un poids fort, ou ne possède pas un poids léger, et il faut répéter cette recommandation sur chaque menu et non sur le barre de menus : void addmenu() GestionMenuItem gmi = new GestionMenuItem(this); JMenuBar jmb = new JMenuBar(); JMenu jm = new JMenu("Fichier"); JMenuItem jmi = new JMenuItem("Nouveau"); jmi.addactionlistener(gmi); jm.add(jmi); jmi = new JMenuItem("Ouvrir"); jmi.addactionlistener(gmi); jm.add(jmi); jmb.add(jm); JPopupMenu popup = jm.getpopupmenu(); popup.setlightweightpopupenabled(false); setjmenubar(jmb); Emmanuel ADAM Bloc Note JAVA Page 35

36 ISTV Sujet TP Java Look story (histoire de regards) Sujet Sur une petite chaîne, un nouveau jeu vient de naître : il s agit de filmer 24/24 des candidats enfermés dans une maison. Les caméras permettent de suivre le regard des candidats, ainsi, si J-E. regarde L., une ligne est tracée entre eux deux. Il s agit ici de simuler une étape très importante du jeu : la piscine. Quatre candidats se trouvent aux quatre coins de la piscine. Alain est attiré par Bea qui est attirée par Cédric qui est attiré par Dorothée qui est attirée par Alain! Chacun(e) se trouve donc à un coin de la piscine et regarde dans la direction qui l attire. A chaque instant, il(elle) avance d un dixième de la distance qui le sépare de son élu(e). Définir la classe Candidat représentant une personne par sa position, son élu(e) et son comportement. Les candidats ne sont pas représentés graphiquement, seuls les regards le sont. Ecrivez la fonction affichant le regard, c est-à-dire le chemin séparant un(e) candidat de son élu(e) pour chaque étape (en utilisant la méthode drawline). Dans la Frame, placer les quatre candidats et faites les se déplacer un nombre limité de fois. Guide Etendez les classes Frame et WindowAdapter en vous basant sur l'exemple de la fiche "Une application fenêtrée". Sujet 2 Modifier le programme précédent : - les candidats sont en nombres variables et placés dans un vecteur (cf. La fiche correspondante) - le placement des candidats se fera par clic de souris (pour cela, étendez la classe MouseAdapter en redéfinissant la méthode MouseClicked). Exemple de résultat Ce sujet continue page suivante Page 36 Bloc Note JAVA Emmanuel ADAM

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

Une introduction à Java

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

Plus en détail

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

Développement Logiciel

Développement Logiciel Développement Logiciel Éxamen session 1-2012-2013 (Vendedi 25 mai, 9h-11h) Seuls les documents liés directement au cours sont autorisés (comme dit sur le site) : sujets de TD, notes de cours, notes personnelles

Plus en détail

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

INITIATION AU LANGAGE JAVA

INITIATION AU LANGAGE JAVA INITIATION AU LANGAGE JAVA I. Présentation 1.1 Historique : Au début des années 90, Sun travaillait sur un projet visant à concevoir des logiciels simples et performants exécutés dans des PDA (Personnal

Plus en détail

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

INTRODUCTION A JAVA. Fichier en langage machine Exécutable INTRODUCTION A JAVA JAVA est un langage orienté-objet pur. Il ressemble beaucoup à C++ au niveau de la syntaxe. En revanche, ces deux langages sont très différents dans leur structure (organisation du

Plus en détail

PROGRAMMATION PAR OBJETS

PROGRAMMATION PAR OBJETS PROGRAMMATION PAR OBJETS Java Environnement et constructions spécifiques Walter Rudametkin Maître de Conférences Bureau F011 Walter.Rudametkin@polytech-lille.fr B. Carré Polytech Lille 2 Java (Sun 1995)

Plus en détail

as Architecture des Systèmes d Information

as Architecture des Systèmes d Information Plan Plan Programmation - Introduction - Nicolas Malandain March 14, 2005 Introduction à Java 1 Introduction Présentation Caractéristiques Le langage Java 2 Types et Variables Types simples Types complexes

Plus en détail

TP1 : Initiation à Java et Eclipse

TP1 : Initiation à Java et Eclipse TP1 : Initiation à Java et Eclipse 1 TP1 : Initiation à Java et Eclipse Systèmes d Exploitation Avancés I. Objectifs du TP Ce TP est une introduction au langage Java. Il vous permettra de comprendre les

Plus en détail

Introduction au langage Java

Introduction au langage Java Introduction au langage Java 1 Introduction : Langage développé par Sun et purement orienté objet. N a pas de rapport direct avec Javascript développé par Netscape. Les applications java peuvent être des

Plus en détail

Programmation Orientée Objet - Licence TIS CM8/9. Rappel sur la séance précédente. Lancelot Pecquet Lancelot.Pecquet@math.univ-poitiers.

Programmation Orientée Objet - Licence TIS CM8/9. Rappel sur la séance précédente. Lancelot Pecquet Lancelot.Pecquet@math.univ-poitiers. Programmation Orientée Objet - Licence TIS CM8/9 Lancelot Pecquet Lancelot.Pecquet@math.univ-poitiers.fr Poitiers, le 13/03/2006 Rappel sur la séance précédente La fois précédente, nous avons vu : 1 UML

Plus en détail

Remote Method Invocation (RMI)

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

Plus en détail

Pour plus de détails concernant le protocole TCP conférez vous à la présentation des protocoles Internet enseignée pendant.

Pour plus de détails concernant le protocole TCP conférez vous à la présentation des protocoles Internet enseignée pendant. Chapitre 7 Le mode de communication en connexion est, a priori, supporté par le protocole TCP. Ce protocole fournit une communication fiable; les données sont transmises comme chaînes d octets. Avant de

Plus en détail

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre 2009. Enrica.Duchi@liafa.jussieu.fr

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre 2009. Enrica.Duchi@liafa.jussieu.fr . Cours intensif Java 1er cours: de C à Java Septembre 2009 Enrica DUCHI LIAFA, Paris 7 Enrica.Duchi@liafa.jussieu.fr LANGAGES DE PROGRAMMATION Pour exécuter un algorithme sur un ordinateur il faut le

Plus en détail

Java Licence Professionnelle CISII, 2009-10

Java Licence Professionnelle CISII, 2009-10 Java Licence Professionnelle CISII, 2009-10 Cours 4 : Programmation structurée (c) http://www.loria.fr/~tabbone/cours.html 1 Principe - Les méthodes sont structurées en blocs par les structures de la programmation

Plus en détail

Plan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7

Plan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7 Université Lumière Lyon 2 Faculté de Sciences Economiques et Gestion KHARKIV National University of Economic Introduction au Langage Java Master Informatique 1 ère année Julien Velcin http://mediamining.univ-lyon2.fr/velcin

Plus en détail

Interfaces graphiques avec l API Swing

Interfaces graphiques avec l API Swing Interfaces graphiques avec l API Swing Les Swing Les classes graphiques Swing dérivent de la classe JComponent, qui hérite ellemême de la classe AWT (Abstract Window Toolkit). Tous les composants Swing

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

Threads. Threads. USTL http://www.lifl.fr/ routier 1

Threads. Threads. USTL http://www.lifl.fr/ routier 1 Threads USTL http://www.lifl.fr/ routier 1 Rappels - Définitions un Process est un programme qui tourne et dispose de ses propres ressources mémoire. OS multi-tâche plusieurs process en concurrence un

Plus en détail

RN2-Programmation Orientée Objet - JAVA CH 1 Introduction à la POO et Java

RN2-Programmation Orientée Objet - JAVA CH 1 Introduction à la POO et Java RN2-Programmation Orientée Objet - JAVA CH 1 à la POO et Java Licence Professionnelle 2006 Agnès Guerraz INRIA Rhône-Alpes agnes.guerraz@inria.fr LP UPMF, Grenoble Septembre 2006 Ce cours reprend en grande

Plus en détail

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

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

Plus en détail

Entrées / Sorties. Entrées / Sorties. Entrées/Sorties. System.out. Fonctionnement par flots (stream) Karima Boudaoud IUT- R&T. Terrain connu.

Entrées / Sorties. Entrées / Sorties. Entrées/Sorties. System.out. Fonctionnement par flots (stream) Karima Boudaoud IUT- R&T. Terrain connu. Entrées / Sorties Entrées/Sorties Fonctionnement par flots (stream) Karima Boudaoud IUT- R&T Karima Boudaoud IUT GTR-Sophia Antipolis 2 Terrain connu Entrées / Sorties la classe java.lang.system cette

Plus en détail

Communication inter-processus (IPC) : tubes & sockets. exemples en C et en Java. F. Butelle

Communication inter-processus (IPC) : tubes & sockets. exemples en C et en Java. F. Butelle F. Butelle, E. Viennet, Système GTR2 IUT Paris 3 Communication inter-processus (IPC) : tubes & sockets exemples en C et en Java F. Butelle F. Butelle, E. Viennet, Système GTR2 IUT Paris 3 Java : implémentation

Plus en détail

Programmation Internet en Java

Programmation Internet en Java Chapitre 8 Programmation Internet en Java Vous avez déjà utilisé Internet, le plus connu des inter-réseaux mondiaux d ordinateurs et quelques-uns de ses services, en particulier le web et le courrier électronique.

Plus en détail

Bases du langage. Historique Applications et applets Éléments de base du langage Classes et objets Les exceptions

Bases du langage. Historique Applications et applets Éléments de base du langage Classes et objets Les exceptions Langage JAVA Bases du langage Opérations sur les fichiers Réseau Multi-tâche Logiciel: interfaces... Gestion des périphériques (méthodes natives) Accès aux bases de données Bases du langage Historique

Plus en détail

Flux de données Lecture/Ecriture Fichiers

Flux de données Lecture/Ecriture Fichiers Flux de données Lecture/Ecriture Fichiers 1 Un flux de données est un objet qui représente une suite d octets d un programme pour une certaine destination ou issus d une source pour un programme flux d

Plus en détail

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40 Déroulement du cours Introduction Concepts Java Remarques Langage et Concepts de Programmation Orientée-Objet Gauthier Picard École Nationale Supérieure des Mines de Saint-Étienne gauthier.picard@emse.fr

Plus en détail

RMI le langage Java XII-1 JMF

RMI le langage Java XII-1 JMF Remote Method Invocation (RMI) XII-1 Introduction RMI est un ensemble de classes permettant de manipuler des objets sur des machines distantes (objets distants) de manière similaire aux objets sur la machine

Plus en détail

Java Licence Professionnelle CISII, 2009-2010

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

Plus en détail

Bases Java - Eclipse / Netbeans

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

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

Utilisation d objets : String et ArrayList

Utilisation d objets : String et ArrayList Chapitre 6 Utilisation d objets : String et ArrayList Dans ce chapitre, nous allons aborder l utilisation d objets de deux classes prédéfinies de Java d usage très courant. La première, nous l utilisons

Plus en détail

Chapitre I Notions de base et outils de travail

Chapitre I Notions de base et outils de travail Chapitre I Notions de base et outils de travail Objectifs Connaître les principes fondateurs et l historique du langage Java S informer des principales caractéristiques du langage Java Connaître l environnement

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

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

Un ordonnanceur stupide

Un ordonnanceur stupide Un ordonnanceur simple Université Paris Sud L objet des exercices qui suivent est de créer un ordonanceur implantant l algorithme du tourniquet ( round-robin scheduler ). La technique utilisée pour élire

Plus en détail

Eclipse atelier Java

Eclipse atelier Java Eclipse atelier Java Table des matières 1. Introduction...2 2. Télécharger eclipse...3 3. Installer eclipse...3 4. Premier lancement d eclipse...3 5. Configurer eclipse pour faire du Java...5 6. Développer

Plus en détail

Gestion distribuée (par sockets) de banque en Java

Gestion distribuée (par sockets) de banque en Java Gestion distribuée (par sockets) de banque en Java Université Paris Sud Rappel sur la solution locale de gestion simple de banque L objet de cet exercice était de créer une application java qui implante

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

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

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

Plus en détail

Dis papa, c est quoi un bus logiciel réparti?

Dis papa, c est quoi un bus logiciel réparti? Dis papa, c est quoi un bus logiciel réparti? Raphael.Marvie@lifl.fr LIFL IRCICA Equipe GOAL Octobre 2006 10. Des sockets aux bus logiciels répartis 1 0. Une application répartie 2 Objectif Découvrir la

Plus en détail

INF 321 : mémento de la syntaxe de Java

INF 321 : mémento de la syntaxe de Java INF 321 : mémento de la syntaxe de Java Table des matières 1 La structure générale d un programme 3 2 Les composants élémentaires de Java 3 2.1 Les identificateurs.................................. 3 2.2

Plus en détail

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

Programmation Par Objets

Programmation Par Objets Programmation Par Objets Structures de données package java.util B. Carré Polytech Lille 1 Tableaux et structures de données Tableaux «Objets» taille fixe type des éléments : primitif (homogène) ou objets

Plus en détail

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

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

Aide mémoire UML & Java 1ère partie : Introduction. marc.lemaire@u-cergy.fr

Aide mémoire UML & Java 1ère partie : Introduction. marc.lemaire@u-cergy.fr Aide mémoire UML & Java 1ère partie : Introduction marc.lemaire@u-cergy.fr 9 septembre 2014 1 2014 v1.11 Table des matières 1 Généralités 6 1.1 Notations utilisées.....................................

Plus en détail

Introduction : les processus. Introduction : les threads. Plan

Introduction : les processus. Introduction : les threads. Plan IN328 Programmation distribuée avec Java et J2EE 2 - Threads en Java Introduction : les processus Un processus est un ensemble d instructions à exécuter, un espace mémoire réservé et éventuellement d autres

Plus en détail

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

Chapitre V. Les classes : Object, Vector, etc.

Chapitre V. Les classes : Object, Vector, etc. Chapitre V Les classes de base Les classes : Object, Vector, etc. Plan La classe Object Les collections La classe ArrayList La classe Vector Les classes Wrappers Les classes String et StringBuffer La classe

Plus en détail

Java Licence Professionnelle 2009-2010. Cours 7 : Classes et méthodes abstraites

Java Licence Professionnelle 2009-2010. Cours 7 : Classes et méthodes abstraites Java Licence Professionnelle 2009-2010 Cours 7 : Classes et méthodes abstraites 1 Java Classes et méthodes abstraites - Le mécanisme des classes abstraites permet de définir des comportements (méthodes)

Plus en détail

Environnements de développement (intégrés)

Environnements de développement (intégrés) Environnements de développement (intégrés) Tests unitaires, outils de couverture de code Patrick Labatut labatut@di.ens.fr http://www.di.ens.fr/~labatut/ Département d informatique École normale supérieure

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

Introduction à Eclipse

Introduction à Eclipse Introduction à Eclipse Eclipse IDE est un environnement de développement intégré libre (le terme Eclipse désigne également le projet correspondant, lancé par IBM) extensible, universel et polyvalent, permettant

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

Langage Java. Classe de première SI

Langage Java. Classe de première SI Langage Java Table des matières 1. Premiers pas...2 1.1. Introduction...2 1.2. Mon premier programme...2 1.3. Les commentaires...2 2. Les variables et les opérateurs...2 3. La classe Scanner...3 4. Les

Plus en détail

TP3. Mail. Attention aux fausses manoeuvres lors de ce TP vous pouvez endommager votre mail sur ouindose.

TP3. Mail. Attention aux fausses manoeuvres lors de ce TP vous pouvez endommager votre mail sur ouindose. Université Paris 7 M2 II Protocole Internet TP3 Mail Attention aux fausses manoeuvres lors de ce TP vous pouvez endommager votre mail sur ouindose. 1 Protocole SMTP 1. Le protocole SMTP est définit dans

Plus en détail

Remote Method Invocation Les classes implémentant Serializable

Remote Method Invocation Les classes implémentant Serializable Parallélisme Architecture Eric Goubault Commissariat à l Energie Atomique Saclay Classe qui implémente la méthode distante (serveur): - dont les méthodes renvoient un objet serializable - ou plus généralement

Plus en détail

Projet de programmation (IK3) : TP n 1 Correction

Projet de programmation (IK3) : TP n 1 Correction Projet de programmation (IK3) : TP n 1 Correction Semaine du 20 septembre 2010 1 Entrées/sorties, types de bases et structures de contrôle Tests et types de bases Tests et types de bases (entiers) public

Plus en détail

Java RMI. Arnaud Labourel Courriel: arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 8 mars 2011

Java RMI. Arnaud Labourel Courriel: arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 8 mars 2011 Java RMI Arnaud Labourel Courriel: arnaud.labourel@lif.univ-mrs.fr Université de Provence 8 mars 2011 Arnaud Labourel (Université de Provence) Java RMI 8 mars 2011 1 / 58 Web services Services par le réseau

Plus en détail

Java c est quoi? Java. Java. Java : Principe de fonctionnement 31/01/2012. 1 - Vue générale 2 - Mon premier programme 3 - Types de Programme Java

Java c est quoi? Java. Java. Java : Principe de fonctionnement 31/01/2012. 1 - Vue générale 2 - Mon premier programme 3 - Types de Programme Java 1 - Vue générale 2 - Mon premier programme 3 - Types de Programme 1 2 c est quoi? Technologie développée par SUN Microsystems lancée en 1995 Dans un des premiers papiers* sur le langage JAVA, SUN le décrit

Plus en détail

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile Dans ce TP, vous apprendrez à définir le type abstrait Pile, à le programmer en Java à l aide d une interface

Plus en détail

Programmation en Java IUT GEII (MC-II1) 1

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

Plus en détail

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

Construire des plug-ins pour SAS Management Console SAS 9.1

Construire des plug-ins pour SAS Management Console SAS 9.1 Construire des plug-ins pour SAS Management Console SAS 9.1 Janvier 2005 Sommaire 1 INTRODUCTION... 3 1.1 OBJECTIFS... 3 1.2 PERIMETRE... 3 2 LES COMPOSANTS DE SAS MANAGEMENT CONSOLE... 4 3 LA CONSTRUCTION

Plus en détail

Java Licence professionnelle CISII, 2009-2010

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

Plus en détail

TD3: tableaux avancées, première classe et chaînes

TD3: tableaux avancées, première classe et chaînes TD3: tableaux avancées, première classe et chaînes de caractères 1 Lestableaux 1.1 Élémentsthéoriques Déclaration des tableaux Pour la déclaration des tableaux, deux notations sont possibles. La première

Plus en détail

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique Institut Supérieure Aux Etudes Technologiques De Nabeul Département Informatique Support de Programmation Java Préparé par Mlle Imene Sghaier 2006-2007 Chapitre 1 Introduction au langage de programmation

Plus en détail

Calcul Parallèle. Cours 5 - JAVA RMI

Calcul Parallèle. Cours 5 - JAVA RMI Calcul Parallèle Cours 5 - JAVA RMI Eric Goubault Commissariat à l Energie Atomique & Chaire Ecole Polytechnique/Thalès Saclay Le 28 février 2012 Eric Goubault 1 28 février 2012 Remote Method Invocation

Plus en détail

J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation

J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation Cycle Ingénierie 2e année SIGL Dernière mise à jour : 19/10/2006 Christophe Porteneuve Threads Principes Cycle de vie Création java.lang.thread

Plus en détail

JAVA. Introduction à la programmation objet avec java 1/4. Nadir BOUSSOUKAIA

JAVA. Introduction à la programmation objet avec java 1/4. Nadir BOUSSOUKAIA JAVA Introduction à la programmation objet avec java 1/4 Nadir BOUSSOUKAIA v1.04 SOMMAIRE Caractéristiques de java (40mn) Eléments du langage (40mn) Les core API java (20mn) 2 Partie 1 Caractéristiques

Plus en détail

Cours 14 Les fichiers

Cours 14 Les fichiers Cours 14 Les fichiers F. Gayral 1 Fichier : définition /media/travaux/documents/fgenseignement/java1/courstpsfgfc/14-fichiers/voirtypefichiers Fichier = ensemble d informations codées et stockées sur une

Plus en détail

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants. RMI Remote Method Invocation: permet d'invoquer des méthodes d'objets distants. Méthode proche de RPC. Outils et classes qui rendent l'implantation d'appels de méthodes d'objets distants aussi simples

Plus en détail

TP1. Outils Java Eléments de correction

TP1. Outils Java Eléments de correction c sep. 2008, v2.1 Java TP1. Outils Java Eléments de correction Sébastien Jean Le but de ce TP, sur une séance, est de se familiariser avec les outils de développement et de documentation Java fournis par

Plus en détail

Remote Method Invocation en Java (RMI)

Remote Method Invocation en Java (RMI) Remote Method Invocation en Java (RMI) Modélisation et construction des applications réparties (Module M-4102C) J. Christian Attiogbé Fevrier 2015 J. Christian Attiogbé (Fevrier 2015) Remote Method Invocation

Plus en détail

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java Langages objets Introduction M2 Pro CCI, Informatique Emmanuel Waller, LRI, Orsay présentation du module logistique 12 blocs de 4h + 1 bloc 2h = 50h 1h15 cours, 45mn exercices table, 2h TD machine page

Plus en détail

Programmation Objet Java Correction

Programmation Objet Java Correction INSA - 4 AE 2007 2008 Durée : 1H00 Contrôle Programmation Objet Java Correction Consignes Tous les documents sont autorisés, mais ils seront peu utiles. Indiquez vos nom et prénom sur chaque feuille. Le

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

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

Le langage JAVA G. Baulieu Institut de Physique Nucléaire de Lyon Septembre 2009

Le langage JAVA G. Baulieu Institut de Physique Nucléaire de Lyon Septembre 2009 Le langage JAVA G. Baulieu Institut de Physique Nucléaire de Lyon Septembre 2009 Quelques acronymes JDK : Java Development Kit SDK : Software Development Kit J2SE : Java 2 Standard Edition JRE : Java Runtime

Plus en détail

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

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

Plus en détail

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

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

Plus en détail

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp Serveur d'application Client HTML/JS Apache Thrift Bootcamp Pré-requis La liste ci-dessous de logiciels doit être installée et opérationnelle sur la machine des participants : Compilateur thrift http://thrift.apache.org/

Plus en détail

Java c est quoi? Java pourquoi?

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

Plus en détail

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet TP Composants Java ME - Java EE Vous allez, dans ce TP, construire une architecture client serveur, plus précisément MIDlet cliente, servlet serveur. Pour cela, on va d'abord installer la partie serveur

Plus en détail

Java DataBaseConnectivity

Java DataBaseConnectivity Java DataBaseConnectivity JDBC JDBC est une API Java (ensemble de classes et d interfaces défini par SUN et les acteurs du domaine des SGBD) permettant d accéder aux bases de données à l aide du langage

Plus en détail

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

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

Présentation. Au programme. Fonctionnement. A l issue de ce module vous devriez...

Présentation. Au programme. Fonctionnement. A l issue de ce module vous devriez... Au programme Conception Orientée Objet Jean-Christophe Routier Licence mention Informatique Université Lille 1 Présentation L UE COO est le prolongement immédiat de l UE POO du S4 informatique. cf. http://portail.fil.univ-lille1.fr/portail/ls4/poo

Plus en détail

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011 Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr Université de Provence 9 février 2011 Arnaud Labourel (Université de Provence) Exclusion Mutuelle 9 février 2011 1 / 53 Contexte Epistémologique

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

ACTIVITÉ DE PROGRAMMATION

ACTIVITÉ DE PROGRAMMATION ACTIVITÉ DE PROGRAMMATION The purpose of the Implementation Process is to realize a specified system element. ISO/IEC 12207 Sébastien Adam Une introduction 2 Introduction Ø Contenu Utilité de l ordinateur,

Plus en détail

Package Java.util Classe générique

Package Java.util Classe générique Package Java.util Classe générique 1 Classe Vector La taille est dynamique: dès qu un tableau vectoriel est plein, sa taille est doublée, triplée, etc. automatiquement Les cases sont de type Object add(object

Plus en détail

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

Programmation Réseau. Sécurité Java. Jean-Baptiste.Yunes@univ-paris-diderot.fr. UFR Informatique 2012-2013. jeudi 4 avril 13

Programmation Réseau. Sécurité Java. Jean-Baptiste.Yunes@univ-paris-diderot.fr. UFR Informatique 2012-2013. jeudi 4 avril 13 Programmation Réseau Sécurité Java Jean-Baptiste.Yunes@univ-paris-diderot.fr UFR Informatique 2012-2013 Java Sécurité? différentes sécurités disponibles et contrôlables intégrité contrôle d accès signature/authentification/cryptographie

Plus en détail

Web Tier : déploiement de servlets

Web Tier : déploiement de servlets Web Tier : déploiement de servlets 1 / 35 Plan 1 Introduction 2 Servlet : Principe de fonctionnement 3 Création et développement sur un serveur JEE 4 Quelques méthodes de l API des servlets 5 Utilisation

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

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris : Développement d un client REST, l application Vélib 1. Présentation L application présentée permet de visualiser les disponibilités des vélos et des emplacements de parking à la disposition des parisiens

Plus en détail

TP, première séquence d exercices.

TP, première séquence d exercices. TP, première séquence d exercices. Benoît Valiron benoit.valiron@lipn.univ-paris13.fr 7 novembre 2010 Introduction Vous écrirez les réponses aux questions courtes sur une feuille à rendre à la fin de la

Plus en détail