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

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

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

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

CURSUS DE FORMATION AUX NOUVELLES TECHNOLOGIES DE DEVELOPPEMENT

UV Java

Module Java Expert

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

Module UV JavaPage 2 / 97

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Module Java

Vue d’ensemble du langage Java Le langage Java : syntaxe et sémantique Programmation multi-tâche : les threads Accéder aux bases de données Composants réutilisables : le modèle MVC Développement Client/Serveur Présentation d’un IDE : WSAD / Forté / JBuilder Les serveurs d’applications J2EE Les Enterprise JavaBeans Ré-ingénierie d’applications Java

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

Module UV JavaPage 3 / 97

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Le Langage Java

Commentaires Variables et types primitifs Concepts de base Objet Classes et Objets Instructions et Expressions Constantes nommées Exceptions Tableaux

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

Module UV JavaPage 4 / 97

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Commentaires

/* commentaire multi- ligne */

// commentaire

/** javadoc commentaire multi-ligne */

Le compilateur javadoc:Le compilateur javadoc:

mkdir docsmkdir docscd docscd docsjavadoc ..\*.javajavadoc ..\*.javacd ..cd ..

Bonne pratique de mettre Bonne pratique de mettre les fichiers *.html dans un les fichiers *.html dans un

dossier séparédossier séparé(e.g. docs).(e.g. docs).

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

Module UV JavaPage 5 / 97

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Variables

Chaque variable doit avoir un typetype nomVariable

types de données primitifs– boolean soit true ou false

– char 16-bit charactère Unicode 1.1

– byte 8-bit entier( signé )

– short 16-bit entier( signé )

– int 32-bit entier( signé )

– long 64-bit entier( signé )

– float 32-bit réel ( IEEE 754-1985 )

– double 64-bit réel ( IEEE 754-1985 )

– void indique pas de type (méthodes uniquement)

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

Module UV JavaPage 6 / 97

Deruelle LaurentCopyright © 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’;

InitialisationInitialisationde la variablede la variable

InitialisationInitialisationde la variablede la variable

Déclaration Déclaration de la variablede la variable

Déclaration Déclaration de la variablede la variable

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

Module UV JavaPage 7 / 97

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Concepts de base

Classe et Objet– Classe

• un modèle, un concept, une famille d’entité du monde réel, des caractéristiques communes

• deux parties:– champs: données représentant l’état d’une (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

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

Module UV JavaPage 8 / 97

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Les méthodes

Les Méthodes et les paramètres– méthodes - opérations d’une classe– paramètres - les arguments des méthodes

Cacher l’implémentation et l’état de l’objet– l’état ne peut être modifié que par les méthodes

• interface de l’objet

Encapsulation des données– cacher les données derrière les méthodes– l’état est inaccessible aux autres objets

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

Module UV JavaPage 9 / 97

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Définition d’une Classe

public class NomdelaClasse {type nomChamps1 ; // l’état // l’état type nomChamps2 ;…NomdelaClasse() // Le constructeur de la classe// Le constructeur de la classe{ initialiser les champs de la classe ;}… // les méthodes// les méthodes

typeRetour nomOpération ( ) // pas de paramètres// pas de paramètres{ liste des instructions ;} typeRetour nomOpération ( type paramètre , ...) { liste des instructions ;}...

}

public class NomdelaClasse {type nomChamps1 ; // l’état // l’état type nomChamps2 ;…NomdelaClasse() // Le constructeur de la classe// Le constructeur de la classe{ initialiser les champs de la classe ;}… // les méthodes// les méthodes

typeRetour nomOpération ( ) // pas de paramètres// pas de paramètres{ liste des instructions ;} typeRetour nomOpération ( type paramètre , ...) { liste des instructions ;}...

}

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

Module UV JavaPage 10 / 97

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Définition d’une 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;}

}

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

Module UV JavaPage 11 / 97

Deruelle LaurentCopyright © 2002 Laurent Deruelle

“Hello, World”(1)

objets String– l’unique paramètre de la méthode main– passage de données à l’application

System.out.println– affiche un message

main– méthode spéciale en Java : point d’entrée– main peut créer des objets, évaluer des expressions, invoquer

d’autres méthodes, etc.

class HelloWorld {// pas de champs// pas de champs

public static void main (String[] args) { System.out.println(“Hello, world”); }}

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

Module UV JavaPage 12 / 97

Deruelle LaurentCopyright © 2002 Laurent Deruelle

“Hello, World”(2)

Compilation > javac HelloWorld.java > dir HelloWorld.class HelloWorld.class– compilateur Java (javac) compile le code source dans un

bytecode Java

Exécution > java HelloWorld Hello, World

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

Module UV JavaPage 13 / 97

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Les objets

Création d’objets (= 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

instanciation, instance, variable d’instance– la création d’un objet à partir d’une classe est appelée instanciation– les objets sont appelés les instances – les champs d’un objet sont des variables d’instance

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

Module UV JavaPage 14 / 97

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Les objets :Invoquer les méthodes

Pour invoquer une méthode,– posséder une référence d’objet et le nom d’une méthode, séparés

par un point (.)

Pour retourner plus d’une valeur,– créer un objet qui contient les valeurs et retourner cet objet

récepteur objet (receiver)– L’objet sur lequel la méthode est invoquée

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

Module UV JavaPage 15 / 97

Deruelle LaurentCopyright © 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 Invocation de la méthodede la méthode

Invocation Invocation de la méthodede la méthode

Passage dePassage deparamètresparamètres

Passage dePassage deparamètresparamètres

InstanciationInstanciation=>appel =>appel

constructeurconstructeur

InstanciationInstanciation=>appel =>appel

constructeurconstructeur

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

Module UV JavaPage 16 / 97

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Les Objets : la référence this

référence implicite nommée “this” – une référence à l’objet 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) ;

}

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

Module UV JavaPage 17 / 97

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Les objets

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

Les champs non-statiques (par objet)– chaque objet possède des champs distincts

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

Module UV JavaPage 18 / 97

Deruelle LaurentCopyright © 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• Modifications de la classe Point

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

Module UV JavaPage 19 / 97

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Les objets

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

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

Module UV JavaPage 20 / 97

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Le Garbage Collector

Les objets Java non référencés sont automatiquement détruits par le garbage collector

Le garbage collector travaille en arrière plan et traque les références des objets

Possibilité de l’invoquer directement après la suppression d’une référence :

System.gc() ;System.gc() ;

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

Module UV JavaPage 21 / 97

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Les Constantes Nommées

Pourquoi le programmeur utilise des constantes nommées?– une forme de documentation– plus facile à maintenir les programmes

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;

}

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

Module UV JavaPage 22 / 97

Deruelle LaurentCopyright © 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 d’un objet à d’autres objets de l’application– les modifications sont répercutées dans l’objet

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

Module UV JavaPage 23 / 97

Deruelle LaurentCopyright © 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 d’objet

String s[] = new String[20];

identique

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

Module UV JavaPage 24 / 97

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Les instructions

Ecrites uniquement à l’intérieur du corps de la méthode { x = 4; }

Possèdent une visibilité 3 types: séquence, condition, itération

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

Module UV JavaPage 25 / 97

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Les instructions - sequence

int x = 4;

int y = 5;

x += y;

String s = new String(“hello”);

//etc.

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

Module UV JavaPage 26 / 97

Deruelle LaurentCopyright © 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;

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

Module UV JavaPage 27 / 97

Deruelle LaurentCopyright © 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;}

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

Module UV JavaPage 28 / 97

Deruelle LaurentCopyright © 2002 Laurent Deruelle

while(true){ x += 2;}

Les instructions - itération

for(int ndx=0; ndx<100; ndx++){ y += 1;}

Equivalent à Equivalent à x=x+2; x=x+2;

do{ x += 2;} while(true)

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

Module UV JavaPage 29 / 97

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Les instructions - itération

one: while(true){ two: while(false){ x += 1; // break or continue point } // after two

}// after one

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

Module UV JavaPage 30 / 97

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Les Expressions

Instructions qui produisent un résultat lorsqu’elles sont évaluées. – Exemple x += 2;

Les même opérateurs qu’en C, sauf…– pas de manipulations directes des pointeurs– pas de “*”, déréferencement, ou “sizeof”

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

Module UV JavaPage 31 / 97

Deruelle LaurentCopyright © 2002 Laurent Deruelle

ExpressionsExpressions

Opérateurs disponibles:

– Unaire … +, -, ++, --– Binaire … +, -, *, /, %, &, |, ^, ~, <<, >>, >>>– Relationnel … <, >, <=, >=, ==, !=, &&, ||

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

Module UV JavaPage 32 / 97

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Les tableaux

Collection d’objets. – opérateur spécial [] pour accéder aux éléments du tableau– new et [] permettent de créer un tableau d’objets

collection ordonnée d'éléments (types de données ou objets)

Obligation d’instancier les objets à chaque position du tableau!

Book books[] = new Book[20];

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

Module UV JavaPage 33 / 97

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Les tableaux

int[] arrayofInts; // data typesorint arrayofInts[];

arrayofInts = new int[15]; //indexes 0 to 14

String[] someStrings; // tableauouString someStrings[];

someStrings = new String[2];// très importantsomeStrings[0] = new String(“hello”);someStrings[1] = “goodbye”;

int[] someInts = new int[19];

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

Module UV JavaPage 34 / 97

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Les Objets String (1)

La classe String– propose une variété de méthodes – “non thread safe”– les objets String sont inchangeables

str = “redwood”; str = “oak”; /* nouvelle valeur à la référence d’objetréférence d’objet str, pas à

son contenucontenu */

La classe StringBuffer– propose des chaînes changeables– “thread safe”

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

Module UV JavaPage 35 / 97

Deruelle LaurentCopyright © 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)

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

Module UV JavaPage 36 / 97

Deruelle LaurentCopyright © 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); }}

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

after replace = TESTing after delete = TESTi

after substring = TEST

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

Module UV JavaPage 37 / 97

Deruelle LaurentCopyright © 2002 Laurent Deruelle

if (oneStr.equals(twoStr))

foundDuplicate(oneStr, twoStr);

Les Objets String (4)

La méthode equalscompare deux objets String au niveau de leur contenu

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

Module UV JavaPage 38 / 97

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Les Charactères Unicode

Possibilité d’écrire le code Java en Unicode - un ensemble de caractères international et standard

Les caractères Unicode sont codés sur 16 bits et permettent une grande variété de symboles

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

Module UV JavaPage 39 / 97

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Module Java

Extension des classes et d’interfaces

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

Module UV JavaPage 40 / 97

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Héritage d’une Classe

Héritage Simple uniquement !!!

public class SousClass extends SuperClass{

// champs & méthodesde la Sous classe

}

Super ClasseSuper Classe

Sous ClasseSous Classe

HéritageHéritageHéritageHéritage

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

Module UV JavaPage 41 / 97

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Etendre une classe

Class Point

x()

y()

clear()

double xdouble y

set()

Class Pixel

Pixel extends Point

x()

y()

clear()

double xdouble y

set()

Color color

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

Module UV JavaPage 42 / 97

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Extension d’une Classe(1)

Sous classe– héritage de tous les champs et méthodes de la super classe– Si une nouvelle implémentation d’une 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; }

}

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

Module UV JavaPage 43 / 97

Deruelle LaurentCopyright © 2002 Laurent Deruelle

La Classe Object

Toutes les Classes qui n’héritent pas explicitement d’une autre classe, héritent de la classe Object

La classe Object est la classe générique pour tous les objets Java

La classe Object définit plusieurs méthodes

Object oref = new Pixel();oref = “Some String”

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

Module UV JavaPage 44 / 97

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Invoquer des Méthodes de la super classe

super vs this– super - référence quelque chose de la super classe– this - référence quelque chose de l’objet courant

Pour invoquer une méthode– utilise le type actuel de l’objet

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 Appel de la méthode méthode clear de clear de

PointPoint

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

Module UV JavaPage 45 / 97

Deruelle LaurentCopyright © 2002 Laurent Deruelle

L’héritage Multiple

Contrairement à C++, Java ne peut pas effectuer d’héritage multiple, mais…

Java peut implémenter des interfaces Les interfaces sont:

– listes de méthodes qui définissent un ensemble de comportements

– Toutes classes qui implémentent une interface doiventdoivent implémenter toutestoutes les méthodes de cette interface!

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

Module UV JavaPage 46 / 97

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Les Interfaces(1)

Interfaces– similaire à une classe, mais avec uniquement les déclarations des

méthodes (pas de corps)

– les détails d’implémentation de ces méthodes ne sont pas nécessaires => contrat

– La classe qui implémente l’interface est responsable de l’implémentation spécifique

Les types de super classes sont :– super classe qui sont héritées (extends)

– interfaces qui doivent être implémentées (implements)

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

Module UV JavaPage 47 / 97

Deruelle LaurentCopyright © 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ésultatsattendus => polymorphisme : table est un descendant de Lookup

interface Lookup {/** Retourne la valeur associée avec le nom, * ou null si il n’y a pas de valeurs*/ Object find(String nam);}

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

Module UV JavaPage 48 / 97

Deruelle LaurentCopyright © 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)

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

Module UV JavaPage 49 / 97

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Module Java

Les exceptions

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

Module UV JavaPage 50 / 97

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Exceptions

Un problème survient dans l’application Le contrôle du programme est transféré directement à

une section désignée de traitement du problème throw et catch

– catch - gère le problème (traitement exception)– throw - Laisse quelqu’un d’autre gérer le problème

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

Module UV JavaPage 51 / 97

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Exceptions

Exemple d’utilisation de catch :

try{try{ openFile(“myfile.txt”);openFile(“myfile.txt”);}} catch(FileNotFoundException fnfecatch(FileNotFoundException fnfe) ) {{ // gère le problème de fichier// gère le problème de fichier

System.out.println(fnfe.toString());System.out.println(fnfe.toString());}} catch(IOException ioe)catch(IOException ioe) {{ // gère les erreurs d’entrées / sorties// gère les erreurs d’entrées / sorties

System.out.println(ioe.toString());System.out.println(ioe.toString());}} finallyfinally {{ // faire quelque chose de commun à toutes les // faire quelque chose de commun à toutes les

exceptionsexceptions}}

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

Module UV JavaPage 52 / 97

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Exceptions

Exemple d’utilisation de throw :

public class myClass throws IOException, public class myClass throws IOException, InterruptedException {InterruptedException {

// champs & méthodes dans myClass// champs & méthodes dans myClass

}}

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

Module UV JavaPage 53 / 97

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Les Exceptions

Java vérifie le type d’exceptions pour gérer l’erreur et choisir le traitement approprié (catch)

Les exceptions personnalisées– forcer le programmeur à considérer ce qu’il doit faire

lorsqu’une erreur se produit dans le code– exception est un objet, avec un type, des méthodes, et des

données

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

Module UV JavaPage 54 / 97

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Les Exceptions

L’objet exception– généralement dérivé de la classe Exception, qui propose un

champs String pour décrire l’erreur– toutes les exceptions étendent la classe Throwable, qui est

la super classe de Exception

Gestion de l’Exception– séquence try-catch-finally– finally - code exécuté du chemin normal d’exécution ou du

chemin d’exception => synchronisation, nettoyage avant fermeture, etc..

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

Module UV JavaPage 55 / 97

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

}}

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

Module UV JavaPage 56 / 97

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Module Java

Notion de paquetage

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

Module UV JavaPage 57 / 97

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Les Packages(1)

Solution pour le conflits de noms– utiliser “le prefixe package” devant chaque classe

• ce n’est pas une solution complète

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 d’un package

• utilise le nom qualifié du package

• import de tous les éléments du package

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

Module UV JavaPage 58 / 97

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Les Packages(2)

Utilisation d’une partie d’un package

class Date1 { public static void main(String[] args) { java.util.Datejava.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

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

Module UV JavaPage 59 / 97

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Les Packages(3)

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

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

Module UV JavaPage 60 / 97

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Module Java

Les applets

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

Module UV JavaPage 61 / 97

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Les Applets

Applet– programme Java qui s’exé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 n’y a pas de méthode main– inclure l’Applet dans une page HTML

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

Module UV JavaPage 62 / 97

Deruelle LaurentCopyright © 2002 Laurent Deruelle

java.applet.*

Object

AppletStub

AppletContext

Component Container Panel Applet

java.awt

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

Module UV JavaPage 63 / 97

Deruelle LaurentCopyright © 2002 Laurent Deruelle

java.applet.Applet (1)

Une applet est une classe compilée héritant de java.applet.Applet Elle est diffusé par un serveur web dans une page HTML

<APPLET code='TiffViewer.class' width=50 height=50>

<PARAM name='imagesource' value='mon_image.tiff'>

</APPLET>

Elle est téléchargée puis exécutée par le browser. 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, ...

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

Module UV JavaPage 64 / 97

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

}

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

Module UV JavaPage 65 / 97

Deruelle LaurentCopyright © 2002 Laurent Deruelle

java.applet.Applet (3)

Diffusion de l'applet<HTML>

<BODY>

<OBJECT code="MyApplet"

codebase="http://www-lil.univ-littoral.fr/

~deruelle/applets/"

width=300 height=200>

<PARAM name="message" value="Hello World">

</OBJECT>

</BODY>

</HTML>

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

Module UV JavaPage 66 / 97

Deruelle LaurentCopyright © 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");

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

Module UV JavaPage 67 / 97

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Les Applets

Exemple d’Applet

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

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

Module UV JavaPage 68 / 97

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Module Java

Vue d’ensemble des paquetages Java

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

Module UV JavaPage 69 / 97

Deruelle LaurentCopyright © 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

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

Module UV JavaPage 70 / 97

Deruelle LaurentCopyright © 2002 Laurent Deruelle

java.lang.String (1)

La classe String gère des chaînes de caractères (char). Une String n’est 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.

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

Module UV JavaPage 71 / 97

Deruelle LaurentCopyright © 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") {...} // Erreurif (s.equals("java") {...} // Ok

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

Module UV JavaPage 72 / 97

Deruelle LaurentCopyright © 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 StringBufferStringBuffer 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"

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

Module UV JavaPage 73 / 97

Deruelle LaurentCopyright © 2002 Laurent Deruelle

java.lang.Class

La classe Class représente une classe java. Elle n'est pas instanciable 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);

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

Module UV JavaPage 74 / 97

Deruelle LaurentCopyright © 2002 Laurent Deruelle

java.util.*

Object

BitSet

Date

Observable

Random

StringTokenizer

Vector

Dictionary Hashtable Properties

Stack

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

Module UV JavaPage 75 / 97

Deruelle LaurentCopyright © 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;

...}

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

Module UV JavaPage 76 / 97

Deruelle LaurentCopyright © 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("&eacute;", "\'e");p.put("&egrave", "\`e");p.put("&ecirc", "\^e");

String s = p.getProperty("&eacute;");

for(Enumeration e = p.keys(); e.hasMoreElements();){String key = (String)e.nextElement;

...}

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

Module UV JavaPage 77 / 97

Deruelle LaurentCopyright © 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

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

Module UV JavaPage 78 / 97

Deruelle LaurentCopyright © 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()); // --> avionSystem.out.println(st.nextToken()); // --> bateauSystem.out.println(st.nextToken()); // --> train

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

Module UV JavaPage 79 / 97

Deruelle LaurentCopyright © 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

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

Module UV JavaPage 80 / 97

Deruelle LaurentCopyright © 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()); // --> trueSystem.out.println(f.canRead()); // --> trueSystem.out.println(f.canWrite()); // --> falseSystem.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]);

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

Module UV JavaPage 81 / 97

Deruelle LaurentCopyright © 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();

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

Module UV JavaPage 82 / 97

Deruelle LaurentCopyright © 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");

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

Module UV JavaPage 83 / 97

Deruelle LaurentCopyright © 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();

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

Module UV JavaPage 84 / 97

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Ces classes permettent de lire et d'ecrire des objets, implémentant java.io.serializable, sur des flux.

// EcritureFileOutputStream fos = new FileOutputStream("tmp");ObjectOutput oos = new ObjectOutputStream(fos);oos.writeObject("Today");oos.writeObject(new Date());oos.flush();

// LectureFileInputStream 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)

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

Module UV JavaPage 85 / 97

Deruelle LaurentCopyright © 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) Cela peut poser des problèmes de sécurité 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é.

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

Module UV JavaPage 86 / 97

Deruelle LaurentCopyright © 2002 Laurent Deruelle

java.net.*

Object

URLConnection

DatagramPacket

InetAddress

ServerSocket

Socket

URL

DatagramSocket

URLConnection

URLEncoder

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

Module UV JavaPage 87 / 97

Deruelle LaurentCopyright © 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);

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

Module UV JavaPage 88 / 97

Deruelle LaurentCopyright © 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);

}

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

Module UV JavaPage 89 / 97

Deruelle LaurentCopyright © 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();

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

Module UV JavaPage 90 / 97

Deruelle LaurentCopyright © 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());

}

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

Module UV JavaPage 91 / 97

Deruelle LaurentCopyright © 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();

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

Module UV JavaPage 92 / 97

Deruelle LaurentCopyright © 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();

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

Module UV JavaPage 93 / 97

Deruelle LaurentCopyright © 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);

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

Module UV JavaPage 94 / 97

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Module Java

Quelques extensions

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

Module UV JavaPage 95 / 97

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Introduction à RMI

RMI(Remote Method Invocation : Côté Serveur)– conception d’une 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){ ………………..; }}

rmiregistryrmiregistry

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

Module UV JavaPage 96 / 97

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Introduction à RMI

RMI(Remote Method Invocation : Côté Client)– Utiliser les même interface que le serveur– le code suivant invoque l’objet 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){ ………..}

rmiregistryrmiregistry

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

Module UV JavaPage 97 / 97

Deruelle LaurentCopyright © 2002 Laurent Deruelle

Java et XML

Java & XML– De nombreux analyseurs XML sont implémentés en Java– DOM : Utilise l’Object Model

• faire un modèle (comme un structure arborescente)

• propose des méthodes de parcours de l’arbre

– SAX : Analyseur XML orienté Evénements• Faire une classe de gestion des événements

• Faire des méthodes à invoquer lorsqu’un événement se produit

• Le parser SAX invoque une méthode appropriée lorsqu’un événement se produit