Upload
alphormcom
View
2.065
Download
49
Embed Size (px)
Citation preview
Prsentation de la formation
Java avanc
Java, avanc (examen 1Z0-804) alphorm.com
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Java avanc(examen 1Z0-804)
Plan Prsentation du formateur
Les autres formations sur Alphorm
Quest-ce que Java ?
Les publics concerns
Le plan de la formation
Java, avanc (examen 1Z0-804) alphorm.com
Le plan de la formation
Prsentation des outils
Prsentation du formateur Fabien Brissonneau
Email : [email protected]
Consultant Concepteur et Formateur
Missions darchitecture, de conception , de ralisation logicielles
Fondateur de eiXa6
Actuellement en mission sur un projet de gestion
Java, avanc (examen 1Z0-804) alphorm.com
Actuellement en mission sur un projet de gestion
Mes rfrences :
Mon profil Viadeo : http://fr.viadeo.com/fr/profile/fabien.brissonneau
Mon profil LinkedIn : http://fr.linkedin.com/pub/fabien-brissonneau/65/902/92a/
Mes formations sur alphorm
Java, avanc (examen 1Z0-804) alphorm.com
Les autres formations dv sur Alphorm
Java, avanc (examen 1Z0-804) alphorm.com
Quest-ce que Java ? Langage de programmation gnraliste
Cr en 1995 par Sun, hritant du C++
Gr en communaut
Langage de programmation objet
Java, avanc (examen 1Z0-804) alphorm.com
Avec un trs grande bibliothque de classes
Les publics concerns Dveloppeurs dcouvrant Java aprs avoir suivi les fondamentaux
Dveloppeurs se dirigeant ensuite vers Java serveur
Toute personne intresse par les technologies Java
Java, avanc (examen 1Z0-804) alphorm.com
Le plan de la formation Prsentation de la plateforme
Rappels de syntaxe
Encapsulation
Conception de classes
Utilisation de lhritage
Les exceptions
Les entres-sorties
Les entres-sorties NIO
Le multithread
Les traitements simultans
Java, avanc (examen 1Z0-804) alphorm.com
Utilisation de lhritage
La gnricit
Le traitement de textes
Les traitements simultans
La base de donnes
La localisation
Certification OCP suite lexamen 1Z0-804
Java, avanc (examen 1Z0-804) alphorm.com
Prsentation des outils Le site de Oracle sera utilis pour tlcharger
Les outils en ligne de commande
La bibliothque de base
Un IDE, Netbeans
Nous utiliserons aussi Eclipse
Java, avanc (examen 1Z0-804) alphorm.com
Nous utiliserons aussi Eclipse
La prsentation sera faite sous Windows 7
Are you ready ?
Java, avanc (examen 1Z0-804) alphorm.com
Prsentation de la plateforme Java
Java et les plateformes
Java, avanc (examen 1Z0-804) alphorm.com
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Java et les plateformes
Plan Les versions des plateformes
Les ditions
Java, avanc (examen 1Z0-804) alphorm.com
Les versions des plateformes Chaque plateforme contient des outils qui chacun correspond une JSR
(Java Specification Request)
La JVM (Java Virtual Machine) excute le bytecode grce au compilateur JIT (Just In Time)
Le JDK (Java Development Kit) contient le compilateur entre autre
Java, avanc (examen 1Z0-804) alphorm.com
Le JRE (Java Runtime Environment) est lenvironnement dexcution
Les numros de versions sont ceux des JDK
Chaque version correspond une JSR
Les ditions La JSE (Java Standard Edition) pour ordinateurs de bureau
La JEE (Java Entreprise Edition) pour serveurs
La JME (Java Micro Edition) pour environnements mmoires rduits
La Java FX, un environnement client riche
Java, avanc (examen 1Z0-804) alphorm.com
JavaCard est un systme dexploitation pour carte puce
Ce quon a couvert Les versions des plateformes
Les ditions
Java, avanc (examen 1Z0-804) alphorm.com
Prsentation de la plateforme Java
OpenJDK et les licences
Java, avanc (examen 1Z0-804) alphorm.com
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
OpenJDK et les licences
Plan JSR, JDK, OpenJDK
Les licences
Java, avanc (examen 1Z0-804) alphorm.com
JSR, JDK, OpenJDK La JSR est la spcification, entre autre dune version du framework
JDK 7 est par exemple le nom donn par Oracle
OpenJDK Project est une autre implmentation
Java, avanc (examen 1Z0-804) alphorm.com
Les licences La licence GPL pour le code Java, mais pas totalement lorigne
Depuis la version 7, OpenJDK devient limplmentation de rfrence pour la JSR
Pour quune implmentation soit certifie, elle doit passe le test de compatibilit et compare OpenJDK
Java, avanc (examen 1Z0-804) alphorm.com
Le code source OpenJDK est diponible sour 2 licences : licence GNU, et licence Suns Java Research License (travaux acadmiques)
Le JDK Oracle et disponible sous BPL (code compil uniquement)
Pour tre intgr dans des distributions GNU, il faut OpenJDK complt ventuellement par IceTea (projet initial de RedHat)
Ce quon a couvert JSR, JDK, OpenJDK
Les licences
Java, avanc (examen 1Z0-804) alphorm.com
Prsentation de la plateforme Java
Java dans les
Java, avanc (examen 1Z0-804) alphorm.com
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Java dans les environnements serveurs
Plan Le contenu de Java EE
Les implmentations
Java, avanc (examen 1Z0-804) alphorm.com
Le contenu de Java EE Une plate forme pour excuter
Une suite de tests
Une ralisation de rfrence
Les bonnes pratiques
Java, avanc (examen 1Z0-804) alphorm.com
Objectifs : faciliter la construction dapplications serveur, sur la mme base que JSE, mais avec des complments fournis par le conteneur
Les implmentations Oracle Glassfish est limplmentation de rfrence
Open Source Edition ou Enterprise Server
JBoss, JEUS, Apache Geronimo, IBM WebSphere, Caucho Resin
Les composants peuvent tre : Servlet, JSP, JSTL, JSF, EJB, JNDI, JDBC, JMS, JPA, JAXB,
Java, avanc (examen 1Z0-804) alphorm.com
JMS, JPA, JAXB,
Ce quon a couvert Le contenu de Java EE
Les implmentations
Java, avanc (examen 1Z0-804) alphorm.com
Prsentation de la plateforme Java
Processus JCP
Java, avanc (examen 1Z0-804) alphorm.com
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Processus JCP
Plan Dfinition
Les participants
Les JSR
Java, avanc (examen 1Z0-804) alphorm.com
Dfinition Le Java Community Process est le mcanisme pour faire voluer les
spcifications techniques de Java
Le processus consiste faire voluer une Java Specification Request travers plusieurs tapes (JCP 2.9 version actuelle du processus)
Java, avanc (examen 1Z0-804) alphorm.com
Initiation -> Premire revue -> Brouillon public -> Maintenance
Les participants On peut participer librement au processus
Les Java User Group sont souvent impliqus
Public : chacun peut donner des commentaires
Member : faire des propositions
Java, avanc (examen 1Z0-804) alphorm.com
Expert : donner la forme de la spcification
Specification Lead : choix des experts des groupes
Executive Committee : lu
Oracle a un sige permanent
Les JSR Java SE : 62 JSR diffrentes
Java SE 7 : JSR 336
Java SE 8 : JSR 337
Java EE : 57 JSR diffrentes
Java EE Security API : JSR 375
Java, avanc (examen 1Z0-804) alphorm.com
Java EE Security API : JSR 375
Java ME : 85 JSR diffrentes
Ce quon a couvert Dfinition
Les participants
Les JSR
Java, avanc (examen 1Z0-804) alphorm.com
Rappels sur la syntaxe et les classes Java
Classes simples
Java, avanc (examen 1Z0-804) alphorm.com
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Classes simples
Plan Dclarer une classe, syntaxe, fichier et outil
Dclarer les champs de donnes, visibilit, modificateurs
Dclarer les mthodes, visibilits, modificateurs
Modificateurs de la dclaration de la classe
Java, avanc (examen 1Z0-804) alphorm.com
Dclarer une classe Mot-cl class
Dans un fichier qui porte le nom de la classe
LIDE cre le fichier et la classe
Il est possible davoir plusieurs classes dans un fichier
Java, avanc (examen 1Z0-804) alphorm.com
Il est possible de dclarer une classe dans une classe
Dclarer les champs de donne Dclaration sans aucun ordre des membres de la classe
Dclarer le type puis le nom de la variable
Il est possible de placer une valeur par dfaut
Il est possible de modifier la visibilit : public, protected, private
Java, avanc (examen 1Z0-804) alphorm.com
Il est possible de rendre constant ce champ : final
Mais empche une affectation APRES linitialisation
Dclarer les mthodes Dclaration sans ordre
Dclarer le type de la mthode (de retour), void si aucun
Le nom de mthode
Les paramtres, chacun tant typs
Java, avanc (examen 1Z0-804) alphorm.com
Les mthodes supportent la surcharge
La visibilit peut-tre modifie
Le mot-cl final empche une ventuelle redfinition
Modificateur dans la dclaration de la classe Une classe peut tre public
Impact sur le nom du fichier
Impact sur les accs de lextrieur de son package
Le mot-cl final signifie que la classe ne peut pas tre drive
Java, avanc (examen 1Z0-804) alphorm.com
Ce quon a couvert Dclarer une classe, syntaxe, fichier et outil
Dclarer les champs de donnes, visibilit, modificateurs
Dclarer les mthodes, visibilits, modificateurs
Modificateurs de la dclaration de la classe
Java, avanc (examen 1Z0-804) alphorm.com
Rappels sur la syntaxe et les classes Java
Champs, constructeurs
Java, avanc (examen 1Z0-804) alphorm.com
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Champs, constructeurs et mthodes
Plan Dclaration et utilisation des mthodes
Dclaration et utilisation des champs de donnes
Rle des constructeurs
Java, avanc (examen 1Z0-804) alphorm.com
Dclaration et utilisation des mthodes Une mthode est un traitement disponible sur les objets
Il peut y avoir des paramtres
Un retour peut tre rcupr
La slection se fait sur un objet que lon instancie auparavant
Java, avanc (examen 1Z0-804) alphorm.com
Il existe des mthodes statiques
Dclaration et utilisation des champs Un champ dinstance porte une valeur pour chaque objet
En gnral, le champ est priv
Utilis dans les mthodes de lobjet
Peut tre accessible via des getters et des setters
Java, avanc (examen 1Z0-804) alphorm.com
Il existe des champs statiques
Le rle des constructeurs Il faut initialiser les champs de lobjet
Des paramtres permettent lutilisateur de :
Choisir la version du constructeur (surcharge)
Fournir des arguments de paramtrage
La surcharge est frquente
Java, avanc (examen 1Z0-804) alphorm.com
La surcharge est frquente
Un constructeur est une mthode :
Portant le nom de la classe
Sans retour
Ce quon a couvert Dclaration et utilisation des mthodes
Dclaration et utilisation des champs de donnes
Rle des constructeurs
Java, avanc (examen 1Z0-804) alphorm.com
Rappels sur la syntaxe et les classes Java
Modlisation dobjets
Java, avanc (examen 1Z0-804) alphorm.com
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Modlisation dobjets laide de classes Java
Plan Modliser les objets du monde rel
Traduire les objets rels en objets logiciels
Crer les classes et les structurer
Java, avanc (examen 1Z0-804) alphorm.com
Modliser les objets du monde rel Les objets mtiers sont au cur de lapplication
Plusieurs faons de trouver les objets mtiers
partir des exigences, usecase,
Concepts mtiers dcrits sous forme de noms
Traduits sous la forme dobjets entits
Java, avanc (examen 1Z0-804) alphorm.com
Traduits sous la forme dobjets entits
Traduire le rel en logiciel Un objet mtier correspond des donnes en base
Un objet de mapping objet-relationnel
Un objet de valeurs (contenant les donnes)
On devra ajouter
Les objets de services
Java, avanc (examen 1Z0-804) alphorm.com
Les objets de services
Les objets de prsentation
Crer les classes et les structurer Sous la forme dun diagramme de classes UML
Expressif, lisible, et complet
Les classes possdent
Attributs
Mthodes
Java, avanc (examen 1Z0-804) alphorm.com
Mthodes
Constructeurs
Les classes sont relies entre elles grce aux associations
La traduction en Java est directe
Les associations sont traduites en rfrences (cf attributs rfrences)
Ce quon a couvert Modliser les objets du monde rel
Traduire les objets rels en objets logiciels
Crer les classes et les structurer
Java, avanc (examen 1Z0-804) alphorm.com
Rappels sur la syntaxe et les classes Java
Instructions package et
Java, avanc (examen 1Z0-804) alphorm.com
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Instructions package et import
Plan La notion de package, logique et physique
Linstruction package et le nom de la classe
Utiliser une classe dun autre package, import, exceptions
Lutilisation des classes standards
Java, avanc (examen 1Z0-804) alphorm.com
La notion de package Un package est :
Un espace de nommage
Une limite de visibilit
Un rpertoire
Les packages sont organiss en hirarchies
Java, avanc (examen 1Z0-804) alphorm.com
Les packages sont organiss en hirarchies
Linstruction package En premire ligne du fichier de la classe
package suivi dun nom de package
Attention, le nom de package peut tre compos
La classe (ou les classes) sont rputes tre dans le package
Java, avanc (examen 1Z0-804) alphorm.com
Linstruction import Pour utiliser une classe dun autre package :
crire le nom complet de la classe
Ou bien utiliser import , puis le nom court
Il est possible dcrire un import pour toutes les classes dun package
Java, avanc (examen 1Z0-804) alphorm.com
package
Les classes concernes doivent tre public
Les classes imbriques ont un nom compos avec le nom de la classe englobante
Lutilisation des classes standard Toutes les classes de lAPI Java sont dans des packages
Il est peu recommand de ne pas utiliser de package
Voire interdit lors de la livraison sur certains serveurs
Les import nont pas tre faits pour
Java, avanc (examen 1Z0-804) alphorm.com
Les classes de java.lang
Les classes du mme package
Ce quon a couvert La notion de package, logique et physique
Linstruction package et le nom de la classe
Utiliser une classe dun autre package, import, exceptions
Lutilisation des classes standards
Java, avanc (examen 1Z0-804) alphorm.com
Encapsulation et polymorphisme
Encapsulation pour la
Java, avanc (examen 1Z0-804) alphorm.com
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Encapsulation pour la conception de classes
Plan Principe de lencapsulation
Lencapsulation dans les classes
Lencapsulation dans les packages
Java, avanc (examen 1Z0-804) alphorm.com
Principe de lencapsulation Lencapsulation est le fait de masquer limplmentation et de fournir
une interface
Les bnfices attendus :
Scurit de ltat des objets
Maintenance facile car seuls les services sont utiliss
Java, avanc (examen 1Z0-804) alphorm.com
Maintenance facile car seuls les services sont utiliss
Simplification de linterface
Lencapsulation dans les classes Les classes masquent leurs implmentation :
Le corps des mthodes
Certaines mthodes
Les champs de donnes
Les classes proposent une interface :
Java, avanc (examen 1Z0-804) alphorm.com
Les classes proposent une interface :
Les mthodes non prives
Les constructeurs (non privs)
Lencapsulation dans les packages Les classes peuvent tre publiques ou non
La classe publique seule peut tre utilise de lextrieur de son package
Les classes non publiques servent au fonctionnement du package
Un package est une unit de codage, de test, de livraison
Java, avanc (examen 1Z0-804) alphorm.com
Ce quon a couvert Principe de lencapsulation
Lencapsulation dans les classes
Lencapsulation dans les packages
Java, avanc (examen 1Z0-804) alphorm.com
Encapsulation et polymorphisme
Modlisation de problmes
Java, avanc (examen 1Z0-804) alphorm.com
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Modlisation de problmes mtier laide de classes
Java
Plan Modlisation des besoins
Modlisation danalyse
Modlisation de conception
Traduction en Java
Java, avanc (examen 1Z0-804) alphorm.com
Modlisation des besoins Les besoins sont exprims par du texte
Trop peu formel
La reprsentation classique des exigences passe par les usecase
Une approche NON oriente objets
Java, avanc (examen 1Z0-804) alphorm.com
Modlisation de lanalyse La description des problmes
En terme dobjets, sous la forme de classes
Les classes ne montrent pas les mthodes
En terme de traitement, sous la forme de squences
Java, avanc (examen 1Z0-804) alphorm.com
Appel aussi modle du domaine
Modlisation de conception La description de la solution
Lie Java et sa technologie
Les classes sont entits, contrleurs, frontires
Les squences sont les mmes que prcdemment, mais plus dtailles
Java, avanc (examen 1Z0-804) alphorm.com
Les classes sont quipes des mthodes correspondant aux squences
Traduction en Java Chaque classe a son quivalent en Java
Accent mis sur les classes entits
Classes applicatives lies larchitecture choisie
Gnration automatique possible en Java
Java, avanc (examen 1Z0-804) alphorm.com
Ce quon a couvert Modlisation des besoins
Modlisation danalyse
Modlisation de conception
Traduction en Java
Java, avanc (examen 1Z0-804) alphorm.com
Encapsulation et polymorphisme
Caractre non mutable
Java, avanc (examen 1Z0-804) alphorm.com
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Caractre non mutable
Plan Briser lencapsulation
Empcher la modification des donnes internes
String est une classe non mutable
Java, avanc (examen 1Z0-804) alphorm.com
Briser lencapsulation Lencapsulation est mise en place pour protger un objet
Pas de champs de donnes publiques
Limiter les getters/setters
Passer par des mthodes
Il ny a pas de const en Java, donc on ninterdit pas la modification
Java, avanc (examen 1Z0-804) alphorm.com
Il ny a pas de const en Java, donc on ninterdit pas la modification
Lorsquon passe un objet en paramtre
Lorsquon retourne un objet
Empcher la modification Une classe non mutable (immutable value) est une classe qui ne permet
la modification
Constructeur
Pas de setters
Pas de mthode modifiant lobjet
Java, avanc (examen 1Z0-804) alphorm.com
Pas de mthode modifiant lobjet
Une mthode peut faire comme si elle modifiait
Mais en fait elle retourne un nouvel objet
String est une classe non mutable Il est impossible de modifier une String en Java
Toutes les mthodes et tous les oprateur re-cre un objet
Transparent, intuitif, mais peu performant
Donc on peut exposer une String de son propre objet, lutilisateur ne peut pas modifier la donne relle !
Java, avanc (examen 1Z0-804) alphorm.com
peut pas modifier la donne relle !
Ce quon a couvert Briser lencapsulation
Empcher la modification des donnes internes
String est une classe non mutable
Java, avanc (examen 1Z0-804) alphorm.com
Encapsulation et polymorphisme
Sous-classement
Java, avanc (examen 1Z0-804) alphorm.com
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Sous-classement
Plan La relation de gnralisation-spcialisation
Pourquoi utiliser des sous-classes
Java, avanc (examen 1Z0-804) alphorm.com
La relation de gnralisation-spcialisation La super-classe est un type gnral, la sous-classe un sous-type
Une rfrence vers la super-classe peut pointer vers un objet de la sous-classe
Toutes les caractristiques de la super-classe sont hrites par la sous-classe
Java, avanc (examen 1Z0-804) alphorm.com
Les membres privs de la super-classe ne sont jamais visibles de la sous-classe
Pourquoi utiliser des sous-classes ? Pour manipuler des objets en tant que type trs gnral
Stabilit dun code qui utilise des abstractions
Pour factoriser des caractristiques communes
Les sous-classes hritent des caractristiques du parent
Pour spcialiser des types
Java, avanc (examen 1Z0-804) alphorm.com
Pour spcialiser des types
Chaque sous-classe peut apporter une variante dans le comportement et dans le contenu
Ce quon a couvert La relation de gnralisation-spcialisation
Pourquoi utiliser des sous-classes
Java, avanc (examen 1Z0-804) alphorm.com
Encapsulation et polymorphisme
Surcharge de mthodes
Java, avanc (examen 1Z0-804) alphorm.com
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Surcharge de mthodes
Plan Ecrire plusieurs mthodes mme nom dans une classe
Les consquences de la surcharge
Java, avanc (examen 1Z0-804) alphorm.com
Ecrire plusieurs mthodes mme nom Le mme nom de mthode peut tre utilis
Les paramtres sont diffrents
Le type de retour est indiffrent, mais ne suffit pas
A lappel, le compilateur branche la bonne mthode
Java, avanc (examen 1Z0-804) alphorm.com
La surcharge est rsolue travers les niveaux dhritage
Les consquences de la surcharge Le compilateur rsout lappel de faon transparente en fonction des
arguments fournis
Il ny a pas de complexit syntaxique due des inventions de nouveaux noms chaque type de paramtres
Il ny a pas de dcouverte lexcution, tout est compil
Java, avanc (examen 1Z0-804) alphorm.com
Ce quon a couvert Ecrire plusieurs mthodes mme nom dans une classe
Les consquences de la surcharge
Java, avanc (examen 1Z0-804) alphorm.com
Encapsulation et polymorphisme
Mthode nombre variable
Java, avanc (examen 1Z0-804) alphorm.com
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Mthode nombre variable darguments
Plan Utilisation dune mthode nombre variable darguments
Dclaration et codage
Java, avanc (examen 1Z0-804) alphorm.com
Utilisation dune mthode variadic Pour un traitement qui sera le mme sur chacun des arguments
Equivalent n surcharges de la mthode
Syntaxiquement proche du passage dun tableau darguments
Java, avanc (examen 1Z0-804) alphorm.com
Dclaration et codage Les arguments en nombre variable, cest un tableau
On peut utiliser length et les accs alatoires
Java, avanc (examen 1Z0-804) alphorm.com
Ce quon a couvert Utilisation dune mthode nombre variable darguments
Dclaration et codage
Java, avanc (examen 1Z0-804) alphorm.com
Conception de classes Java
Modificateurs public,
Java, avanc (examen 1Z0-804) alphorm.com
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Modificateurs public, protected et private
Plan Impact de labsence de modificateur
Influence du modificateur private
Influence du modificateur public
Influence du modificateur protected
Remarque sur le modificateur public de class
Java, avanc (examen 1Z0-804) alphorm.com
Remarque sur le modificateur public de class
Impact de labsence de modificateur Un membre sans visibilit est accessible du package entier
Cela dfinit une sorte de voisinage
Les classes sans visibilit elles-mmes suivent la mme rgle
Java, avanc (examen 1Z0-804) alphorm.com
Influence du modificateur private Nexiste que sur les membres
Un membre priv nest accessible que de lintrieur de la classe
Attention, un objet dune classe donne peut accder aux donnes prives dun objet de la mme classe
Typiquement utilis pour les attributs
Java, avanc (examen 1Z0-804) alphorm.com
Typiquement utilis pour les attributs
Influence du modificateur public Un membre publique est accessible de partout
Typiquement utilis pour des mthodes
Dangereux pour les attributs
Les attributs participent ltat de lobjet
Java, avanc (examen 1Z0-804) alphorm.com
Nest intressant que pour les classes elles-mmes publiques
Influence du modificateur protected Un membre protg est accessible
De toutes les classes du package de la classe qui contient le membre
Des classes filles, y compris celles qui sont dans dautres packages
A utiliser plutt sur des mthodes daccs
Il est trs simple de driver une classe en Java
Java, avanc (examen 1Z0-804) alphorm.com
Il est trs simple de driver une classe en Java
Je ne matrise pas qui drive ma classe, et ce quil/elle en fait
Remarque sur public pour class Une classe nest connue par dfaut que de son package
Si la classe doit tre accessible de lextrieur de son package, elle doit tre marque public
Une classe publique aura certainement des membres publiques
Java, avanc (examen 1Z0-804) alphorm.com
Ce quon a couvert Impact de labsence de modificateur
Influence du modificateur private
Influence du modificateur public
Influence du modificateur protected
Remarque sur le modificateur public de class
Java, avanc (examen 1Z0-804) alphorm.com
Remarque sur le modificateur public de class
Conception de classes Java
Remplacement de
Java, avanc (examen 1Z0-804) alphorm.com
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Remplacement de mthodes
Plan La spcialisation de classes
La redfinition de mthode
Java, avanc (examen 1Z0-804) alphorm.com
La spcialisation de classes Permet dhriter de la totalit de la super-classe
Une sous-classe peut possder en plus attributs et mthodes
Il nest pas possible de faire disparatre des membres hrits
Il est possible de spcialiser un ou plusieurs comportements
Java, avanc (examen 1Z0-804) alphorm.com
La redfinition de mthodes Cest refaire la mthode dans la sous-classe alors quelle existe dans la
super-classe
Le prototype de la mthode est identique
Le corps de la mthode est diffrent
On peut ajouter lannotation @Override
Java, avanc (examen 1Z0-804) alphorm.com
On peut ajouter lannotation @Override
Ce quon a couvert La spcialisation de classes
La redfinition de mthode
Java, avanc (examen 1Z0-804) alphorm.com
Conception de classes Java
Surcharge de constructeurs
Java, avanc (examen 1Z0-804) alphorm.com
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Surcharge de constructeurs
Plan Le rle des constructeurs
Utiliser les paramtres des constructeurs
Surcharger les constructeurs
Java, avanc (examen 1Z0-804) alphorm.com
Le rle des constructeurs Initialiser les champs de donnes
Mettre lobjet dans un tat correct
Assurer que lon peut travailler avec lobjet
Java, avanc (examen 1Z0-804) alphorm.com
Utiliser les paramtres des constructeurs Les paramtres sont utiliss pour initialiser les attributs
Les arguments sont fournis par lutilisateur
Il ny a pas de paramtres optionnels en Java
Donc la signature du constructeur est contraignante pour lappelant
Java, avanc (examen 1Z0-804) alphorm.com
Surcharger les constructeurs Il est possible de dclarer plusieurs constructeurs qui se distinguent de
par leurs signatures
Chaque constructeur correspond une faon de crer lobjet
Le constructeur sans paramtre est le constructeur par dfaut
Il nest plus gnr lorsquon crit un constructeur nous-mme
Java, avanc (examen 1Z0-804) alphorm.com
Il nest plus gnr lorsquon crit un constructeur nous-mme
Pas forcment ncessaire de le rcrire
Il est possible de chaner les constructeurs entre eux
Pour viter les redondances de code
Ce quon a couvert Le rle des constructeurs
Utiliser les paramtres des constructeurs
Surcharger les constructeurs
Java, avanc (examen 1Z0-804) alphorm.com
Conception de classes Java
Oprateur instanceof
Java, avanc (examen 1Z0-804) alphorm.com
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Oprateur instanceof
Plan Un objet est dune classe et une seule
Dtecter le type dun objet
Utiliser la dtection dun anctre du type
Java, avanc (examen 1Z0-804) alphorm.com
Un objet est dune classe et une seule Un objet a forcment une classe
Rcuprer le descripteur : getClass()
Eventuellement possible dexploiter la description
Lobjet est conforme sa classe
Java, avanc (examen 1Z0-804) alphorm.com
Dtecter le type dun objet Avec instanceOf, il est possible de vrifier le type de lobjet
Avec getClass(), on dcouvre le type de lobjet
Loprateur instanceof implique une logique conditionnelle
Permettrait de dtecter le type concret de lobjet et de choisir le traitement adapt ce type
Java, avanc (examen 1Z0-804) alphorm.com
traitement adapt ce type
Utilisation dnonce
Permet surtout de se protger avant un transtypage
Utiliser la dtection dun anctre Loprateur instanceof teste les anctres
Super-classes
Interfaces implmentes
En fonction de linterface, il est possible de choisir un traitement
Conception par capacit
Java, avanc (examen 1Z0-804) alphorm.com
Conception par capacit
Ce quon a couvert Un objet est dune classe et une seule
Dtecter le type dun objet
Utiliser la dtection dun anctre du type
Java, avanc (examen 1Z0-804) alphorm.com
Conception de classes Java
Appel de mthode virtuelle
Java, avanc (examen 1Z0-804) alphorm.com
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Appel de mthode virtuelleEt polymorphisme
Plan Mise en place du polymorphisme
Intrt du polymorphisme
Dangers du polymorphisme
Java, avanc (examen 1Z0-804) alphorm.com
Mise en place du polymorphisme Il faut une gnralisation-spcialisation : extends
Il faut une redfinition : rcriture dune mthode dans la sous-classe
Non indispensable : @Override, une annotation qui permet de faire vrifier la redfinition par le compilateur
Java, avanc (examen 1Z0-804) alphorm.com
Intrt du polymorphisme Lusage du polymorphisme permet de :
crire un code simple, qui utilise le type gnralis
Dclencher des mthodes qui ne seront connues qu lexcution
Crer des points de variation dans le systme
Mettre en place des points dextensibilit du systme
Java, avanc (examen 1Z0-804) alphorm.com
Mettre en place des points dextensibilit du systme
A loppos du polymorphisme : tester le type des objets afin de dclencher un code spcifique sur chaque
Dangers du polymorphisme Il est impossible de savoir, la lecture, quelle est la mthode qui sera
dclenche
Tout dpend de lobjet qui sera cr et plac en face de lappel
Le traitement sollicit peut tre une surprise (non conforme, leve dexception)
Java, avanc (examen 1Z0-804) alphorm.com
Le principe de substitution voudrait que les appels soient correctement implments, mais ce principe est souvent viol
Ce quon a couvert Mise en place du polymorphisme
Intrt du polymorphisme
Dangers du polymorphisme
Java, avanc (examen 1Z0-804) alphorm.com
Conception de classes Java
Transtypage de rfrences
Java, avanc (examen 1Z0-804) alphorm.com
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Transtypage de rfrences dobjets
Plan Syntaxe du transtypage
Le danger du transtypage
Utilisation invitable du transtypage
Java, avanc (examen 1Z0-804) alphorm.com
Syntaxe du transtypage Pour forcer le compilateur accepter un appel
Le type de la rfrence utiliser ne fournit pas la mthode
Mais vous savez que lobjet connat la mthode
Mettre le type obtenir entre parenthses
Java, avanc (examen 1Z0-804) alphorm.com
Le compilateur est forc daccepter lappel, mais il faudra que ce cast soit vrai lexcution
Le danger du transtypage Le transtypage fait taire le compilateur
Mais ne prjuge rien lexcution
Si lobjet nest pas celui qui est attendu, problme !
ClassCastException : arrt du programme par leve dexception
Java, avanc (examen 1Z0-804) alphorm.com
Utilisation invitable du transtypage Lorsquon utilise un framework
Il faut driver des classes, redfinir des mthodes
La redfinition suppose une signature identique
Java, avanc (examen 1Z0-804) alphorm.com
Ce quon a couvert Syntaxe du transtypage
Le danger du transtypage
Utilisation invitable du transtypage
Java, avanc (examen 1Z0-804) alphorm.com
Conception de classes avance
Classes abstraites et
Java, avanc (examen 1Z0-804) alphorm.com
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Classes abstraites et gnralisation de type
Plan La mise en place de le gnralisation
Lintrt dune classe abstraite
Les mthodes abstraites
Java, avanc (examen 1Z0-804) alphorm.com
La mise en place de la gnralisation La relation de gnralisation sutilise pour :
Faire apparatre un super-type, pour avoir du code stable
Factoriser des membres
Spcialiser des comportements
La super-classe ne doit pas forcment tre instancie : abstract
Java, avanc (examen 1Z0-804) alphorm.com
La super-classe ne doit pas forcment tre instancie : abstract
Empcher linstanciation peut se faire :
En rendant les constructeurs privs : impossible de crer un objet de cette classe de lextrieur de la classe
En rendant la classe abstraite : la classe doit tre drive
Lintrt dune classe abstraite Faire apparatre une gnralisation
Mais la super-classe nest l que pour factoriser des membres
On ne veut pas dobjet de ce type
Les exemples de classes abstraites dans la vie relle sont nombreux
Java, avanc (examen 1Z0-804) alphorm.com
Taxonomie : les noms despces, de genres, de familles
Une classe abstraite possde donc
Des attributs
Des mthodes
Des constructeurs
Les mthodes abstraites Une mthode abstraite ne contient pas de corps
Mot-cl abstract
Ne peuvent exister que dans des classes abstraites
Seront redfinies dans les classes filles
Java, avanc (examen 1Z0-804) alphorm.com
Ce quon a couvert La mise en place de le gnralisation
Lintrt dune classe abstraite
Les mthodes abstraites
Java, avanc (examen 1Z0-804) alphorm.com
Conception de classes avance
Modificateurs static et final
Java, avanc (examen 1Z0-804) alphorm.com
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Modificateurs static et final
Plan Modificateur static
Modificateur final
Les champs public static final
Java, avanc (examen 1Z0-804) alphorm.com
Modificateur static Le mot cl static sutilise sur un membre
Un champ static est une donne partage par tous les objets de la classe
Une mthode static est une mthode qui est appele sur la classe elle-mme, et non sur un objet
Java, avanc (examen 1Z0-804) alphorm.com
Une mthode static ne peut accder quaux champs static
Les champs static sont initialiss lors du chargement de la classe
Modificateur final Un champ final ne supporte pas daffectation
Il est initialis la dclaration
Ou bien dans un constructeur
Une mthode final ne peut pas tre redfinie
Java, avanc (examen 1Z0-804) alphorm.com
Les champs public static final En gnral, un champ ne doit pas tre public
Sil est final, ce nest pas dangereux
Ne fait pas partie de ltat de lobjet
Math.PI : PI est public static et final
Java, avanc (examen 1Z0-804) alphorm.com
Constante publique
Ce quon a couvert Modificateur static
Modificateur final
Les champs public static final
Java, avanc (examen 1Z0-804) alphorm.com
Conception de classes avance
Meilleures pratiques pour
Java, avanc (examen 1Z0-804) alphorm.com
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Meilleures pratiques pour les modificateurs de champs
Plan Les champs de donne
Les services des classes publiques
Les mthodes de classes de package
Cas particulier des classes driver
Java, avanc (examen 1Z0-804) alphorm.com
Les champs de donne En gnral les champs de donne sont privs
Car ils font partie de ltat de lobjet
Les champs constants peuvent tre publiques
Java, avanc (examen 1Z0-804) alphorm.com
Les services des classes publiques Une classe publique est une faade de son package
Les mthodes dune classe peuvent tre publiques
Mais certaines mthodes peuvent rester inaccessibles de lextrieur
A priori, si rien ne justifie quelle soit publique, une mthode reste prive
Java, avanc (examen 1Z0-804) alphorm.com
prive
Les mthodes des classes de package A lintrieur dun package, une classe a des mthodes au mieux de
visibilit de package (par dfaut)
Les attributs restent privs, mais les services peuvent tre rendus aux autres classes du package
Les mthodes qui ne sont utilises qu lintrieur du package restent prives
Java, avanc (examen 1Z0-804) alphorm.com
prives
Cas particulier des classes driver Pour les classes qui doivent tre drives, penser mettre en protg
les mthodes utilisables par des sous-classes
Utile pour les sous-classes qui ne seront pas dans le mme package
Dans le mme package, la visibilit par dfaut suffit
Faire attention aux attributs protgs, qui seront modifis sans contrle
Java, avanc (examen 1Z0-804) alphorm.com
Faire attention aux attributs protgs, qui seront modifis sans contrle par le code des sous-classes
Ce quon a couvert Les champs de donne
Les services des classes publiques
Les mthodes de classes de package
Cas particulier des classes driver
Java, avanc (examen 1Z0-804) alphorm.com
Conception de classes avance
Implmenter le modle
Java, avanc (examen 1Z0-804) alphorm.com
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Implmenter le modle Singleton
Plan Utiliser un champ static
Utiliser une mthode static
Le modle Singleton simple
Le modle thread-safe
Le modle avec disposition
Java, avanc (examen 1Z0-804) alphorm.com
Le modle avec disposition
Utiliser un champ static Un champ static correspond une donne partage entre tous les
objets de la classe
Pas besoin de crer un objet pour utiliser ou valuer cette donne
En gnral, dune visibilit restreinte, de faon ce que les autres classes ne puissent pas y accder librement
Java, avanc (examen 1Z0-804) alphorm.com
Utiliser une mthode static Une mthode qui naccde quaux champs static
Une mthode qui est appele sur la classe
Ne ncessite pas la cration pralable dun objet
Java, avanc (examen 1Z0-804) alphorm.com
Le modle Singleton simple Un champ static , une mthode static qui cr linstance ou bien
qui la retourne si elle est dj cre
Java, avanc (examen 1Z0-804) alphorm.com
Le modle thread-safe Le code prcdent nest pas protg contre des accs simultans de
plusieurs thread en mme temps
Crer une section critique ? Mais pas la mthode entire
Faire crer linstance linitialisation ? Mais plus de cration la demande
Java, avanc (examen 1Z0-804) alphorm.com
Le modle avec disposition Il faut savoir se dbarrasser de linstance unique
A priori seulement aprs la fin du main
Crer une mthode Reset qui limine linstance
Java, avanc (examen 1Z0-804) alphorm.com
Ce quon a couvert Utiliser un champ static
Utiliser une mthode static
Le modle Singleton simple
Le modle thread-safe
Le modle avec disposition
Java, avanc (examen 1Z0-804) alphorm.com
Le modle avec disposition
Conception de classes avance
Conception de classes
Java, avanc (examen 1Z0-804) alphorm.com
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Conception de classes abstraites
Plan Pourquoi crer des classes abstraites
Rle des classes abstraites
Algorithme utilisant des mthodes abstraites
Java, avanc (examen 1Z0-804) alphorm.com
Pourquoi crer des classes abstraites Pour factoriser du code
viter les redondances
Eviter que lutilisateur ne cre des objets partir de classes incompltes
Crer des modles symtriques plus simples
Java, avanc (examen 1Z0-804) alphorm.com
Rle des classes abstraites Factoriser du code pour de futures classes drives
Reprsenter des comportements gnriques
Rifier des algorithmes
Java, avanc (examen 1Z0-804) alphorm.com
Algorithme utilisant des mthodes abstraites Une classe mre abstraite
Elle contient un squelette dalgorithme
Celui-ci appelle des mthodes abstraites
Les classes filles implmentent les parties
Java, avanc (examen 1Z0-804) alphorm.com
Ce quon a couvert Pourquoi crer des classes abstraites
Rle des classes abstraites
Algorithme utilisant des mthodes abstraites
Java, avanc (examen 1Z0-804) alphorm.com
Conception de classes avance
Classes imbriques
Java, avanc (examen 1Z0-804) alphorm.com
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Classes imbriques
Plan La syntaxe des classes imbriques
Intrt des classes imbriques
Java, avanc (examen 1Z0-804) alphorm.com
Syntaxe des classes imbriques Ecrire une classe dans une classe
Le nom de la classe est masque
Le nom des fichiers est particulier
Java, avanc (examen 1Z0-804) alphorm.com
Intrt des classes imbriques Accs aux membres privs de la classe englobante
Imbrication des objets eux-mmes
Cas particulier des static class
Java, avanc (examen 1Z0-804) alphorm.com
Ce quon a couvert La syntaxe des classes imbriques
Intrt des classes imbriques
Java, avanc (examen 1Z0-804) alphorm.com
Conception de classes avance
Types dnumration
Java, avanc (examen 1Z0-804) alphorm.com
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Types dnumration
Plan Une classe dont on veut limiter le nombre dinstance et leurs valeurs
Le type enum
Java, avanc (examen 1Z0-804) alphorm.com
Une classe valeurs limites On ne matrise pas les instances dune classe
Les types standards nont pas de limite non plus
Il est possible de crer les futures valeurs
Limiter les instances
Java, avanc (examen 1Z0-804) alphorm.com
Beaucoup de travail
Le type enum Un numr est un type
Dont on numre toutes les valeurs
Qui peut possder des mthodes
Java, avanc (examen 1Z0-804) alphorm.com
Ce quon a couvert Une classe dont on veut limiter le nombre dinstance et leurs valeurs
Le type enum
Java, avanc (examen 1Z0-804) alphorm.com
Hritage et interfaces
Interfaces Java
Java, avanc (examen 1Z0-804) alphorm.com
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Interfaces Java
Plan Principe de linterface
Dclaration dune interface
Implmentation dune interface
Hritage entre interfaces
Java, avanc (examen 1Z0-804) alphorm.com
Principe de linterface Une interface dfinit un type utilisateur
Comme une classe, mais sans implmentation
Peut possder des dclarations de mthodes
Abstract public
Java, avanc (examen 1Z0-804) alphorm.com
Peut possder des dclarations de constantes
Public static final
Sert dclarer des services sans les implmenter
Doit tre implmente par une classe
Dclaration dune interface Mot cl interface la place de class
Dans son propre fichier
Peut tre public ou pas
Java, avanc (examen 1Z0-804) alphorm.com
Implmenter une interface Il faut quune classe implmente linterface
Mot cl implements
Obligation pour la classe de fournir les mthodes prvues
Ou bien cette classe doit tre marque abstract
Java, avanc (examen 1Z0-804) alphorm.com
Trs proche de la notion dhritage, mais on nhrite de rien, si ce nest de lobligation de tout implmenter
Hritage entre interfaces Une interface peut hriter dune autre
Cela sert enrichir les interfaces en terme de livraisons successives
Une interface peut hriter de plusieurs interfaces
Java, avanc (examen 1Z0-804) alphorm.com
Ce quon a couvert Principe de linterface
Dclaration dune interface
Implmentation dune interface
Hritage entre interfaces
Java, avanc (examen 1Z0-804) alphorm.com
Hritage et interfaces
Les types dhritages
Java, avanc (examen 1Z0-804) alphorm.com
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Les types dhritages
Plan Les diffrents types dhritages
Lhritages dimplmentation
Lhritage dinterfaces
Java, avanc (examen 1Z0-804) alphorm.com
Les diffrents types dhritages On peut hriter pour plusieurs raisons
Pour rcuprer une implmentation existante
Hritage dimplmentation
Pour proposer les mmes services quun anctre
Java, avanc (examen 1Z0-804) alphorm.com
Hritage dinterfaces
Lhritage dimplmentation On hrite pour ne pas recoder les mthodes, les champs
Moins de travail faire, mais attention la pertinence
Suit une logique mtier
Typiquement ralis en Java avec extends
Java, avanc (examen 1Z0-804) alphorm.com
Lhritage dinterfaces On hrite pour proposer les mmes services vis--vis de lextrieur
Tout le travail est faire, car on ne rcupre pas une implmentation
Suit une logique service
Typiquement ralis avec implements
Java, avanc (examen 1Z0-804) alphorm.com
Ce quon a couvert Les diffrents types dhritages
Lhritages dimplmentation
Lhritage dinterfaces
Java, avanc (examen 1Z0-804) alphorm.com
Hritage et interfaces
Composition dobjets et
Java, avanc (examen 1Z0-804) alphorm.com
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Composition dobjets et dlgation de mthode
Plan Hritage dimplmentation
Composition
Problme pos par la dlgation
Java, avanc (examen 1Z0-804) alphorm.com
Hritage dimplmentation Lhritage pour des raisons dimplmentation peut
Ne pas tre clair
Ne pas respecter le test is-a ou le test 100%
La relation dhritage est extrmement forte
Java, avanc (examen 1Z0-804) alphorm.com
La composition La composition est lassociation de contenance entre deux objets
Cela permet de rutiliser un objet
Il faut rcrire les mthodes
Clair dans son intention
Java, avanc (examen 1Z0-804) alphorm.com
Problme pos par la dlgation Lorsquune association est tablie entre 2 classes
Il y a 2 objets
Il faut grer ces 2 objets la place dun seul
Le fait de rappeler une mthode dun objet partir de lautre est la dlgation
Java, avanc (examen 1Z0-804) alphorm.com
dlgation
Ce quon a couvert Hritage dimplmentation
Composition
Problme pos par la dlgation
Java, avanc (examen 1Z0-804) alphorm.com
Hritage et interfaces
Implmentation de plusieurs
Java, avanc (examen 1Z0-804) alphorm.com
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Implmentation de plusieurs interfaces
Plan Une classe peut implmenter plusieurs interfaces
Les collisions
Java, avanc (examen 1Z0-804) alphorm.com
Une classe implmente plusieurs interfaces Utiliser implements une seule fois, avec une liste des interfaces
Il faut implmenter toutes les mthodes prvues par les interfaces
Java, avanc (examen 1Z0-804) alphorm.com
Les collisions Les collisions de champs de ne peuvent pas exister
Les mthodes seront sous la forme dune seule implmentation
Seul cas difficile : la mme mthode, mais avec un retour diffrent
Java, avanc (examen 1Z0-804) alphorm.com
Ce quon a couvert Une classe peut implmenter plusieurs interfaces
Les collisions
Java, avanc (examen 1Z0-804) alphorm.com
Hritage et interfaces
Le modle de conception
Java, avanc (examen 1Z0-804) alphorm.com
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Le modle de conception DAO
Plan A quoi sert un Data Access Object
Implmentation du modle
Java, avanc (examen 1Z0-804) alphorm.com
A quoi sert le modle DAO
Isoler les accs aux donnes persistantes
Eviter les impacts dun changement de mode de stockage
Regrouper les accs aux donnes dans des classes ddies
Java, avanc (examen 1Z0-804) alphorm.com
Implmentation du modle Un point daccs au modle DAO
Des interfaces reprsentant les accs chaque type de donnes
Les implmentations de ces accs
Java, avanc (examen 1Z0-804) alphorm.com
Ce quon a couvert A quoi sert un Data Access Object
Implmentation du modle
Java, avanc (examen 1Z0-804) alphorm.com
Types gnriques et collections
Classes gnriques et
Java, avanc (examen 1Z0-804) alphorm.com
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Classes gnriques et paramtres de type
Plan Dfinition dune classe gnrique
Utilisation dune classe gnrique
Java, avanc (examen 1Z0-804) alphorm.com
Dfinition dune classe gnrique Une classe patron , qui est paramtrable par un type
Dfinit une famille de classes, qui seront gnres la demande
Ecrite une seule fois, utilise plusieurs fois
Trs utile en particulier pour les conteneurs
Java, avanc (examen 1Z0-804) alphorm.com
Alternative au code sur Object
Utilisation dune classe gnrique Dfinir une classe gnrique
Syntaxe du C++ Classe
Utiliser le symbole choisi T dans le code
A lappel, remplacer T par un type classe rel
Syntaxe Classe
Java, avanc (examen 1Z0-804) alphorm.com
Syntaxe Classe
Ce quon a couvert Dfinition dune classe gnrique
Utilisation dune classe gnrique
Java, avanc (examen 1Z0-804) alphorm.com
Types gnriques et collections
Infrence de type losange
Java, avanc (examen 1Z0-804) alphorm.com
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Infrence de type losange
Plan Dfinition de linfrence de type
Comment allger lcriture
Java, avanc (examen 1Z0-804) alphorm.com
Dfinition de linfrence de type Linfrence de type est ralise par le compilateur
Il va placer le bon type en fonction de ce qui est attendu
Tout est compil, donc pas de surprises lexcution
Java, avanc (examen 1Z0-804) alphorm.com
Comment allger lcriture Avec linfrence de type, on vite de rpter du code
Ecriture plus simple
Mais il faut spcifier quand mme les
Java, avanc (examen 1Z0-804) alphorm.com
Ce quon a couvert Dfinition de linfrence de type
Comment allger lcriture
Java, avanc (examen 1Z0-804) alphorm.com
Types gnriques et collections
Types gnriques et
Java, avanc (examen 1Z0-804) alphorm.com
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Types gnriques et collections
Plan Les collections sans gnricit
Les collections modernes, utilisant la gnricit
Java, avanc (examen 1Z0-804) alphorm.com
Les collections sans gnricit Collections manipulant des Object
Code qui compile toujours
Mais risques lexcution
Perte de types, il faut forcer les types
Autre possibilit : copier-coller !!
Java, avanc (examen 1Z0-804) alphorm.com
Autre possibilit : copier-coller !!
Les collections modernes, avec gnricit La collection sapplique sur un type gnrique
Choisir le type au moment de la cration de lobjet
Il peut y avoir plusieurs types
Collection type
Java, avanc (examen 1Z0-804) alphorm.com
Ce quon a couvert Les collections sans gnricit
Les collections modernes, utilisant la gnricit
Java, avanc (examen 1Z0-804) alphorm.com
Types gnriques et collections
Les objets List et Map
Java, avanc (examen 1Z0-804) alphorm.com
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Les objets List et Map
Plan Linterface List
Linterface Map
Java, avanc (examen 1Z0-804) alphorm.com
Linterface List Les objets de classes implmentant List
Conservent lordre dinsertion
Proposent un accs alatoire
Linterface List est une sous-interface de Collection
Plusieurs classes implmentent linterface List
Java, avanc (examen 1Z0-804) alphorm.com
Plusieurs classes implmentent linterface List
ArrayList
LinkedList
Linterface Map Les objets de classes implmentant Map
Utilisent une cl pour ranger les valeurs
Proposent un accs alatoire, utilisant la cl
Linterface Map prend 2 paramtres gnriques obligatoirement
Plusieurs classes implmentent linterface Map
Java, avanc (examen 1Z0-804) alphorm.com
Plusieurs classes implmentent linterface Map
HashMap
TreeMap
Ce quon a couvert Linterface List
Linterface Map
Java, avanc (examen 1Z0-804) alphorm.com
Types gnriques et collections
Pile avec Deque
Java, avanc (examen 1Z0-804) alphorm.com
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Pile avec Deque
Plan Linterface Deque
Raliser une pile conforme
Java, avanc (examen 1Z0-804) alphorm.com
Linterface Deque Sous-interface de Queue, elle-mme sous-interface de Collection
Utilisable des deux cts
Mthodes addFirst, addLast,
Permet dimplmenter FIFO, et LIFO
Java, avanc (examen 1Z0-804) alphorm.com
Raliser une pile avec Deque En utilisant les mthodes
addFirst, removeFirst, peekFirst
Pour implmenter les mthodes
De la Pile : push, pop, peek
Java, avanc (examen 1Z0-804) alphorm.com
Ce quon a couvert Linterface Deque
Raliser une pile conforme
Java, avanc (examen 1Z0-804) alphorm.com
Traitement des chanes
Manipulation avec
Java, avanc (examen 1Z0-804) alphorm.com
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Manipulation avec StringBuilder et StringBuffer
Plan String, StringBuffer et StringBuilder
Les mthodes de StringBuilder
Java, avanc (examen 1Z0-804) alphorm.com
String, StringBuffer et StringBuilder La classe String est immutable value
Les mthodes de String ne modifie pas la chane en place
StringBuffer est synchronise
Utilise pour un buffer, mais les oprations sont thread-safe
StringBuilder nest pas synchronise et donc souhaitable dans un
Java, avanc (examen 1Z0-804) alphorm.com
StringBuilder nest pas synchronise et donc souhaitable dans un contexte non multithread
Doit tre prfre la prcdente, et offre les mmes mthodes
Les mthodes de StringBuilder Constructeurs :
Par dfaut
Avec un CharSequence en paramtre
Avec une capacit
A partir dune String
Java, avanc (examen 1Z0-804) alphorm.com
A partir dune String
Mthodes : append, insert
Redimensionnement automatique
Ce quon a couvert String, StringBuffer et StringBuilder
Les mthodes de StringBuilder
Java, avanc (examen 1Z0-804) alphorm.com
Traitement des chanes
Principales mthodes lies
Java, avanc (examen 1Z0-804) alphorm.com
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Principales mthodes lies aux chanes de caractres
Plan La classe String, ses mthodes et les oprateurs
La mthode toString
Les classes StringTokenizer et Scanner
Les classes StringBuilder et StringBuffer
Les expressions rgulires
Java, avanc (examen 1Z0-804) alphorm.com
Les expressions rgulires
La classe String, ses mthodes et oprateurs La classe String reprsente une chane non modifiable
Toutes ses mthodes font des modifications crent un nouvel objet
Des oprateurs sont disponibles sur String
Linitialisation littrale de String est possible
Java, avanc (examen 1Z0-804) alphorm.com
Un trs grand nombre de mthodes
La mthode toString Disponible sur tout objet Java
Implment par dfaut sur Object
Redfinissable
Produit une chane qui doit reprsenter lobjet
Java, avanc (examen 1Z0-804) alphorm.com
Les classes StringTokenizer et Scanner Utiles pour parcourir une chane de caractres
Fonctionne sur le mode de lnumration
StringTokenizer est plus ancien et plus limit que Scanner
Java, avanc (examen 1Z0-804) alphorm.com
Les classes StringBuffer et StringBuilder La reprsentation des buffer
Chanes de caractres modifiables
Aucun rapport avec String, utiliser toString pour obtenir la chane
Java, avanc (examen 1Z0-804) alphorm.com
Les expressions rgulires Avec String, on peut appliquer les expressions rgulires
Reprsente un motif
A chercher dans un texte
A substituer dans un texte
Pour dcouper des chanes
Java, avanc (examen 1Z0-804) alphorm.com
Pour dcouper des chanes
Pour filtrer
Ce quon a couvert La classe String, ses mthodes et les oprateurs
La mthode toString
Les classes StringTokenizer et Scanner
Les classes StringBuilder et StringBuffer
Les expressions rgulires
Java, avanc (examen 1Z0-804) alphorm.com
Les expressions rgulires
Traitement des chanes
Analyse de texte dans Java
Java, avanc (examen 1Z0-804) alphorm.com
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Analyse de texte dans Java
Plan Parcourir une chane avec StringTokenizer
Analyser un texte : les mots, les lettres
Java, avanc (examen 1Z0-804) alphorm.com
Parcourir une chane avec StringTokenizer Crer un objet StringTokenizer
Directement connatre le nombre de token : countTokens()
Parcourir : hasMoreToken(), nextToken()
Java, avanc (examen 1Z0-804) alphorm.com
Analyser un texte Compter les mots : utiliser StringTokenizer
Compter les lettres : parcourir la chane
Intrt : faire de la cryptanalyse ;)
Java, avanc (examen 1Z0-804) alphorm.com
Ce quon a couvert Parcourir une chane avec StringTokenizer
Analyser un texte : les mots, les lettres
Java, avanc (examen 1Z0-804) alphorm.com
Traitement des chanes
Traitement des entres avec
Java, avanc (examen 1Z0-804) alphorm.com
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Traitement des entres avec Scanner
Plan Entre dun scanner
Manipulation par un scanner
Java, avanc (examen 1Z0-804) alphorm.com
Entre dun scanner Un scanner peut tre construit partir de
Un fichier
Un flux
Une chane
Une source de caractres
Java, avanc (examen 1Z0-804) alphorm.com
Une source de caractres
Un canal doctet
Manipulation par un scanner Enumrer des valeurs types
Rechercher des motifs ou des chanes
Enumrer des morceaux de chanes
Java, avanc (examen 1Z0-804) alphorm.com
Ce quon a couvert Entre dun scanner
Manipulation par un scanner
Java, avanc (examen 1Z0-804) alphorm.com
Traitement des chanes
Affichage et mise en forme
Java, avanc (examen 1Z0-804) alphorm.com
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Affichage et mise en forme de texte
Plan La classe Formatter
String.format, System.out.printf, System.out.format
DateFormat, NumberFormat, DecimalFormat
Java, avanc (examen 1Z0-804) alphorm.com
La classe Formatter Cette classe permet dappliquer des motifs faon printf
Un objet de type Formatter peut tre li un StringBuilder
Permet de formatter, rorganiser les paramtres
Les conversions sont
Java, avanc (examen 1Z0-804) alphorm.com
Gnrales, Character, Numeric, Date/Time, Percent, LineSeparator
String.format, printf Mthodes de confort exploitant un Formatter
String.format permet de formatter une chane de caractres
System.out.printf ou format gre directement laffichage
Java, avanc (examen 1Z0-804) alphorm.com
DateFormat, NumberFormat, DecimalFormat Dans le package java.text
Permet de formatter les dates, les nombres
Existe en une instance dpendant du poste
Sadapte aux cultures
Java, avanc (examen 1Z0-804) alphorm.com
Gre le formatage et aussi le parsing
Ce quon a couvert La classe Formatter
String.format, System.out.printf, System.out.format
DateFormat, NumberFormat, DecimalFormat
Java, avanc (examen 1Z0-804) alphorm.com
Traitement des chanes
Expressions rgulires avec
Java, avanc (examen 1Z0-804) alphorm.com
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Expressions rgulires avec Pattern et Matcher
Plan Les expressions rgulires
La classe Pattern
La classe Matcher
Java, avanc (examen 1Z0-804) alphorm.com
Les expressions rgulires Sorte de langage la grammaire simple
Permet de retrouver des motifs dans des chanes de caractres
Bas sur Perl5, mais quelques constructions en moins
Motifs :
Java, avanc (examen 1Z0-804) alphorm.com
Caractres dchappement \n, \t
[abc] : a ou b ou c, [^abc] : tout sauf a ou b ou c, [a-z] : de a z
. : tout caractre, \d : [0-9], \D : [^0-9], \s : un blanc, \w : [a-zA-Z0-9]
X? : un ou zro, X* : 0 ou plus, X+ : 1 ou plus, X{n} : n, X{n,m} : entre n et m
La classe Pattern Le package java.util.regex
Permet de compiler une expression rgulire en un motif
Mthodes statiques :
compile, matches, quote
Java, avanc (examen 1Z0-804) alphorm.com
Autres mthodes :
matcher, pattern, split, toString
La classe Matcher Reprsente un outil pour grer les correspondances dun motif
Faire correspondre toute la squence
Rechercher le pattern en partant du dbut
Rechercher la prochaine partie qui correspond au motif
Java, avanc (examen 1Z0-804) alphorm.com
Ce quon a couvert Les expressions rgulires
La classe Pattern
La classe Matcher
Java, avanc (examen 1Z0-804) alphorm.com
Exceptions et assertions
Catgories dexceptions
Java, avanc (examen 1Z0-804) alphorm.com
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Catgories dexceptions
Plan La classe Throwable
La classe Exception
Les exceptions non gres
Les exceptions gres
Java, avanc (examen 1Z0-804) alphorm.com
La classe Throwable Classe mre de tout ce qui peut tre lev lorsquune erreur est dtecte
Plusieurs constructeurs :
Throwable ()
Throwable (String message)
Throwable (String message, Throwable cause)
Java, avanc (examen 1Z0-804) alphorm.com
Throwable (String message, Throwable cause)
Throwable (String message, Throwable cause, boolean sup, boolean stack)
Throwable (Throwable cause)
Mthodes : getMessage(), getCause() .
La classe Exception Classe drive de Throwable
Classe mre de tout ce qui peut tre lev dans une application
Plusieurs constructeurs :
Exception()
Java, avanc (examen 1Z0-804) alphorm.com
Exception(String message)
Exception(String message, Throwable cause)
Exception(String message, Throwable cause, boolean sup, boolean stack)
Exception(Throwable cause)
Les exceptions non gres RuntimeException est la classe mre de toutes les classes dexceptions
qui arrivent normalement dans une application
Le compilateur noblige pas grer ces exceptions
On parle dexceptions non gres
ArithmeticException, ClassCastException, NullpointerException
Java, avanc (examen 1Z0-804) alphorm.com
ArithmeticException, ClassCastException, NullpointerException
Sont dclares dans java.lang
Les exceptions gres Classes drives de Exception
En ralit tout Throwable qui nest ni Error, ni RuntimeException
Le compilateur exigera une gestion explicite
avec les mots cls try-catch-throw-throws
On ne peut pas ignorer simplement la leve de ces exceptions
Java, avanc (examen 1Z0-804) alphorm.com
On ne peut pas ignorer simplement la leve de ces exceptions
Ce quon a couvert La classe Throwable
La classe Exception
Les exceptions non gres
Les exceptions gres
Java, avanc (examen 1Z0-804) alphorm.com
Exceptions et assertions
Classes dexception Java
Java, avanc (examen 1Z0-804) alphorm.com
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Classes dexception Java standard
Plan Les classes dexception non gres de java.lang
Les classes dexception gres de java.lang
Java, avanc (examen 1Z0-804) alphorm.com
Les classes dexception non gres ArithmeticException
Java, avanc (examen 1Z0-804) alphorm.com
ArrayIndexOutOfBoundsException
ArrayStoreException
ClassCastException
Les classes dexception non gres IllegalArgumentException : mauvais argument lors dun appel de mthode
IllegalMonitorStateException : attente dun thread non bloqu
IllegalStateException : application dans un tat incorrect
IllegalThreadStateException : ltat du thread ne permet pas de raliser lopration
IndexOutOfBoundsException : dbordement dindex
NegativeArraySizeException : allocation dun tableau avec une taille ngative
Java, avanc (examen 1Z0-804) alphorm.com
NegativeArraySizeException : allocation dun tableau avec une taille ngative
NullPointerException : utilisation dune rfrence nulle
NumberFormatException : conversion de chane de caractre en numrique impossible
SecurityException : tentative de violation de scurit
StringIndexOutOfBounds : index suprieur la taille de la chane
UnsupportedOperationException : opration non supporte
Les classes dexception gres Ces exceptions qui correspondent certaines API
Les exceptions qui sont lies aux entres-sorties
Les exceptions lies aux bases de donnes
Le compilateur exigera une gestion du cas exceptionnel
Java, avanc (examen 1Z0-804) alphorm.com
Ce quon a couvert Les classes dexception non gres de java.lang
Les classes dexception gres de java.lang
Java, avanc (examen 1Z0-804) alphorm.com
Exceptions et assertions
Cration de classes
Java, avanc (examen 1Z0-804) alphorm.com
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Cration de classes dexception
Plan Hriter de Exception
Dclarer des membres spcifiques
Java, avanc (examen 1Z0-804) alphorm.com
Hriter de Exception Il est indispensable dhriter de Exception
Faire le choix du constructeur
Le message est dj prvu
La cause est dj prvue
Un hritage sur RuntimeException est possible
Java, avanc (examen 1Z0-804) alphorm.com
Un hritage sur RuntimeException est possible
Dclarer des membres spcifiques Une exception capte le contexte derreur et le remonte
Constructeur avec les paramtres appropris
Getter pour restituer linformation
Les attributs vont avec
Une exception peut ne pas avoir dattributs spcifiques
Java, avanc (examen 1Z0-804) alphorm.com
Une exception peut ne pas avoir dattributs spcifiques
Son type seul suffit lidentifier
Ce quon a couvert Hriter de Exception
Dclarer des membres spcifiques
Java, avanc (examen 1Z0-804) alphorm.com
Exceptions et assertions
Les mots-cls try, catch et
Java, avanc (examen 1Z0-804) alphorm.com
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Les mots-cls try, catch et finally
Plan Le mot-cl try
Le mot-cl catch
Le mot-cl finally
La dclaration de leve dexception
Java, avanc (examen 1Z0-804) alphorm.com
Le mot-cl try Mot-cl qui introduit le bloc de code nominal
Ce bloc sera suivi des blocs de gestion derreur
Java, avanc (examen 1Z0-804) alphorm.com
Le mot-cl catch Correspond un bloc de gestion derreur
Plusieurs blocs catch peuvent suivre un try
Il seront valus dans lordre de prsence dans le code
Java, avanc (examen 1Z0-804) alphorm.com
Le mot-cl finally Termine la squence des catch
Optionnel
Introduit in bloc garanti dexcution
Java, avanc (examen 1Z0-804) alphorm.com
La dclaration de la leve dexceptions Pour grer les exceptions, 2 possibilits :
Try-catch pour grer ce niveau lexception
Throws pour laisser passer lexception
Java, avanc (examen 1Z0-804) alphorm.com
Ce quon a couvert Le mot-cl try
Le mot-cl catch
Le mot-cl finally
La dclaration de leve dexception
Java, avanc (examen 1Z0-804) alphorm.com
Exceptions et assertions
Linterface AutoCloseable et
Java, avanc (examen 1Z0-804) alphorm.com
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Linterface AutoCloseable et try-with-resources
Plan Labsence de destruction dterministe
Avec try-with-resources
Java, avanc (examen 1Z0-804) alphorm.com
Labsence de destruction dterministe Le ramasse-miette se charge de rcuprer la mmoire non utilise
Mais son passage est dict par ses propres algorithmes
Il est possible mais souvent maladroit de dclencher le gc
En Java, il ny a pas de destructeur dterministe
Java, avanc (examen 1Z0-804) alphorm.com
Cela vite au dveloppeur davoir crire le delete
Mais certains objets ont des ressources (non mmoire) associes
Il faut les forcer librer ces ressources
Avec try-with-resources Provoquer le close sur un objet
Il faut implmenter AutoCloseable
Java, avanc (examen 1Z0-804) alphorm.com
Ce quon a couvert Labsence de destruction dterministe
Avec try-with-resources
Java, avanc (examen 1Z0-804) alphorm.com
Exceptions et assertions
Multi-catch
Java, avanc (examen 1Z0-804) alphorm.com
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Multi-catch
Plan Plusieurs catch sont possibles derrire un try
Le polymorphisme des exceptions
Le contenu dun catch
Java, avanc (examen 1Z0-804) alphorm.com
Plusieurs catch sont possibles aprs un try Les catch sont typs par la classe dexception quils traitent
Un bloc catch excut suffit pour quil ny ait plus derreur
Les blocs catch sont valus dans lordre de prsence dans le code
Mais ds quun catch correspond, il est excut
Java, avanc (examen 1Z0-804) alphorm.com
Aucun autre ne sera excut
Si aucun catch ne correspond, on remonte lappelant
Le polymorphisme des exceptions Les classes dexception sont organises en hritages
Un catch sur une classe mre attrape les exceptions filles
Il faut mettre les catch du type le plus spcifique vers le plus gnrique
Sinon, le premier bloc convient toujours, et les autres sont du code mort
Java, avanc (examen 1Z0-804) alphorm.com
Le contenu dun catch Ne rien mettre dans un catch est dangereux
Lerreur sera rpute traite, mais rien nest fait
Traiter lerreur en utilisant le contexte : lexception
Mthodes printStackTrace de Exception
Java, avanc (examen 1Z0-804) alphorm.com
Ce quon a couvert Plusieurs catch sont possibles derrire un try
Le polymorphisme des exceptions
Le contenu dun catch
Java, avanc (examen 1Z0-804) alphorm.com
Exceptions et assertions
Meilleures pratiques
Java, avanc (examen 1Z0-804) alphorm.com
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Meilleures pratiques
Plan Un bloc try par mthode
Contenu des catch
Granularit des catch
Rinterprtation des exceptions
Java, avanc (examen 1Z0-804) alphorm.com
Un bloc try par mthode Si vous placez plusieurs try dans une mthode
Il est possible de raliser le second try sans le premier
Est-ce que la mthode elle-mme est cohrente ?
Il est difficile de suivre le scnario nominal
Un seul try suivi de plusieurs catch
Java, avanc (examen 1Z0-804) alphorm.com
Un seul try suivi de plusieurs catch
Facile lire, meilleure sparation du code nominal du code de gestion des erreurs
Contenu des catch Un minimum dans un catch, non vide
Utiliser les mthodes prsentes sur la classe Exception
en fait Throwable
Utiliser un log pour tracer
Java, avanc (examen 1Z0-804) alphorm.com
Rtablir le systme bas-niveau et rinterprter
Granularit des catch Le bloc catch est dclench pour 1 type dexception
On peut traiter une classe mre
Traiter Exception et totalement gnraliste
Traiter une super classe traite toutes ses sous-classes
Il est possible de traiter plusieurs types non relis
Java, avanc (examen 1Z0-804) alphorm.com
Il est possible de traiter plusieurs types non relis
Rinterprtation des exceptions Il est possible de relancer une exception alors quune exception est en
cours de traitement
Cas particulier du traitement bas-niveau puis
Relancer la mme exception
Relancer une nouvelle exception : rinterprtation
Java, avanc (examen 1Z0-804) alphorm.com
Relancer une nouvelle exception : rinterprtation
Ce quon a couvert Un bloc try par mthode
Contenu des catch
Granularit des catch
Rinterprtation des exceptions
Java, avanc (examen 1Z0-804) alphorm.com
Exceptions et assertions
Les assertions
Java, avanc (examen 1Z0-804) alphorm.com
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Les assertions
Plan Dfinition dune assertion
Placer les assertions
Lancer lapplication avec ou sans les assertions
Java, avanc (examen 1Z0-804) alphorm.com
Dfinition dune assertion Une vrification runtime que lobjet est bien dans un certain tat
Contrat dutilisation dun objet, dune mthode
Ne cherche pas vrifier les entres variantes de lenvironnement
Utiliser les tests base de if pour cela
Java, avanc (examen 1Z0-804) alphorm.com
Lorsque lassertion nest pas vrifie, une Error est leve
Placer une assertion En dbut de mthode : une prcondition
En fin de mthode : une postcondition
Nimporte o : un invariant
Une assertion peut dtecter un passage dans un flux non prvu
Java, avanc (examen 1Z0-804) alphorm.com
Ne pas tester les paramtres en entre dus lutilisateur
Les assertions sont dbrayables
Lancer avec ou sans les assertions Les assertions ne sont pas lances par dfaut
Il faut les activer avec ea
Donc les assertions ne cotent rien dans une application livre
Java, avanc (examen 1Z0-804) alphorm.com
Ce quon a couvert Dfinition dune assertion
Placer les assertions
Lancer lapplication avec ou sans les assertions
Java, avanc (examen 1Z0-804) alphorm.com
Principes des entres-sorties
Gestion des entres-sorties
Java, avanc (examen 1Z0-804) alphorm.com
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Gestion des entres-sorties
Plan Hirarchie de classes
Les canaux
Les filtres
Java, avanc (examen 1Z0-804) alphorm.com
Hirarchie de classes InputStream est une entre binaire
OutputStream est une sortie binaire
Reader est une entre texte
Writer est une sortie texte
Java, avanc (examen 1Z0-804) alphorm.com
Drives de ces classes
Canaux reprsentant les sources/cibles de donnes
Filtres reprsentant les dcorateurs
Les canaux Les sources ou les cibles
Fichiers : FileInputStream, FileOutputStream, FileReader, FileWriter
Sockets
Entres ou sorties sur les serveurs : ServletOutputStream
Java, avanc (examen 1Z0-804) alphorm.com
Les filtres Dcorations des accs aux donnes
Ne rajoutent pas mthodes
BufferedInputStream : gre une lecture bufferise
Ou bien ajoutent des comportement
Java, avanc (examen 1Z0-804) alphorm.com
DataInputStream : lit des valeurs de types primitifs
Ce quon a couvert Hirarchie de classes
Les canaux
Les filtres
Java, avanc (examen 1Z0-804) alphorm.com
Principes des entres-sorties
Lecture de la console
Java, avanc (examen 1Z0-804) alphorm.com
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Lecture de la console
Plan System.in est une entre binaire
Les filtres pour lire la console
Java, avanc (examen 1Z0-804) alphorm.com
System.in est une entre binaire System.in est de type InputStream
Lecture via read ou read(byte[])
Rcupration dun octet
Java, avanc (examen 1Z0-804) alphorm.com
Les filtres pour lire la console InputStreamReader permet de convertir lentre binaire en entre
caractres
BufferedReader permet de lire une ligne
Java, avanc (examen 1Z0-804) alphorm.com
BufferedReader permet de lire une ligne
Scanner Pour rappel, il est possible dutiliser Scanner
Lecture de donnes formates
Java, avanc (examen 1Z0-804) alphorm.com
Ce quon a couvert System.in est une entre binaire
Les filtres pour lire la console
Java, avanc (examen 1Z0-804) alphorm.com
Principes de