500
Présentation de la formation Java avancé Java, avancé (examen 1Z0-804) alphorm.com™© Fabien Brissonneau Consultant, concepteur et formateur Objets Logiciels Site : http://www.alphorm.com Blog : http://www.alphorm.com/blog Forum : http://www.alphorm.com/forum (examen 1Z0-804)

Alphorm.com Formation Java,avancé OCP (1Z0-804)

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