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

Slides:



Advertisements
Présentations similaires
Mais vous comprenez qu’il s’agit d’une « tromperie ».
Advertisements

Reporting de la Cellule Nationale Droit dOption Situation au 31 décembre 2011.
Additions soustractions
1 Plus loin dans lutilisation de Windows Vista ©Yves Roger Cornil - 2 août
SAX Simple API for XML. Généralités API non standard développé par les membres du forum XML-DEV Parseur XML – Orienté événement – Parsing dynamique SAX.
SI3 MAM3 Hydro Nathan Cohen Igor Litovsky Christophe Papazian
Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen
La classe String Attention ce n’est pas un type de base. Il s'agit d'une classe défini dans l’API Java (Dans le package java.lang) String s="aaa"; // s.
Les numéros 70 –
(Classes prédéfinies – API Java)
Voisin-Polian : Introduction à Java 1 Introduction à Java - les flots - Frédéric VOISIN – Nicole POLIAN FIIFO - « Remise à Niveau »
Plan du cours La sérialisation: – comment stocker et restaurer les Objets? Les interfaces graphiques et la programmation évènementielle. –Comment concevoir.
INTRODUCTION A JAVA Chapitre 1 : Introduction
Algorithme et structure de données
LICENCE MIAGE Introduction Programmation Orientée Objet JAVA philippe
LES TRIANGLES 1. Définitions 2. Constructions 3. Propriétés.

CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV Threads Module Java Expert.
CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT UV EJB Entité Module Java Expert.
ESIEE Paris © Denis BUREAU I N Initiation à la programmation avec le langage Java.
Les entrées /sorties en Java François Bonneville
Révision (p. 130, texte) Nombres (1-100).
La législation formation, les aides des pouvoirs publics
Connexion base de données
Chapitre IV Object, interfaces, classes imbriquées.
BlueJ_XI 1 Java, les objets : tout de suite ! Gestion des erreurs : les exceptions Notes de cours associées au chapitre 11 tutorial BlueJ
Les méthodes en java Une méthode est un regroupement d’instructions ayant pour but de faire un traitement bien précis. Une méthode pour être utilisée.
Faculté I&C, Claude Petitpierre, André Maurer 1 Java.
Présentation générale
Langage Oriente Objet Cours 4.
La programmation objet Illustration de la POO en Pascal
Les nombres.
1 Cours JAVA / Y.Laborde Java : Les FLUX de données Les flux de données introduction les flux binaires les flux binaires de sortie (FBS) les flux binaires.
Master 1 SIGLIS java Lecteur Stéphane Tallard Chapitre 4 – Structures de contrôle.
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
77 Utilisation des classes (suite). 7-2 Objectifs A la fin de ce cours, vous serez capables de : Définir des méthodes surchargées dans une classe Fournir.
Introduction à la programmation (Java)
Programmation par Objets et Java
Langage Oriente Objet Cours 2.
Les chiffres & les nombres
1 Part3 3 2 Exception Générée par un problème de programme Objet définissant une erreur Peut être saisie et traitée par un programme Une erreur: situation.
66 Utilisation des classes et des objets. 6-2 Objectifs A la fin de ce cours, vous serez capables de : Créer de nouvelles classes à laide de Eclipse Utiliser.
Faculté I&C, Claude Petitpierre, André Maurer 1 Concepts dhéritage Héritage dimplémentation hasA Héritage de spécialisation isA.
Multi-Thread Jian-Yun Nie
IFT 6800 Atelier en Technologies d’information
1 IFT 6800 Atelier en Technologies dinformation Cours 7 : Le langage de programmation Java chapitre 5: Les API Java.
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 3 : Classes et Objects.
Année universitaire Réalisé par: Dr. Aymen Ayari Cours Réseaux étendus LATRI 3 1.
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
Chapitre 9 Les sous-programmes.
Formation Développeur Java Applet et interfaces graphiques avec AWT
Cours 11 Threads. Chapitre X threads threadPOO-L3 H. Fauconnier3 Threads threads: plusieurs activités qui coexistent et partagent des données exemples:
COURS DE PROGRAMMATION ORIENTEE OBJET :
Introduction au Langage C
MAGIE Réalisé par Mons. RITTER J-P Le 24 octobre 2004.
Aire d’une figure par encadrement
Les fondements constitutionnels
MAGIE Réalisé par Mons. RITTER J-P Le 24 octobre 2004.
1212 Entrée et sortie de fichiers Objectifs À la fin de ce cours, vous serez capables de : • Lire à partir de la console • Écrire sur la console.
Certains droits réservés pour plus d’infos, cliquer sur l’icône.
Les API Java. java.lang.* Object Boolean Character Class Math Number Process Runtime String StringBuffer System Thread ThreadGroup Throwable Double Float.
1 Fichers Binaires, Accès Direct et Objets. 2 Données binaires. Il s'agit ici de lire et écrire des données binaires par opposition à du texte. Pour ce.
Annexe Résultats provinciaux comparés à la moyenne canadienne
La formation des maîtres et la manifestation de la compétence professionnelle à intégrer les technologies de l'information et des communications (TIC)
11/04/ L'héritage Cours 7 Cours 7.
Cours Les flux ou streams. Cours 162 Flux : objet possédant des méthodes capables de lire ou écrire des flots d’octets sur tout support (mémoire,
Les sockets.
Les classes et les objets Les données finales class A { … private final int n = 20 ; // la valeur de n est définie dans sa déclaration … } class A { public.
Introduction à la programmation objet avec java
Héritage Conception par Objet et programmation Java
Transcription de la présentation:

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

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

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

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).

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 ) –double64-bit réel ( IEEE ) –void indique pas de type (méthodes uniquement)

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

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

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

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 ; }... }

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; }

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); }

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

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

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

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

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) ; }

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

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

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() ); }

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() ;

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 = ; }

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

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

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

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.

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;

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; }

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)

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

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

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

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];

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];

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

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)

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

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

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

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

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

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

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; } }

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

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

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!

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)

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); }

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)

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

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

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}

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}

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

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..

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(); }

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

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

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

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 { // ………… }

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

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

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

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,...

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() {...} }

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=" ~deruelle/applets/" width=300 height=200>

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(" AppletContext ctxt = this.getAppletContext(); ctxt.showDocument(new URL(" www-lil.univ-littoral.fr /page.html"), "frame");

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); }

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

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

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.

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(" char[] data = {'J', 'a', 'v', 'a'}; String name = new String(data); String s = String.valueOf(2 * ); // s = " " String s = String.valueOf(new Date()); // s = "Sat Jan 18 12:10:36 GMT " int i = Integer.valueOf("123"); // i = 123 String s = "java"; if (s == "java") {...} // Erreur if (s.equals("java") {...} // Ok

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"

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 Integer i = classname.getMethod("getMinutes", null).invoke(d, null);

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

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;... }

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;... }

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

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

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

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()); // --> 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]);

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();

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( ); dos.writeChars("Une chaine");

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();

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)

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é.

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

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);

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); }

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();

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()); }

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();

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();

Module UV Java Page 93 / 97 Deruelle Laurent Copyright © 2002 Laurent Deruelle java.net.URL URL url = new URL(" DataInputStream dis = new DataInputStream(url.openStream()); String line; while ((line = dis.readLine()) != null) System.out.println(line);

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

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

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

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