La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV Java Module Java Expert.

Présentations similaires


Présentation au sujet: "CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV Java Module Java Expert."— Transcription de la présentation:

1 CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV Java Module Java Expert

2 Module UV Java Page 2 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle Module Java n Vue densemble du langage Java n Le langage Java : syntaxe et sémantique n Programmation multi-tâche : les threads n Accéder aux bases de données n Composants réutilisables : le modèle MVC n Développement Client/Serveur n Présentation dun IDE : WSAD / Forté / JBuilder n Les serveurs dapplications J2EE n Les Enterprise JavaBeans n Ré-ingénierie dapplications Java

3 Module UV Java Page 3 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle Le Langage Java n Commentaires n Variables et types primitifs n Concepts de base Objet n Classes et Objets n Instructions et Expressions n Constantes nommées n Exceptions n Tableaux

4 Module UV Java Page 4 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle Commentaires /* commentaire multi- ligne */ // commentaire /** javadoc commentaire multi- ligne */ Le compilateur javadoc: mkdir docs cd docs javadoc..\*.java cd.. Bonne pratique de mettre les fichiers *.html dans un dossier séparé (e.g. docs).

5 Module UV Java Page 5 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle Variables n Chaque variable doit avoir un type type nomVariable n types de données primitifs –booleansoit true ou false –char16-bit charactère Unicode 1.1 –byte8-bit entier( signé ) –short16-bit entier( signé ) –int32-bit entier( signé ) –long64-bit entier( signé ) –float32-bit réel ( IEEE 754-1985 ) –double64-bit réel ( IEEE 754-1985 ) –void indique pas de type (méthodes uniquement)

6 Module UV Java Page 6 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle Exemples - Types Primitifs Exemples de types de données primitifs : int num = 4; float f = 0.2f; double d = 0.0; char = n; Initialisation de la variable Déclaration

7 Module UV Java Page 7 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle Concepts de base n Classe et Objet –Classe un modèle, un concept, une famille dentité du monde réel, des caractéristiques communes deux parties: –champs: données représentant létat dune (des) entité(s) –méthodes : modifie létat de (des) entité(s) –Objets une entité possédant les caractéristiques du modèle instance de la classe

8 Module UV Java Page 8 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle Les méthodes n Les Méthodes et les paramètres –méthodes - opérations dune classe –paramètres - les arguments des méthodes n Cacher limplémentation et létat de lobjet –létat ne peut être modifié que par les méthodes interface de lobjet n Encapsulation des données –cacher les données derrière les méthodes –létat est inaccessible aux autres objets

9 Module UV Java Page 9 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle Définition dune Classe public class NomdelaClasse { // létat type nomChamps1 ;// létat type nomChamps2 ; … // Le constructeur de la classe NomdelaClasse()// Le constructeur de la classe {initialiser les champs de la classe ; } // les méthodes … // les méthodes // pas de paramètres typeRetour nomOpération ( )// pas de paramètres {liste des instructions ; } typeRetour nomOpération ( type paramètre,...) {liste des instructions ; }... }

10 Module UV Java Page 10 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle Définition dune Classe class Point { double x, y; public Point() {x = 0; y = 0; } public void setCoordonneeX(double p_x) {x = p_x; } public void setCoordonneeY(double p_y) {y = p_y; }

11 Module UV Java Page 11 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle Hello, World(1) n objets String –lunique paramètre de la méthode main –passage de données à lapplication n System.out.println –affiche un message n main –méthode spéciale en Java : point dentrée –main peut créer des objets, évaluer des expressions, invoquer dautres méthodes, etc. class HelloWorld { // pas de champs public static void main (String[] args) { System.out.println(Hello, world); }

12 Module UV Java Page 12 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle Hello, World(2) n Compilation > javac HelloWorld.java > dir HelloWorld.class HelloWorld.class –compilateur Java (javac) compile le code source dans un bytecode Java n Exécution > java HelloWorld Hello, World

13 Module UV Java Page 13 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle Les objets n Création dobjets (= instanciations) –objets sont crées en utilisant le mot-clé new –ceci permet de leur allouer de la mémoire –les objets sont manipulés via leurs references n instanciation, instance, variable dinstance –la création dun objet à partir dune classe est appelée instanciation –les objets sont appelés les instances –les champs dun objet sont des variables dinstance

14 Module UV Java Page 14 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle Les objets : Invoquer les méthodes n Pour invoquer une méthode, –posséder une référence dobjet et le nom dune méthode, séparés par un point (.) n Pour retourner plus dune valeur, –créer un objet qui contient les valeurs et retourner cet objet n récepteur objet (receiver) –Lobjet sur lequel la méthode est invoquée

15 Module UV Java Page 15 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle Les objets class Dessin { public static void main(String[] args) { Point infGauche = new Point(); Point supDroit = new Point(); infGauche.setCoordonneeX(0.0) ; infGauche.setCoordonneeY(0.0) ; supDroit.setCoordonneeX(10.0) ; supDroit.setCoordonneeY( 10.0) ; } Invocation de la méthode Passage de paramètres Instanciation=>appelconstructeur

16 Module UV Java Page 16 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle Les Objets : la référence this référence implicite nommée this –une référence à lobjet courant (le récepteur) class Point { public double x, y; public void deplacer(double x, double y) { this.x = x; this.y = y; } class Dessin { public static void main(String[] args) { Point infGauche = new Point(); Point supDroit = new Point(); infGauche.deplacer(1.0, 2.0) ; }

17 Module UV Java Page 17 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle Les objets n Les champs statiques (classe) –connus comme variables de classe –partagés par tous les objets de la classe –déclarés par le mot clé static n Les champs non-statiques (par objet) –chaque objet possède des champs distincts

18 Module UV Java Page 18 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle Les objets public class Point { static int nombrePoints = 0; public Point() {nombrePoints++; } public static int getNombrePoints() {return nombrePoints; } Modifications de la classe Point

19 Module UV Java Page 19 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle Les objets nombrePoints = 1 nombrePoints = 2 class Dessin { public static void main(String[] args) { Point infGauche = new Point(); // creation des objets Point supDroit = new Point(); System.out.println( Point.getNombrePoints() ); }

20 Module UV Java Page 20 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle Le Garbage Collector n Les objets Java non référencés sont automatiquement détruits par le garbage collector n Le garbage collector travaille en arrière plan et traque les références des objets n Possibilité de linvoquer directement après la suppression dune référence : System.gc() ;

21 Module UV Java Page 21 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle Les Constantes Nommées n Pourquoi le programmeur utilise des constantes nommées? –une forme de documentation –plus facile à maintenir les programmes n Constantes Nommées sont crées en –déclarant une variable static et final –indiquant sa valeur initiale class Cercle { static final double PI = 3.1416; }

22 Module UV Java Page 22 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle Types Référence (objets) Les Types Référence : –les classes ne sont pas de simples structures –passage par référence, pas par valeur –passage dun objet à dautres objets de lapplication –les modifications sont répercutées dans lobjet

23 Module UV Java Page 23 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle exemples - Types Référence Button b; b = new Button(press me); String s = new String(hello); String s[]; s = new String[20]; Oui, un tableau est un type dobjet String s[] = new String[20]; identique

24 Module UV Java Page 24 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle Les instructions n Ecrites uniquement à lintérieur du corps de la méthode { x = 4; } n Possèdent une visibilité n 3 types: séquence, condition, itération

25 Module UV Java Page 25 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle Les instructions - sequence int x = 4; int y = 5; x += y; String s = new String(hello); //etc.

26 Module UV Java Page 26 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle Les instructions - condition if(testscore >= 90) { grade = A; } else if(testscore >= 80) { grade = B; } else if(testscore >= 70) { grade = C; } else if(testscore >= 60) { grade = D; } else { grade = F; } if(age>0 && age<=20) x = 4; else if(age>20 && age<=40) x = 3; else x = 0;

27 Module UV Java Page 27 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle Les instructions - condition switch (month){ case 1: System.out.println(January); break; case 2: System.out.println(February) ; break; case 3: System.out.println(March); break; case 4: System.out.println(April); break; case 5: System.out.println(May); break; case 6: System.out.println(June); break; case 7: System.out.println(July); break; case 8: System.out.println(August); break; case 9: System.out.println(September); break; case 10: System.out.println(October); break; case 11: System.out.println(November); break; case 12: System.out.println(December); break; default: System.out.println(Invalid Month); break; }

28 Module UV Java Page 28 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle while(true){ x += 2; } Les instructions - itération for(int ndx=0; ndx<100; ndx++){ y += 1; } Equivalent à x=x+2; do{ x += 2; } while(true)

29 Module UV Java Page 29 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle Les instructions - itération one: while(true){ two: while(false){ x += 1; // break or continue point } // after two } // after one

30 Module UV Java Page 30 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle Les Expressions n Instructions qui produisent un résultat lorsquelles sont évaluées. –Exemple x += 2; n Les même opérateurs quen C, sauf… –pas de manipulations directes des pointeurs –pas de *, déréferencement, ou sizeof

31 Module UV Java Page 31 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle Expressions Opérateurs disponibles: –Unaire … +, -, ++, -- –Binaire … +, -, *, /, %, &, |, ^, ~, >, >>> –Relationnel …, =, ==, !=, &&, ||

32 Module UV Java Page 32 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle Les tableaux n Collection dobjets. –opérateur spécial [] pour accéder aux éléments du tableau –new et [] permettent de créer un tableau dobjets n collection ordonnée d'éléments (types de données ou objets) n Obligation dinstancier les objets à chaque position du tableau! Book books[] = new Book[20];

33 Module UV Java Page 33 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle Les tableaux int[] arrayofInts; // data types or int arrayofInts[]; arrayofInts = new int[15]; //indexes 0 to 14 String[] someStrings; // tableau ou String someStrings[]; someStrings = new String[2]; // très important someStrings[0] = new String(hello); someStrings[1] = goodbye; int[] someInts = new int[19];

34 Module UV Java Page 34 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle Les Objets String (1) n La classe String –propose une variété de méthodes –non thread safe –les objets String sont inchangeables str = redwood; référence dobjet contenu str = oak; /* nouvelle valeur à la référence dobjet str, pas à son contenu */ n La classe StringBuffer –propose des chaînes changeables –thread safe

35 Module UV Java Page 35 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle Les Objets String (2) class BetterStringsDemo { public static void main(String[] args) { String myName = "Petronius"; String occupation = "Reorganization Specialist"; myName = myName + " Arbeiter"; myName += " "; myName += "(" + occupation + ")"; System.out.println("Name = " + myName); } } Name = Petronius Arbeiter (Reorganization Specialist)

36 Module UV Java Page 36 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle Les Objets String (3) public class sbedit { public static void main(String args[]) { StringBuffer sb = new StringBuffer("testing"); sb.replace(0, 4, "TEST"); System.out.println("after replace = " + sb); sb.delete(5, 7); System.out.println("after delete = " + sb); String s = sb.substring(0, 4); System.out.println("after substring = " + s); } after replace = TESTing after delete = TESTi after substring = TEST

37 Module UV Java Page 37 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle if (oneStr.equals(twoStr)) foundDuplicate(oneStr, twoStr); Les Objets String (4) La m é thode equals compare deux objets String au niveau de leur contenu

38 Module UV Java Page 38 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle Les Charactères Unicode n Possibilité décrire le code Java en Unicode - un ensemble de caractères international et standard n Les caractères Unicode sont codés sur 16 bits et permettent une grande variété de symboles

39 Module UV Java Page 39 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle Module Java Extension des classes et dinterfaces

40 Module UV Java Page 40 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle Héritage dune Classe Héritage Simple uniquement !!! public class SousClass extends SuperClass{ // champs & méthodesde la Sous classe } Super Classe Sous Classe Héritage

41 Module UV Java Page 41 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle Etendre une classe Class Point x() y() clear() double x double y set() Class Pixel Pixel extends Point x() y() clear() double x double y set() Color color

42 Module UV Java Page 42 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle Extension dune Classe(1) n Sous classe –héritage de tous les champs et méthodes de la super classe –Si une nouvelle implémentation dune méthode héritée, alors surcharge le comportement de la super classe class Point { public double x, y; public void clear(){ x = 0.0; y = 0.0; } } class Pixel extends Point { Color color ; public void clear() { super.clear(); color = null; } }

43 Module UV Java Page 43 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle La Classe Object n Toutes les Classes qui nhéritent pas explicitement dune autre classe, héritent de la classe Object n La classe Object est la classe générique pour tous les objets Java n La classe Object définit plusieurs méthodes Object oref = new Pixel(); oref = Some String

44 Module UV Java Page 44 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle Invoquer des Méthodes de la super classe n super vs this –super - référence quelque chose de la super classe –this - référence quelque chose de lobjet courant n Pour invoquer une méthode –utilise le type actuel de lobjet Point point = new Pixel(); point.clear(); // utilise clear() de Pixel, pas de Point class Pixel extends Point { Color color ; public void clear() { super.clear(); color = null; } } Appel de la méthode clear de Point

45 Module UV Java Page 45 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle Lhéritage Multiple n Contrairement à C++, Java ne peut pas effectuer dhéritage multiple, mais… n Java peut implémenter des interfaces n Les interfaces sont: –listes de méthodes qui définissent un ensemble de comportements doivent toutes –Toutes classes qui implémentent une interface doivent implémenter toutes les méthodes de cette interface!

46 Module UV Java Page 46 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle Les Interfaces(1) n Interfaces –similaire à une classe, mais avec uniquement les déclarations des méthodes (pas de corps) –les détails dimplémentation de ces méthodes ne sont pas nécessaires => contrat –La classe qui implémente linterface est responsable de limplémentation spécifique n Les types de super classes sont : –super classe qui sont héritées (extends) –interfaces qui doivent être implémentées (implements)

47 Module UV Java Page 47 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle void processValues(String[] names, Lookup table) { for(int i=0; i<names.length; i++) { Object value = table.find(names[i]); if(value != null) processValue(names[i], value); } Les Interfaces(2) Code qui référence un objet Lookup et récupère les résultats attendus => polymorphisme : table est un descendant de Lookup interface Lookup { /** Retourne la valeur associée avec le nom, * ou null si il ny a pas de valeurs*/ Object find(String nam); }

48 Module UV Java Page 48 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle class SimpleLookup implements Lookup { private String[] Names; private Object[] Values; public Object find(String name) { for( int i=0; i<names.length; i++ ) { if( Names[i].equals(name) ) return Values[i]; } return null;// non trouvé } // …. } Les Interfaces(3)

49 Module UV Java Page 49 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle Module Java Les exceptions

50 Module UV Java Page 50 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle Exceptions n Un problème survient dans lapplication n Le contrôle du programme est transféré directement à une section désignée de traitement du problème n throw et catch –catch - gère le problème (traitement exception) –throw - Laisse quelquun dautre gérer le problème

51 Module UV Java Page 51 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle Exceptions Exemple dutilisation de catch :try{ openFile(myfile.txt); openFile(myfile.txt); } catch(FileNotFoundException fnfe) { // gère le problème de fichier // gère le problème de fichierSystem.out.println(fnfe.toString()); } catch(IOException ioe) { // gère les erreurs dentrées / sorties // gère les erreurs dentrées / sortiesSystem.out.println(ioe.toString()); } finally { // faire quelque chose de commun à toutes les exceptions // faire quelque chose de commun à toutes les exceptions}

52 Module UV Java Page 52 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle Exceptions Exemple dutilisation de throw : public class myClass throws IOException, InterruptedException { // champs & méthodes dans myClass // champs & méthodes dans myClass}

53 Module UV Java Page 53 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle Les Exceptions n Java vérifie le type dexceptions pour gérer lerreur et choisir le traitement approprié (catch) n Les exceptions personnalisées –forcer le programmeur à considérer ce quil doit faire lorsquune erreur se produit dans le code –exception est un objet, avec un type, des méthodes, et des données

54 Module UV Java Page 54 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle Les Exceptions n Lobjet exception –généralement dérivé de la classe Exception, qui propose un champs String pour décrire lerreur –toutes les exceptions étendent la classe Throwable, qui est la super classe de Exception n Gestion de lException –séquence try-catch-finally –finally - code exécuté du chemin normal dexécution ou du chemin dexception => synchronisation, nettoyage avant fermeture, etc..

55 Module UV Java Page 55 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle Les Exceptions class IllegalAverageException extends Exception { } class MyUtilities { public double averageOf ( double[] vals, int i, int j ) throws IllegalAverageException { try{ return ( vals[i] + val[j] ) / 2; } catch ( IndexOutOfBoundsException e ){ throw new illegalAverageException(); }

56 Module UV Java Page 56 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle Module Java Notion de paquetage

57 Module UV Java Page 57 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle Les Packages(1) n Solution pour le conflits de noms –utiliser le prefixe package devant chaque classe ce nest pas une solution complète n Packages –possèdent un ensemble de types et de sous packages comme membres –les noms de packages sont hiérarchiques et séparés par un point –utilisation dun package utilise le nom qualifié du package import de tous les éléments du package

58 Module UV Java Page 58 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle Les Packages(2) n Utilisation dune partie dun package class Date1 { public static void main(String[] args) { java.util.Date java.util.Date now = new java.util.Date(); System.out.println(now); } import java.util.Date; class Date2 { public static void main(String[] rgs){ Date now = new Date(); System.out.println(now); } Utiliser le nom pleinement qualifié importer tout ou partie du package

59 Module UV Java Page 59 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle Les Packages(3) n Convention de nommage des packages –solution pour la gestion de la collision de noms –utilise le système de noms de domaines Internet (inversé) pour préfixer le nom du package. e.g., COM.acme.package, KR.ac.snu.oopsla.package package com. ecommerce; class Card { // ………… }

60 Module UV Java Page 60 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle Module Java Les applets

61 Module UV Java Page 61 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle Les Applets n Applet –programme Java qui sexécute dans le navigateur du client –Faire une classe qui hérite de la classe Applet (Java 1) ou JApplet (Java2) –Implémenter des méthodes init(), start(), stop(), destroy() –Il ny a pas de méthode main –inclure lApplet dans une page HTML

62 Module UV Java Page 62 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle java.applet.* Object AppletStub AppletContext ComponentContainerPanelApplet java.awt

63 Module UV Java Page 63 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle java.applet.Applet (1) Une applet est une classe compilée héritant de java.applet.Applet n Elle est diffusé par un serveur web dans une page HTML n Elle est téléchargée puis exécutée par le browser. n Elle est soumise au Security Manager du browser : –pas d'accès en lecture ni en écriture sur le disque du browser. –connexion réseau uniquement sur le serveur d'origine. –pas de chargement de librairie native. –pas de lancement de processus,...

64 Module UV Java Page 64 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle java.applet.Applet (2) Structure d'une applet public class MyApplet extends java.applet.Applet { public void init() {...} public void start() {...} public void paint(java.awt.graphics g) {...} public void stop() {...} public void destroy() {...} }

65 Module UV Java Page 65 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle java.applet.Applet (3) n Diffusion de l'applet <OBJECT code="MyApplet" codebase="http://www-lil.univ-littoral.fr/ ~deruelle/applets/" width=300 height=200>

66 Module UV Java Page 66 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle java.applet.Applet (4) Quelques méthodes : String msg = this.getParameter("message"); this.showStatus("Applet en cours"); Image img = this.getImage(new URL("http://www-lil.univ-littoral.fr/image.gif")); AppletContext ctxt = this.getAppletContext(); ctxt.showDocument(new URL("http:// www-lil.univ-littoral.fr /page.html"), "frame");

67 Module UV Java Page 67 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle Les Applets n Exemple dApplet public class Simple extends Applet { StringBuffer buffer; public void init() { buffer = new StringBuffer(); addItem("initializing... "); } public void start() { addItem("starting... "); } public void stop() { addItem("stopping... "); } public void destroy() { addItem("preparing for unloading..."); } void addItem(String newWord) { System.out.println(newWord); buffer.append(newWord); repaint(); } public void paint(Graphics g) { g.drawRect(0, 0, size().width - 1, size().height - 1); g.drawString(buffer.toString(), 5, 15); }

68 Module UV Java Page 68 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle Module Java Vue densemble des paquetages Java

69 Module UV Java Page 69 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle java.lang.* Object Boolean Character Class Math Number Process Runtime String StringBuffer System Thread ThreadGroup Throwable Double Float Integer Long Runnable Clonable

70 Module UV Java Page 70 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle java.lang.String (1) La classe String gère des chaînes de caractères ( char ). Une String nest pas modifiable. Toute modification entraîne la création d'une nouvelle String. Les valeur littérales ( "abc" ) sont transformées en String. L'opérateur + permet la concaténation de 2 String.

71 Module UV Java Page 71 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle Java.lang.String (2) String s = "\u00catre ou ne pas \u00catre"; // s = "Être ou ne pas être" int lg = s.length(); // lg = 19 String s = "Java" + "Soft"; // s = "JavaSoft" String s = (String) new URL("http://server/big.txt").getContent(); char[] data = {'J', 'a', 'v', 'a'}; String name = new String(data); String s = String.valueOf(2 * 3.14159); // s = "6.28318" String s = String.valueOf(new Date()); // s = "Sat Jan 18 12:10:36 GMT+0100 1997" int i = Integer.valueOf("123"); // i = 123 String s = "java"; if (s == "java") {...} // Erreur if (s.equals("java") {...} // Ok

72 Module UV Java Page 72 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle java.lang.StringBuffer La classe StringBuffer gère des chaînes de caractères ( char ) modifiable ( setCharAt(), append(), insert() ) La méthode toString() convertie une StringBuffer en String (pas de recopie, le même tableau est partagé, jusqu'à modification) StringBuffer sb = "abc"; // Erreur: ne peut pas convertir String en StringBuffer StringBuffer sb = new StringBuffer("abc"); sb.setCharAt(1, 'B'); // sb= "aBc" sb.insert(1, "1234); // sb = "a1234Bc" sb.append("defg"); // sb = "a1234Bcdefg" String s = sb.toString(); // s = "a1234Bcdefg" sb.append("hij"); // sb = "a1234Bcdefghij" s = "a1234Bcdefg"

73 Module UV Java Page 73 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle java.lang.Class La classe Class représente une classe java. n Elle n'est pas instanciable n Elle permet de créer dynamiquement des nouvelles instances (mais seul le constructeur par défaut est appelé) Class classname = Class.forName("java.util.date"); Date d = (Date)classname.newInstance(); System.out.println("Date : " + d); // Sat Jan 18 12:10:36 GMT+0100 1997 Integer i = classname.getMethod("getMinutes", null).invoke(d, null);

74 Module UV Java Page 74 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle java.util.* Object BitSet Date Observable Random StringTokenizer Vector DictionaryHashtableProperties Stack

75 Module UV Java Page 75 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle java.util.Hashtable Cette classe gère une collection d'objets au travers d'une table de hachage dont les clés sont des String et les valeurs associées des Object. Hashtable ht = new Hashtable(); ht.put("noel", new Date("25 Dec 1997")); ht.put("un vecteur", new Vector()); Vector v = (Vector)ht.get("un vecteur"); for(Enumeration e = ht.keys(); e.hasMoreElements();){ String key = (String)e.nextElement;... }

76 Module UV Java Page 76 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle java.util.Properties Cette classe gère une collection d'objets au travers d'une table de hachage dont les clés et les valeurs sont des String. Properties p = new Properties(); p.put("é", "\'e"); p.put("&egrave", "\`e"); p.put("&ecirc", "\^e"); String s = p.getProperty("é"); for(Enumeration e = p.keys(); e.hasMoreElements();){ String key = (String)e.nextElement;... }

77 Module UV Java Page 77 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle java.util.Vector Cette classe gère une collection d'objet dans un tableau dynamique. Vector v = new Vector(); v.addElement("une chaine"); v.addElement(new date()); v.addElement(new String[]); v.addElement(new Vector()); v.setElementAt("abcde", 2); System.out.println(v.elementAt(2)); // --> abcde

78 Module UV Java Page 78 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle java.util.StringTokenizer Cette classe permet de découper une String selon des séparateurs. String str = "avion, bateau ; train "; StringTokenizer st = new StringTokenizer(str, ";, "); System.out.println(st.nextToken()); // --> avion System.out.println(st.nextToken()); // --> bateau System.out.println(st.nextToken()); // --> train

79 Module UV Java Page 79 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle java.io.* File FileDescriptor RandomAccessFile OutputStream StreamTokenizer BufferedInputStream DataInputStream LineNumberInputStream PushbackInputStream BufferedOutputStream DataOutputStream PrintStream ByteArrayInputStream FileInputStream FilterInputStream PipedInputStream SequenceInputStream StringBufferInputStream ByteArrayOutputStream FileOutputStream FilterOutputStream PipedOutputStream InputStream Object

80 Module UV Java Page 80 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle java.io.File Cette classe fournie une définition platform-independent des fichiers et des répertoires. File f = new File("/etc/passwd"); System.out.println(f.exists()); // --> true System.out.println(f.canRead()); // --> true System.out.println(f.canWrite()); // --> false System.out.println(f.getLength()); // --> 11345 File d = new File("/etc/"); System.out.println(d.isDirectory()); // --> true String[] files = d.list(); for(int i=0; i < files.length; i++) System.out.println(files[i]);

81 Module UV Java Page 81 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle Les flux java.io.File(Entrée|Sortie) Ces classes permettent d'accéder en lecture et en écriture à un fichier. FileInputStream fis = new FileInputStream("source.txt"); byte[] data = new byte[fis.available()]; fis.read(data); fis.close(); FileOutputStream fos = new FileOutputStream("cible.txt"); fos.write(data); fos.close();

82 Module UV Java Page 82 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle Les flux java.io.Data(Entrée|Sortie) Ces classes permettent de lire et d'écrire des types primitifs et des lignes sur des flux. FileInputStream fis = new FileInputStream("source.txt"); DataInputStream dis = new DataInputStream(fis); int i = dis.readInt(); double d = dis.readDouble(); String s = dis.readLine(); FileOutputStream fos = new FileOutputStream("cible.txt"); DataOutputStream dos = new DataOutputStream(fos); dos.writeInt(123); dos.writeDouble(123.456); dos.writeChars("Une chaine");

83 Module UV Java Page 83 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle java.io.PrintStream Cette classe permet de manipuler un OutputStream au travers des méthode print() et println(). PrintStream ps = new PrintStream(new FileOutputStream("cible.txt")); ps.println("Une ligne"); ps.println(123); ps.print("Une autre "); ps.print("ligne"); ps.flush(); ps.close();

84 Module UV Java Page 84 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle Ces classes permettent de lire et d'ecrire des objets, implémentant java.io.serializable, sur des flux. // Ecriture FileOutputStream fos = new FileOutputStream("tmp"); ObjectOutput oos = new ObjectOutputStream(fos); oos.writeObject("Today"); oos.writeObject(new Date()); oos.flush(); // Lecture FileInputStream fis = new FileInputStream("tmp"); ObjectInputStream ois = new ObjectInputStream(fis); String today = (String)ois.readObject(); Date date = (Date)ois.readObject(); Les flux java.io.Object(Entrée|Sortie) (2)

85 Module UV Java Page 85 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle Les flux java.io.Object(Entrée|Sortie) (2) Par défaut, tous les champs sont sérialisés (y compris private ) n Cela peut poser des problèmes de sécurité n 3 solutions : –Ne pas implémenter Serializable –Réécrire les méthodes writeObjet() et readObject() –Le mot clé transcient permet d'indiquer qu'un champs ne doit pas être serialisé.

86 Module UV Java Page 86 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle java.net.* Object URLConnection DatagramPacket InetAddress ServerSocket Socket URL DatagramSocket URLConnection URLEncoder

87 Module UV Java Page 87 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle java.net.Socket Cette classe implémente une socket TCP coté client. String serveur = " rondane.univ-littoral.fr"; int port = 80; Socket s = new Socket(serveur, port); PrintStream ps = new PrintStream(s.getOutputStream()); ps.println("GET /index.html"); DataInputStream dis = new DataInputStream(s.getInputStream()); String line; while((line = dis.readLine()) != null) System.out.println(line);

88 Module UV Java Page 88 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle java.net.ServerSocket Cette classe implémente une socket TCP coté serveur. int port_d_ecoute = 1234; ServerSocket serveur = new ServerSocket(port_d_ecoute); while(true) { Socket socket_de_travail = serveur.accept(); new ClasseQuiFaitLeTraitement(socket_travail); }

89 Module UV Java Page 89 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle java.net.DatagramSocket (1) Cette classe implémente une socket UDP // Client Byte[] data = "un message".getBytes(); InetAddress addr = InetAddress.getByName(" rondane.univ-littoral.fr"); DatagramPacket packet = new DatagramPacket(data, data.length, addr, 1234); DatagramSocket ds = new DatagramSocket(); ds.send(packet); ds.close();

90 Module UV Java Page 90 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle java.net.DatagramSocket (2) // Serveur DatagramSocket ds = new DatagramSocket(1234); while(true) { DatagramPacket packet = new DatagramPacket(new byte[1024], 1024); s.receive(packet); System.out.println("Message: " + packet.getData()); }

91 Module UV Java Page 91 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle java.net.MulticastSocket (1) Cette classe implémente une socket multicast (UDP) // Client Byte[] data = "un message".getBytes(); InetAddress addr = InetAddress.getByName(" rondane.univ-littoral.fr"); DatagramPacket packet = new DatagramPacket(data, data.length, addr, 1234); MulticastSocket s = new MulticastSocket(); s.send(packet,(byte)1); s.close();

92 Module UV Java Page 92 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle java.net.MulticastSocket (2) // Serveur MulticastSocket s = new MulticastSocket(1234); System.out.println("I listen on port " + s.getLocalPort()); s.joinGroup(InetAddress.getByName(" rondane.univ-littoral.fr")); DatagramPacket packet = new DatagramPacket(new byte[1024], 1024); s.receive(packet); System.out.println("from: " + packet.getAddress()); System.out.println("Message: " + packet.getData()); s.leaveGroup(InetAddress.getByName("rondane.univ-littoral.fr")); s.close();

93 Module UV Java Page 93 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle java.net.URL URL url = new URL("http://www-lil.univ-littoral.fr/index.html"); DataInputStream dis = new DataInputStream(url.openStream()); String line; while ((line = dis.readLine()) != null) System.out.println(line);

94 Module UV Java Page 94 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle Module Java Quelques extensions

95 Module UV Java Page 95 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle Introduction à RMI n RMI(Remote Method Invocation : Côté Serveur) –conception dune Interface distante import java.rmi.*; import java.rmi.server.*; import java.io.Serializable; public interface Task extends Remote { TaskObject getTaskObjcet() throws RemoteException; } public interface TaskObject extends Serializable { type1 task1(); type2 task2(); ……….. } import java.rmi.*; public class Server{ public static void main(String args[]){ if(System.getSecurityManager() == null){ System.setSecurityManager(new RMISecurityManager()); } try{ TaskImpl task = new TaskImpl(); Naming.rebind( Task, task); }catch(Exception e){ ………………..; } rmiregistry

96 Module UV Java Page 96 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle Introduction à RMI n RMI(Remote Method Invocation : Côté Client) –Utiliser les même interface que le serveur –le code suivant invoque lobjet distant …………….. if(System.getSecurityManager() == null) System.setSecurityManager()(new RMI … ()); String url = rmi://server_address ; try{ Task t = (Task)Naming.lookup( Task ); TaskObject to = t.getTaskObject(); }catch(Exception e){ ……….. } rmiregistry

97 Module UV Java Page 97 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle Java et XML n Java & XML –De nombreux analyseurs XML sont implémentés en Java –DOM : Utilise lObject Model faire un modèle (comme un structure arborescente) propose des méthodes de parcours de larbre –SAX : Analyseur XML orienté Evénements Faire une classe de gestion des événements Faire des méthodes à invoquer lorsquun événement se produit Le parser SAX invoque une méthode appropriée lorsquun événement se produit


Télécharger ppt "CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV Java Module Java Expert."

Présentations similaires


Annonces Google