La lecture en ligne est gratuite
Télécharger

Publications similaires

              Master Informatique Avancée et Applications 2005-2006 
Transp cours Java 5.doc - 12/12/2005 20:38 © 2005 H. Garreta
Plan · « nouveautés de Java 1.4 » - expressions régulières - assert · types énumérés ( enum ) · emballage et déballage automatiques · outils pour faciliter la programmation - importation de membres statiques ( import static ) - boucle for améliorée - méthodes avec un nombre variable darguments - entrées-sorties simplifiées : printf et Scanner  · annotations ( méta-données ) · généricité (classes paramétrées)    
Transp cours Java 5.doc - 12/12/2005 20:38 © 2005 H. Garreta
page 1
page 3
Plan · de Java 1.4 - expressions régulières - assert · types énumérés ( enum ) · emballage et déballage automatiques · outils pour faciliter la programmation  -importation de membres statiques ( import static ) - boucle for améliorée - méthodes avec un nombre variable darguments - entrées-sorties simplifiées : printf et Scanner  · annotations ( méta-données ) · généricité (classes paramétrées)
Transp cours Java 5.doc - 12/12/2005 20:38 © 2005 H. Garreta
page 2
Expressions régulières (Java 1.4) · à peu près celles de Perl (ex.  "[+-]?[0-9]+(\\.[0-9]*)?" ) · deux classes : Pattern  expression régulière « compilée » Matcher  application d’un pattern à un texte ( CharSequence ) · méthodes d’un matcher : find() recherche d’une sous-chaîne reconnue  group( [ i ] ) la sous-chaîne reconnue  start( [ i ] ) début et fin de la sous-chaîne recon nue end( [ i ] )
Transp cours Java 5.doc - 12/12/2005 20:38 © 2005 H. Garreta
page 4
Expressions régulières, exemple import java.io.*; import java.util.regex.*;             public class TrouverURL {  public static void main(String[] args) throws IOException {  File fichier = new File(args[0]);  char[] tampon = new char[(int) fichier.length()];  Reader lecteur = new FileReader(fichier);  lecteur.read(tampon);  lecteur.close();  String expReg = "<a[ \\t\\n]+href=\"[^\"]+\"";  Pattern motif = Pattern.compile(expReg, Pattern.CASE INSENSITIVE); _  String texte = new String(tampon);  Matcher recon = motif.matcher(texte);  int pos = 0;  while (recon.find(pos)) {  String s = texte.substring(recon.start(), recon.end());  System.out.println(s);  pos = recon.end();  }  } } Transp cours Java 5.doc - 12/12/2005 20:38 © 2005 H. Garreta
page 5
Expressions régulières, exemple import java.io.*; import java.util.regex.*;   <a href="http://www.dil.univ-mrs.fr/"   public class TrouverURL {  public static void main(String[] args) throws IOException {  File fichier = new File(args[0]);  char[] tampon = new char[(int) fichier.length()];  Reader lecteur = new FileReader(fichier);  lecteur.read(tampon);  lecteur.close();  String expReg = "<a[ \\t\\n]+href=\"[^\"]+\"";   Pattern motif = Pattern.compile(expReg, Pattern.CASE INSENSITIVE); _  String texte = new String(tampon);  Matcher recon = motif.matcher(texte);  int pos = 0;  while (recon.find(pos)) {  String s = texte.substring(recon.start(), recon.end());  System.out.println(s);  pos = recon.end();  }  } } Transp cours Java 5.doc - 12/12/2005 20:38 © 2005 H. Garreta
page 7
Expressions régulières, exemple import java.io.*; import java.util.regex.*;  public class TrouverURL {  public static void main(String[] args) throws IOException {  File fichier = new File(args[0]);  char[] tampon = new char[(int) fichier.length()];  Reader lecteur = new FileReader(fichier);  lecteur.read(tampon);  lecteur.close();  String expReg = "<a[ \\t\\n]+href=\"[^\"]+\""; _  Pattern motif = Pattern.compile(expReg, Pattern.CASE INSENSITIVE);  String texte = new String(tampon);  Matcher recon = motif.matcher(texte);  int pos = 0;  while (recon.find(pos)) {  String s = texte.substring(recon.start(), recon.end());  System.out.println(s);  pos = recon.end();  }  } } Transp cours Java 5.doc - 12/12/2005 20:38 © 2005 H. Garreta
Expressions régulières, exemple import java.io.*; import java.util.regex.*;  public class TrouverURL {  public static void main(String[] args) throws IOException {  File fichier = new File(args[0]);  char[] tampon = new char[(int) fichier.length()];  Reader lecteur = new FileReader(fichier);  lecteur.read(tampon);  lecteur.close();  String expReg = "<a[ \\t\\n]+href=\"[^\"]+\""; _  Pattern motif = Pattern.compile(expReg, Pattern.CASE INSENSITIVE);   String texte = new String(tampon);  Matcher recon = motif.matcher(texte);  int pos = 0;  while (recon.find(pos)) {  String s = texte.substring(recon.start(), recon.end());  System.out.println(s);  pos = recon.end();  }  } } Transp cours Java 5.doc - 12/12/2005 20:38 © 2005 H. Garreta
page 6
page 8
· si une condition n’est pas satisfaite, lancer une exception assert condition  [ : expression-à-afficher  ]  · exemples : assert x < XMAX; assert x < XMAX : "x: " + x + " < " + XMAX; · service rendu :   -c’est un mécanisme simple et concis - globalement débrayable 
page 12
page 9
assert 
Transp cours Java 5.doc - 12/12/2005 20:38 © 2005 H. Garreta
Expressions régulières, exemple import java.io.*; import java.util.regex. ; *  public class TrouverURL {  public static void main(String[] args) throws IOException {  File fichier = new File(args[0]);  char[] tampon = new char[(int) fichier.length()];  Reader lecteur = new FileReader(fichier);  lecteur.read(tampon);  lecteur.close();  String expReg = "<a[ \\t\\n]+href=\" ( [^\"]+ ) \""; _  Pattern motif = Pattern.compile(expReg, Pattern.CASE INSENSITIVE);  String texte = new String(tampon);  Matcher recon = motif.matcher(texte);  int pos = 0;                    w h i l eS t(rriencgo ns. f=i nrde(cpoons.)g)r o{u p( 1 );    System.out.println(s); h  ttp://www.mozilla-europe.org/fr/  pos = recon.end();   } http://mediterranee.univ-aix.fr/  } http://www.luminy.univ-mrs.fr/ } http://www.dil.univ-mrs.fr/  Transp cours Java 5.doc - 12/12/2005 20:38 © 2005 H. Garreta page 11   
Expressions régulières, exemple import java.io.*; import java.util.regex.*;  public class TrouverURL {  public static void main(String[] args) throws IOException {  File fichier = new File(args[0]);  char[] tampon = new char[(int) fichier.length()];  Reader lecteur = new FileReader(fichier);  lecteur.read(tampon);  lecteur.close();  String expReg = "<a[ \\t\\n]+href=\"[^\"]+\"";  Pattern motif = Pattern.compile(expReg, Pattern.CASE INSENSITIVE); _  String texte = new String(tampon);  Matcher recon = motif.matcher(texte);  int pos = 0;  while (recon.find(pos)) {  String s = texte.substrin n.start(), recon.end());  System.out.println(s);  pos = recon.end();  } recon.group();   } } Transp cours Java 5.doc - 12/12/2005 20:38 © 2005 H. Garreta
, esèrligurés onj tropmi elpmexeport; imio.*ava.gexelir..atuj vac liascl; .*ub pLRUr  { rT sevuoc static   publiniS(rtniv io damransTurs p coavaJd.5 - co/21 /2125 00:320© 8 0250H  .aGrrte apage 10 Expressiwhil    econe (r(dopf.ni {  )s )  );teex i      = sop tn     ;0  Matcher recon =m tofim.tahcret( =teew ntr Sg(inpmat;)no         ;  VI)ESNTINIES texring  St    eRpxe(elipmoc.nrE_AS.Crnteat Pg,  P taet;"       = Pattern motift\\ ]n\\ = g[a<"\"[^\"]+re+h\"f=irtS    eRpxe gnselo.cur    ; ()    ;)  ceet  l .reateurmpond(ta;)re        cel leFiadRe(ferhiic reltcue r =en w];         Reade()thngler.iechfi )tni([rahc wen on =tampr[]  cha        ]0;)gr[sFiw (aler iene=  elihcif    F   tion {   IOExcep )htorsw[g ]rasgerh a< "/rf.srm-diw.ww//p:tt"hf=/r "srf.vim-.lnu eeu.in-via.xrf"/ttp://mediterranwww/mul..ynivinua  <efhrht=":/tptt:p=fh".wom//ww hre <aa< "/rf/h"=ferh eua-llzirg.opero recon.e   pos =        nls(;)      } }      }  )(dn   ;roupon.g rec s =irgn  tS        ntri.put.oemstSy             ;)(
assert , exemple :  public class TestAssert {  ...  public static void main(String[] args) {  ...         algorithme subtil qui détermine X  ...  assert x < MAX : "x: " + x + " < " + MAX;  ...  }  ... } · exécution > java -ea TestAssert Exception in thread "main" java.lang.AssertionError: x: 125 < 100  at TestAssert.main(TestAssert.java:8) >
Transp cours Java 5.doc - 12/12/2005 20:38 © 2005 H. Garreta
page 13
assert , attention · un test requis par la logique du programme ne doit pas être implémenté par un appel de assert  - validation darguments des méthodes publiques, -vérification de l’existence de ressources externes, -etc. · ne pas oublier que assert est débrayable ·  assert est destiné à chercher les fautes de programmation, non les erreurs à l’exécution (le message de assert ne s’adresse pas à l’utilisateur final)
Transp cours Java 5.doc - 12/12/2005 20:38 © 2005 H. Garreta page 15
assert , activation des assertions · à l’exécution, les assertions sont désactivées par défaut · activation lors du lancement ( ea ou enableassertions ) :   activation de assert   -ea  partout   -ea: unPaquetage ...  dans les classes du paquetage indiqué  et ses sous-paquetages   -ea:...  paquetage sans nom et sous-paquetages   -ea: UneClasse  la classe indiquée   -esa  les classes du système  · exemple > java –esa –ea:mesOutilsCraignos... MonAppli
Transp cours Java 5.doc - 12/12/2005 20:38 © 2005 H. Garreta
Enumérations · besoin : ensembles finis de données conventionnelles exemple : { nord , sud , est , ouest } -données symboliques , naturellement nommées  -données atomiques  -constituant des ensembles  finis   -constituant des ensembles disjoints  · mauvaise réponse usuelle     static final int NORD = 0; static final int SUD = 1; static final int EST = 2; static final int OUEST = 3;              Transp cours Java 5.doc - 12/12/2005 20:38 © 2005 H. Garreta
page 14
page 16
Enumérations 
· besoin : ensembles finis de données conventionnelles exemple : { nord , sud , est , ouest } -données symboliques , naturellement nommées  -données atomiques  -constituant des ensembles  finis  -constituant des ensembles disjoints  · mauvaise réponse usuelle  pire : utiliser des chaînes   "nord", "sud", "est , ouest" " " static final int NORD = 0; static final intt  SEUSDT  ==  12;;     ssttaattiicc  ffiinnaall  iinnt OUEST = 3;    !               Transp cours Java 5.doc - 12/12/2005 20:38 © 2005 H. Garreta
Type enum 
page 17
· syntaxe  qualifieurs enum identType {  identValeur , … identValeur }  exemple ·  public enum PointCard { NORD, SUD, EST, OUEST } · emploi ... PointCard direction = PointCard.EST; ...  if (direction == PointCard.SUD)   ...
Transp cours Java 5.doc - 12/12/2005 20:38 © 2005 H. Garreta
page 19
Type enum 
syntaxe ·  qualifieurs enum identType {  identValeur , … identValeur }  · exemple   public enum PointCard { NORD, SUD, EST, OUEST } 
Transp cours Java 5.doc - 12/12/2005 20:38
Type enum 
© 2005 H. Garreta
page 18
· syntaxe   qualifieurs enum identType {  identValeur , … identValeur }  · exemple  public enum PointCard { NORD, SUD, EST, OUEST } · fondamentalement la même chose que public class PointCard {  public static final PointCard NORD = new PointCard();  public static final PointCard SUD = new PointCard();  public static final PointCard EST = new PointCard();  public static final PointCard OUEST = new PointCard();  }      "      Transp cours Java 5.doc - 12/12/2005 20:38 © 2005 H. Garreta page 20
Type enum - tout type enum est sous-classe de java.lang.Enum   - méthodes de conversion enum  ψ  String et enum  ψ  int  - EnumMap :  table associative à clés dans un type enum  - EnumSet : ensemble à éléments dans un type enum    PointCard direction; EnumSet possible =  EnumSet.of(PointCard.NORD, PointCard.EST, PointCard.SUD); ... possible.add(direction); ... if (possible.contains(direction)) {  ... }  
Transp cours Java 5.doc - 12/12/2005 20:38 © 2005 H. Garreta
page 21
Emballage et déballage de données primitives · les données sont rangées dans deux mondes séparés :  les types primitifs les objets  efficacité richesse des concepts OO   (opérations câblées, etc.) bibliothèques d’objets  (Collections, etc.)  · passage d’un monde à l’autre : classes enveloppes : Byte , Short , Integer , Float , etc. « emballage » et « déballage » des types primitifs ... int unInt;  ... Integer unInteger = new Integer(unInt); ... unInt = unInteger.intValue(); ...  Transp cours Java 5.doc - 12/12/2005 20:38 © 2005 H. Garreta page 23
Type enum - tout type enum est sous-classe de java.lang.Enum   - méthodes de conversion enum  ψ  String et enum  ψ  int  - EnumMap :  table associative à clés dans un type enum  - EnumSet : ensemble à éléments dans un type enum  - une expression de type enum peut piloter un switch :  PointCard direction; ... switch(direction) {  case NORD:    ...  case SUD:  ...  default:  ... } ... Transp cours Java 5.doc - 12/12/2005 20:38 © 2005 H. Garreta
Emballage et déballage automatiques · en Java 5 ces opérations deviennent automatiques : là où -un objet est attendu on peut mettre un type primitif -un type primitif est attendu on peut mettre un objet  le compilateur insère l’emballage/déballage requis · exemple :  List liste = new ArrayList();     for (int i = 0; i < 100; i++)  liste.add( Math.random() );     Collections.sort(liste);  for (int i = 0; i < 10; i++)  System.out.println(Math.exp( (Double)liste.get(i) )); }  Transp cours Java 5.doc - 12/12/2005 20:38 © 2005 H. Garreta
page 22
page 24