You are on page 1of 368

Prsentation de la formation

Java les fondamentaux


(examen 1Z0-803)

Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Java, les fondamentaux

Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels

alphorm.com

Plan
Prsentation du formateur
Les autres formations sur Alphorm
Quest-ce que Java ?
Le plan de la formation
Prsentation des outils
Les publics concerns

Java, les fondamentaux

alphorm.com

Prsentation du formateur
Fabien Brissonneau
Email : fabien.brissonneau@gmail.com
Consultant Concepteur et Formateur
Missions darchitecture, de conception , de ralisation logicielles
Fondateur de eiXa6
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/

Java, les fondamentaux

alphorm.com

Mes formations sur alphorm

Java, les fondamentaux

alphorm.com

Les autres formations dv sur Alphorm

Java, les fondamentaux

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
Avec un trs grande bibliothque de classes

Java, les fondamentaux

alphorm.com

Le plan de la formation
Prsentation de la technologie Java
Penser en termes objet
Prsentation du langage Java

Utiliser des mthodes et la

surcharge
Utiliser lencapsulation et les

constructeurs

Utiliser des variables primitives

Concepts avancs de lobjet

Utiliser des objets

Gestion des erreurs

Utiliser des oprateurs et des

Vue densemble

dcisions
Crer et utiliser des tableaux
Utiliser des structures en boucles

Java, les fondamentaux

alphorm.com

Certification OCA suite lexamen 1Z0-803

Java, les fondamentaux

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
La prsentation sera faite sous Windows 7

Java, les fondamentaux

alphorm.com

Les publics concerns


Cette formation est la premire de 2 formations certifiantes
Java SE7
La formation suivante est Java avanc !

Java, les fondamentaux

alphorm.com

Scoop
Formation apparaitre prochainement sur alphorm

Java, les fondamentaux

alphorm.com

Allons-y !
Nous pouvons dmarrer !!

Java, les fondamentaux

alphorm.com

Prsentation
Associer Java dautres
langages

Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Java, les fondamentaux

Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels

alphorm.com

Plan
Historique
Caractristiques essentielles du langage
Comparer Java C++
Comparer Java C#
Comparer Java Python

Java, les fondamentaux

alphorm.com

Historique
Dmarre en 1991, chez SUN, projet dirig par James Gosling
Projet Oak, partant du C++ en liminant les points dangereux
Version alpha de Java en 1995
Version 1.0 en 1996

Java, les fondamentaux

alphorm.com

Caractristiques essentielles
Langage la syntaxe simple
Langage gnraliste
Langage indpendant de la plateforme
Langage orient objet
Langage prvu pour le support du rseau

Java, les fondamentaux

alphorm.com

Comparer Java C++


Objectifs : C++ est proche du systme, Java a une grande couche dabstraction
Syntaxe : C++ a une syntaxe complexe et pleine de surprises, Java a une syntaxe simple
Bibliothque standard : la bibliothque du C++ est le plus petit commun toute

application, Java a une bibliothque trs large


Excution : C++ est natif, Java tourne sur une machine virtuelle
Paradigme de programmation : C++ favorise un mlange des faons de programmer, Java

est fortement orient objet


Mmoire : en C++, la gestion de la mmoire est manuelle, Java utilise un ramasse-miette
Origine et volution : C++ est un standard ISO, Java a t cr par Sun, maintenant Oracle

Java, les fondamentaux

alphorm.com

Comparer Java C#
Objectifs : C# est li au monde Microsoft et Java nest pas li un constructeur
Syntaxe : C# et Java ont une syntaxe simple. C# ajoute quelques lments, qui

rapellent le C++
Bibliothque standard : les bibliothques Java et DotNet sont trs larges
Excution : C# et Java tournent sur une machine virtuelle, avec compilation JIT
Paradigme de programmation : C# et Java sont fortement orients objet
Mmoire : C# et Java utilisent un ramasse-miette
Origine et volution : C# est un langage dorigine Microsoft

Java, les fondamentaux

alphorm.com

Comparer Java Python


Objectifs : Python est plus un langage de glue , l o Java servirait crer les

composants lis
Syntaxe : Python utilise les indentations, limite la verbosit. Java comme Python

ont peu de types de base


Bibliothque standard : les bibliothques Java et Python sont trs larges
Excution : Python est interprt, son bytecode est invisible. La phase de

compilation du source Java en bytecode est clairement identifie


Paradigme de programmation : Python et Java sont orients objet, mais Python

sutilise souvent comme un langage de script


Mmoire : Python et Java utilisent un ramasse-miette
Origine et volution : Python est dorigine associative, PSF
Java, les fondamentaux

alphorm.com

Ce quon a couvert
Nous avons rappel les caractristiques essentielles de Java
Nous avons compar Java dautres de langages comparables
Par rapport ces langages, Java apparat comme :
Un langage la syntaxe simple
Un langage qui permet une bonne productivit
Un langage fortement typ, qui guide le dveloppeur
Fortement orient objet
Avec une grande bibliothque standard
Ouvert sur le monde
Java, les fondamentaux

alphorm.com

Prsentation
Tlchargement et
installation de Java

Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Java, les fondamentaux

Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels

alphorm.com

Plan
O trouver Java ?
Les tlchargements disponibles
Installation des outils Java
Configuration de lenvironnement de travail Java

Java, les fondamentaux

alphorm.com

O trouver Java ?
Le ncessaire pour excuter : www.java.com
Le kit de dveloppement : Java Development Kit (JDK)
Le runtime en 2 versions :
Le Java Rutime Environment (JRE)
Le JRE pour serveur
Sur le site : www.oracle.com/technetwork/java
Oracle participe au Java Community Process, les nouveauts Java sont

mises sous la forme de Java Specification Request : www.jcp.org


Oracle participe aussi OpenJDK
Java, les fondamentaux

alphorm.com

Les tlchargements disponibles


Les ditions Java : Java SE, Java EE, Java ME
Standard Edition : JRE complet + outils pour dvelopper (compilateur,

dbuggeur, moniteur)
Enterprise Edition : concerne les applications serveur (multi-tier,

scurises,)
Glassfish
API supplmentaire, documentation et exemples
EE Web Profile : sous-ensemble ne concernant que les applis Web
Micro Edition : pour des applications embarques, mmoire limites,

accs permanent au rseau, etc


Java, les fondamentaux

alphorm.com

Installation des outils


JDK SE : tlchargement, installation sous diffrentes plateformes
Tlchargement et installation avec ou sans NetBeans (netbeans.org)
Le JRE sera install dans : <program files>/Java/jre8
Il faut avoir les droits dadministration
NetBeans 8 utilise nimporte quel jdk 7 ou 8, il le rfrence par jdkhome

Java, les fondamentaux

alphorm.com

Configuration des outils


Netbeans
Eclipse
Ligne de commande
PATH
CLASSPATH
JAVA_HOME / JRE_HOME

Java, les fondamentaux

alphorm.com

Ce quon a couvert
O trouver Java ?
Les tlchargements disponibles
Installation des outils Java
Configuration de lenvironnement de travail Java

Java, les fondamentaux

alphorm.com

Prsentation
Les technologies Java

Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Java, les fondamentaux

Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels

alphorm.com

Plan
Java SE
Java EE
Embedded Java

Java, les fondamentaux

alphorm.com

Java SE
Version standard de la livraison Java
Le Java Development Kit (JDK) incluant le SDK JavaFX
Le Java Runtime Environment (JRE) permettant dexcuter les

applications
Le runtime JavaFX
La machine virtuelle Oracle JRockit

Java, les fondamentaux

alphorm.com

Java EE
Version entreprise de Java
Il existe 2 profils : EE SDK et EE Web Profile SDK
Les deux versions sont livres avec Glassfish
Exemples de code, documentation et tutoriel
Une plateforme pour dployer des applications dentreprise

(robustesse, Web services, dploiement facilit)

Java, les fondamentaux

alphorm.com

Embedded Java
Java pour environnements pauvres en ressources
2 options proposes : Java ME Embedded et Java ME Embedded Client

Java, les fondamentaux

alphorm.com

Ce quon a couvert
Java SE
Java EE
Embedded Java

Java, les fondamentaux

alphorm.com

Prsentation
Caractristiques principales
et les avantages de la
technologie Java
Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Java, les fondamentaux

Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels

alphorm.com

Plan
Syntaxe du langage Java
Les bibliothques Java
La machine virtuelle
La gestion de la ressource mmoire
Louverture des technologies

Java, les fondamentaux

alphorm.com

La syntaxe du langage Java


Une syntaxe rappelant celle du C++
Simple et productive
Pas de piges, objectif de lisibilit maximale

Java, les fondamentaux

alphorm.com

Les bibliothques Java


Les bibliothques standard sont trs larges
Couvrent tous les aspects dune aplication
Evitent le besoin de rinventer lexistant
De nombreuses bibliothques de tiers

Java, les fondamentaux

alphorm.com

La machine virtuelle
A lorigine, une machine logicielle qui interprte du bytecode
Le code Java est compil explicitement en bytecode
Les machines virtuelles compilent Just In Time
Un bytecode et une machine trs optimiss

Java, les fondamentaux

alphorm.com

La gestion de le ressource mmoire


La mmoire nest pas gre explicitement par le dveloppeur
Un thread de la JVM se charge de la gestion
Les zones mmoire plus utilises sont rcupres
La responsabilit du dveloppeur est de rendre la main

Java, les fondamentaux

alphorm.com

Louverture des technologies


Le processus dvolution du langage est ouvert
Les spcifications sont ouvertes (JVM)
De nombreux intervenants proposent des composants
Certains on tendance tirer eux les standards

Java, les fondamentaux

alphorm.com

Ce quon a couvert
Syntaxe du langage Java
Les bibliothques Java
La machine virtuelle
La gestion de la ressource mmoire
Louverture des technologies

Java, les fondamentaux

alphorm.com

Prsentation
Utiliser un environnement
de dveloppement intgr

Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Java, les fondamentaux

Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels

alphorm.com

Plan
LIDE Netbeans
Crer un projet
Produire partir du projet
LIDE Eclipse

Java, les fondamentaux

alphorm.com

Netbeans
Environnement dorigine Oracle/Sun
Fournit en bundle avec Java JDK
Plateforme sur laquelle on installe des plugs-in
Supporte plusieurs langages et plusieurs utilisations

Java, les fondamentaux

alphorm.com

Crer un projet
La notion de projet nest pas Java
Il faut crer un projet Netbeans
Le source Java est cr/compil partir de ce projet
Le projet peut aussi rfrencer des lments extrieurs
Le projet est typ , les rpertoires sont diffremment organiss

Java, les fondamentaux

alphorm.com

Produire partir du projet


Production de .class, issus de la compilation
Gnration de fichiers zipps comme les jar
Gnration de la documentation technique

Java, les fondamentaux

alphorm.com

LIDE Eclipse
Eclipse est une plateforme dorigine IBM
Largement utilise
Indpendante de Java
Plateforme sur laquelle on installe des plugs in
Multilangages, multi-utilisations

Java, les fondamentaux

alphorm.com

Ce quon a couvert
LIDE Netbeans
Crer un projet
Produire partir du projet
LIDE Eclipse

Java, les fondamentaux

alphorm.com

Penser en termes dobjets


Dfinir le domaine du
problme

Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Java, les fondamentaux

Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels

alphorm.com

Plan
Domaine/mtier/analyse/conception/code
Rle du modle du domaine
Rle du modle de conception
Traduction en Java

Java, les fondamentaux

alphorm.com

Domaine -> conception -> code


Le modle du domaine est la premire vue oriente objets
La trace entre mtier et code est assure
Le code est une autre vue du mtier
Le code nest l que pour rpondre un besoin mtier

Java, les fondamentaux

alphorm.com

Rle du modle du domaine


Le modle du domaine est une vue oriente objet
On peut le traduire en code ( travers des tapes nombreuses)
Il est compris par le mtier
Il est stable (contrairement au code)
Le modle du domaine est quasiment hors informatique

Java, les fondamentaux

alphorm.com

Le modle de conception
A partir du modle du domaine
Prenant en compte larchitecture technique
Le modle de conception est efficace, performant, et fidle
Il sera traduit en code

Java, les fondamentaux

alphorm.com

Traduction en Java
Le type dobjet est une classe -> Java
Les attributs sont les donnes
Les mthodes sont les fonctions membres
Les associations sont des attributs rfrences
Le code ninvente quasi rien
Le corps des mthodes nest pas spcifi par un modle de classes

Java, les fondamentaux

alphorm.com

Ce quon a couvert
Domaine/mtier/analyse/conception/code
Rle du modle du domaine
Rle du modle de conception
Traduction en Java

Java, les fondamentaux

alphorm.com

Penser en termes dobjets


Identifier les objets

Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Java, les fondamentaux

Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels

alphorm.com

Plan
Dfinition dun objet
Pourquoi parler de classes
Dfinir un bon objet mtier
Les classes applicatives
Vocabulaire

Java, les fondamentaux

alphorm.com

Dfinition dun objet


Une entit vivante, qui ragit aux messages reus
Un objet contient les donnes et les traitements qui permettent dagir

dessus
Un objet a des frontires bien dfinies, des tats et des comportements

Java, les fondamentaux

alphorm.com

Pourquoi parler des classes


Une classe est un type dobjet
Parler des types au lieu des exemples occurrents permet simplifier la

description du problme
Une classe est aussi le descripteur dobjets
Il y a plusieurs sortes de classes (mtier, applicatives)
Une classe est lisible dans les services quelle rend

Java, les fondamentaux

alphorm.com

Dfinir un bon objet mtier


Souvent repr comme un groupe nominal dans un nonc
Un bon objet mtier est manipul par le mtier
Il contient des donnes importantes
Il est cohrent dans un traitement

Java, les fondamentaux

alphorm.com

Les classes applicatives


Une classe applicative correspond aux couches techniques
Elle apparat dans le modle de conception
Nest pas le reflet des objets mtier
Peuvent ne contenir que des traitements

Java, les fondamentaux

alphorm.com

Vocabulaire
Les classes contiennent toutes les donnes et traitements
Rien ne peut tre en dehors des classes
Les objets masquent leur implmentation : cest lencapsulation
Les classes dfinissent :
des attributs (donnes)
des mthodes (traitements)

Java, les fondamentaux

alphorm.com

Ce quon a couvert
Dfinition dun objet
Pourquoi parler de classes
Dfinir un bon objet mtier
Les classes applicatives
Vocabulaire

Java, les fondamentaux

alphorm.com

Prsentation du langage Java


Dfinir les classes

Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Java, les fondamentaux

Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels

alphorm.com

Plan
Une classe dfinit les attributs et les mthodes
Les visibilits autorisent ou interdisent les accs aux membres
Les constructeurs sont remarquables
La dfinition de la classe peut supporter des modificateurs

Java, les fondamentaux

alphorm.com

Une classe dfinit attributs et mthodes


Les attributs sont typs, ce sont les donnes
Les mthodes sont dcrits par un nom, un type de retour et des

paramtres, eux-mmes typs


Il ny a pas dordre dans les dclarations
Le corps des mthodes peut utiliser les attributs, les paramtres et les

variables locales ventuelles


Par convention, une classe commencent par une majuscule, un attribut

et une mthode par une minuscule

Java, les fondamentaux

alphorm.com

Les visibilits
Pour implmenter lencapsulation
Visibilits : par dfaut, private, protected, public
Limitent laccs aux membres par dautres morceaux de code

Java, les fondamentaux

alphorm.com

Les constructeurs
Les constructeurs sont des mthodes
Qui portent le nom de la classe
Nont pas de type de retour
Initialisent les attributs
Lappel dun constructeur est implicite

Java, les fondamentaux

alphorm.com

La dfinition de classe a des modificateurs


Classe publique ou non
Classe extension dune autre
Classe implmentation dune interface

Java, les fondamentaux

alphorm.com

Ce quon a couvert
Une classe dfinit les attributs et les mthodes
Les visibilits autorisent ou interdisent les accs aux membres
Les constructeurs sont remarquables
La dfinition de la classe peut supporter des modificateurs

Java, les fondamentaux

alphorm.com

Prsentation du langage Java


Identifier les composants
dune classe

Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Java, les fondamentaux

Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels

alphorm.com

Plan
Les composants possibles
Crer des attributs
Crer des constructeurs
Crer des mthodes

Java, les fondamentaux

alphorm.com

Les composants dune classe


Une classe dfinit des attributs, ou champs de donnes
Une classe dfinit des constructeurs, qui initialisent ces champs
Une classe dfinit des mthodes, ou fonctions membres
Les membres sont affects dune visibilit
Lordre de leurs dclarations nest pas significatif

Java, les fondamentaux

alphorm.com

Crer des attributs


Un champ de donne est typ
Son nom suit la convention : commence par une minuscule et ensuite

capitalisation
En gnral, la visibilit est prive
Le type de ce champ de donne est :
Un type fondamental (int, )
Une chane de caractres (String)
Une rfrence vers un autre type, standard ou utilisateur

Java, les fondamentaux

alphorm.com

Crer des constructeurs


Un constructeur est une fonction membre spciale
Le nom dun constructeur est le nom de la classe
Il peut avoir des paramtres, mais pas de retour
Dans le corps du constructeur, on doit initialiser les champs de donne

Java, les fondamentaux

alphorm.com

Crer des mthodes


Une mthode est un traitement effectu sur un objet
Son nom suit la mme convention que les attributs
Elle dclare une liste de paramtres (type nom)
Elle peut ne pas avoir de paramtres
Elle a un retour, sinon, elle dclare void
Une mthode correspond un message que lon peut envoyer lobjet

de ce type

Java, les fondamentaux

alphorm.com

Ce quon a couvert
Les composants possibles
Crer des attributs
Crer des constructeurs
Crer des mthodes

Java, les fondamentaux

alphorm.com

Prsentation du langage Java


Crer et utiliser une classe
de test

Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Java, les fondamentaux

Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels

alphorm.com

Plan
Dfinition dune classe de test
Construction dune classe de test
Utilisation simple dune classe de test
Utilisation dune classe de test via un framework

Java, les fondamentaux

alphorm.com

Dfinition dune classe de test


Une classe qui ne sert qu tester une autre classe
Une classe est lunit de test par excellence
La classe de test propose une mthode par traitement tester
Les mthodes de tests sont dclenchs par lextrieur

Java, les fondamentaux

alphorm.com

Construction dune classe de test


Pour chaque classe du modle, crer une classe de test
Dans cette nouvelle classe, crer une mthode par test raliser
Dans une mthode de test : mettre en place le jeu de test, lancer

Java, les fondamentaux

alphorm.com

Utilisation simple dune classe de test


Dans un main
Appeler les mthodes de la classe de test
On voit quil est plus simple de faire des appels statiques
Remarquer la visualisation des rsultats dans la console

Java, les fondamentaux

alphorm.com

Utilisation dun framework de test


JUnit sest impos comme un framework de test
Appels statiques
Les classes et les mthodes de tests sont annots
Une ihm simple permet didentifier les russites et les checs

Java, les fondamentaux

alphorm.com

Ce quon a couvert
Dfinition dune classe de test
Construction dune classe de test
Utilisation simple dune classe de test
Utilisation dune classe de test via un framework

Java, les fondamentaux

alphorm.com

Prsentation du langage Java


Compiler et excuter un
programme de test

Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Java, les fondamentaux

Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels

alphorm.com

Plan
Cration dun programme de test
Lancement dun programme de test JUnit

Java, les fondamentaux

alphorm.com

Cration dun programme de test


Il faut disposer des classes tester
Crer un programme avec un main
Compiler et excuter le programme
Vrifier les sorties

Java, les fondamentaux

alphorm.com

Programme de test JUnit


Avec un framework de test comme JUnit, construction des classes de

test simplifi
Lancement dun ihm spcifique

Java, les fondamentaux

alphorm.com

Ce quon a couvert
Cration dun programme de test
Lancement dun programme de test

Java, les fondamentaux

alphorm.com

Utiliser des primitives


Dclarer et initialiser des
variables de champs

Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Java, les fondamentaux

Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels

alphorm.com

Plan
Quest-ce quune primitive ?
Dclaration dun champ de donne
Initialiser un champ de donne

Java, les fondamentaux

alphorm.com

Quest-ce quune primitive ?


Les types primitifs sont les types fondamentaux de Java
Les donnes primitives sont places sur la pile
Les valeurs possibles sont dtermines par le type
Il nest pas possible de crer de nouveaux types primitifs

Java, les fondamentaux

alphorm.com

Dclaration dun champ de donne


La forme gnrale est : Type nomDeLaVariable;
On peut rajouter la visibilit
Et une valeur par dfaut

Java, les fondamentaux

alphorm.com

Initialiser un champ de donne


Par dfaut la valeur est 0, 0.0, null ou false suivant le type
Il faut donc en gnral donner une valeur ce champ
Initialiser par dfaut, lors de la dclaration
Ecrire le code dinitialisation dans un constructeur

Java, les fondamentaux

alphorm.com

Ce quon a couvert
Quest-ce quune primitive ?
Dclaration dun champ de donne
Initialiser un champ de donne

Java, les fondamentaux

alphorm.com

Utiliser des primitives


Dcrire les types primitifs

Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Java, les fondamentaux

Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels

alphorm.com

Plan
Les types entiers
Les types flottants
Le type caractre
Le type boolen

Java, les fondamentaux

alphorm.com

Les types entiers


Un octet sign : byte
Deux octets signs : short
Quatre octets signs : int
Huit octets signs : long
Pas de types non signs, mais des mthodes sur les types Integer et

Long pour grer larithmtique non signe


Les littraux sont typs : 4 est un int, 4L est un long

Java, les fondamentaux

alphorm.com

Les types flottants


32-bit IEEE 754 : float
64-bit IEEE 754 : double
Ne pas utiliser ces types pour des montaires, mais plutt BigDecimal
Les littraux sont typs : 5.6 est un double, 5.6F est un float

Java, les fondamentaux

alphorm.com

Le type caractre
Reprsent par char
16-bit Unicode, soit de \u0000 \uFFFF
Le type chane de caractre nest pas un type primitif (String)

Java, les fondamentaux

alphorm.com

Le type boolen
Une valeur soit true, soit false
La taille en mmoire nest pas prcise
Les boolens ne peuvent tre confondus ni avec des entiers, ni avec des

rfrence (null)

Java, les fondamentaux

alphorm.com

Ce quon a couvert
Les types entiers
Les types flottants
Le type caractre
Le type boolen

Java, les fondamentaux

alphorm.com

Utiliser des primitives


Dclarer des variables et
leur affecter des valeurs

Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Java, les fondamentaux

Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels

alphorm.com

Plan
Les variables en Java
Comportement des variables locales
Laffectation dune valeur une variable locale

Java, les fondamentaux

alphorm.com

Les variables en Java


Les variables sont dclares et types
Les variables attributs, ou champ de donne
Les variables paramtres
Les variables locales une mthode
Notez labsence de variable globale

Java, les fondamentaux

alphorm.com

Comportement des variables locales


Une variable locale est dclare lintrieur dune mthode
Elle disparat la fin du bloc { } dans lequel elle est dclare
Elle doit tre initialise avant dtre utilise

Java, les fondamentaux

alphorm.com

Laffectation dune variable locale


Pour tre utilise, une variable doit avoir une valeur :
linitialisation
Plus tard, en affectant une valeur calcule
Le compilateur identifie les chemins dans la mthode
Tous les chemins doivent donner une valeur la variable
Certaines variables sont utilises en retour de fonctions

Java, les fondamentaux

alphorm.com

Ce quon a couvert
Les variables en Java
Comportement des variables locales
Laffectation dune valeur une variable locale

Java, les fondamentaux

alphorm.com

Utiliser des primitives


Utiliser des constantes

Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Java, les fondamentaux

Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels

alphorm.com

Plan
Un mot cl pour crer une constante
Une constante en attribut, publique ou non
Une constante en variable locale

Java, les fondamentaux

alphorm.com

Un mot cl pour crer une constante


En utilisant le mot-cl final
Il faut donner une valeur la variable
Il est impossible de modifier la valeur donne
Le type de la variable est quelconque
Par convention, le nom de la variable est en majuscules

Java, les fondamentaux

alphorm.com

Une constante en attribut


Une constante en attribut peut-tre :
Une information constante pour le code de la classe -> private
Une information constante pour le reste du monde -> public
Un attribut publique et constant nest pas dangereux
Exemple : Math.PI

Java, les fondamentaux

alphorm.com

Une constante en variable locale


Une variable locale constante ne peut pas tre modifie dans sa porte
Elle interdit simplement toute modification
Elle est utilisable dans une classe anonyme de la mme porte
Dans le cas du paramtre, attention ne pas confondre avec les

const du C++

Java, les fondamentaux

alphorm.com

Ce quon a couvert
Un mot cl pour crer une constante
Une constante en attribut, publique ou non
Une constante en variable locale

Java, les fondamentaux

alphorm.com

Utiliser des primitives


Utiliser des oprateurs
arithmtiques

Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Java, les fondamentaux

Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels

alphorm.com

Plan
Les oprateurs arithmtiques en Java
Le comportement des types

Java, les fondamentaux

alphorm.com

Les oprateurs arithmtiques


Oprateurs +, -, / , *
Oprateurs combinant affectation et opration +=, -=, /=,*=
Oprateurs unaires ++, - Loprateur % (modulo)
Pas de surcharge possible des oprateurs
Il existe des oprateurs au niveau des bits : &, ~ , dcalage <<, >>,

Java, les fondamentaux

alphorm.com

Le comportement des types


Pour garder la prcision des calculs, on promeut les short et byte en int
Il vaut mieux donc utiliser des int
Les dbordements sur entiers ne sont pas grs comme sur les rels
Les littraux ont des types :
1 est un int
1.0 est un double

Java, les fondamentaux

alphorm.com

Ce quon a couvert
Les oprateurs arithmtiques en Java
Le comportement des types

Java, les fondamentaux

alphorm.com

Utiliser des objets


Dclarer et initialiser des
objets

Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Java, les fondamentaux

Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels

alphorm.com

Plan
Rfrence vs objet
Rfrence locale, paramtre
Rfrence en attribut

Java, les fondamentaux

alphorm.com

Rfrence vs objet
Un objet est une zone mmoire alloue avec un new
Pour garder un lien vers cette zone mmoire, on utilise une rfrence
Un objet ne peut pas tre manipul sans rfrence
Lors quun objet nest plus rfrenc, il est finalis
Voiture titine = new Voiture()

Java, les fondamentaux

alphorm.com

Rfrence locale, paramtre


Une rfrence vers un objet peut apparatre en paramtre
Lappelant doit fournir lobjet en question
Une rfrence peut tre une variable locale
Il faut initialiser cette variable :

partir dune autre rfrence

En crant un objet

Java, les fondamentaux

alphorm.com

Rfrence en attribut
Une rfrence peut tre un attribut
Il sagit dun lien vers un autre objet
Les rgles dinitialisation des types primitifs sappliquent
Valeur null par dfaut
Initialisation lors de la dclaration ou dans un constructeur

Java, les fondamentaux

alphorm.com

Ce quon a couvert
Rfrence vs objet
Rfrence locale, paramtre
Rfrence en attribut

Java, les fondamentaux

alphorm.com

Utiliser des objets


Stocker des objets en
mmoire

Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Java, les fondamentaux

Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels

alphorm.com

Plan
Un objet peut rfrencer dautres objets
Rgles daccs aux objets en mmoire

Java, les fondamentaux

alphorm.com

Un objet peut rfrencer dautres objets


Via des attributs en mmoire
Des graphes dobjets sont stocks en mmoire
Exemple :
Le gobelet rfrence des ds
Tant que le gobelet existe en mmoire, les ds aussi
La rgle dencapsulation sapplique, le gobelet ne peut accder aux

membres privs des ds

Java, les fondamentaux

alphorm.com

Rgles daccs aux objets


Les objets ne sont finaliss (ramasss) que lorsquils ne sont plus

rfrencs
Cette rgle sapplique aux graphes dobjets
Suppose que les rfrences sur objet sont comptes
Il faut que le dveloppeur pense mettre ses rfrences null

Java, les fondamentaux

alphorm.com

Ce quon a couvert
Un objet peut rfrencer dautres objets
Rgles daccs aux objets en mmoire

Java, les fondamentaux

alphorm.com

Utiliser des objets


Utiliser des rfrences
dobjets

Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Java, les fondamentaux

Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels

alphorm.com

Plan
Rfrence et objets
Accder un champ dun objet
Accder une mthode dun objet

Java, les fondamentaux

alphorm.com

Rfrence et objet
Un objet est accessible via les rfrences qui pointent vers lui
Une rfrence est un accs mmoire, mais non explicite
La slection des membres se fait avec loprateur .
Obtenir une rfrence un objet se fait :
En crant soi-mme lobjet
En invoquant une mthode qui cre lobjet et nous le retourne
En rcuprant la rfrence en paramtre

Java, les fondamentaux

alphorm.com

Accder un champ
Via une rfrence, on obtient un accs aux membres
Si le champ est accessible (champ public par exemple)
Avec un code genre : ref . attribut
Je peux lire, modifier lattribut de lobjet point par ref
Un accs direct un champ est rare, car cela ne respecte pas

lencapsulation

Java, les fondamentaux

alphorm.com

Accder une mthode


Via une rfrence, on accde aux traitements de lobjet
Lappel se ralise comme pour un attribut, mais avec des parenthses,

mme sil ny a pas de paramtres passer


Le dclenchement de la mthode suppose un effet sur lobjet :
La mthode nous retourne le rsultat dun calcul
La mthode modifie ltat de lobjet
En gnral, lobjet peut garder le rsultat du calcul lui-mme

Java, les fondamentaux

alphorm.com

Ce quon a couvert
Rfrence et objets
Accder un champ dun objet
Accder une mthode dun objet

Java, les fondamentaux

alphorm.com

Utiliser des objets


Utiliser les javadocs

Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Java, les fondamentaux

Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels

alphorm.com

Plan
Quest-ce que javadoc ?
Visiter la documentation de jse
Appliquer la documentation dans son code

Java, les fondamentaux

alphorm.com

Quest-ce que javadoc ?


Javadoc est un outil pour produire de la documentation technique
Il peut tre appliqu sur son propre projet
La structure de la documentation suit celle du projet
Les textes qui apparaissent sont des complments que lon peut ajouter

Java, les fondamentaux

alphorm.com

Visiter la documentation jse


Accder au site Oracle, ou bien en utiliser un tlchargement
Trouver le package, la classe, la mthode
La description contient des gnralits, des exemples
Voyons la classe Date, la classe Math

Java, les fondamentaux

alphorm.com

Appliquer la documentation au code


Avec la classe Date, crer une Date now et today
Un constructeur par dfaut qui crer un Date maintenant
Avec la classe Math, comprendre la description des champs
Voir le lien avec dautres classes, StrictMath

Java, les fondamentaux

alphorm.com

Ce quon a couvert
Quest-ce que javadoc ?
Visiter la documentation de jse
Appliquer la documentation dans son code

Java, les fondamentaux

alphorm.com

Utiliser des objets


Utiliser des objets String et
StringBuilder

Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Java, les fondamentaux

Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels

alphorm.com

Plan
La chane de caractres String
Les limites de la classe String
Lintrt de StringBuilder

Java, les fondamentaux

alphorm.com

La chane de caractres String


Une classe, avec des comportements
Une cration exceptionnelle, rappelant les types primitifs
Lapplication de loprateur +, y compris pour concatner des primitives
Mthode de manipulation de chane
Voir la documentation pour les dtails

Java, les fondamentaux

alphorm.com

Les limites de la classe String


Une String est immutable value
Toutes les mthodes qui semblent modifier lobjet String en cre un

autre
Trs peu efficace pour crer un buffer

Java, les fondamentaux

alphorm.com

Lintrt de StringBuilder
La classe StringBuilder na pas de relation de type avec String
Ddie la gestion de buffer
Ajout de morceaux de chanes
Troncature alatoire
On obtient tout moment le buffer via toString()

Java, les fondamentaux

alphorm.com

Ce quon a couvert
La chane de caractres String
Les limites de la classe String
Lintrt de StringBuilder

Java, les fondamentaux

alphorm.com

Utiliser des oprateurs et des


structures dcisionnelles
Oprateurs relationnels et
conditionnels

Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Java, les fondamentaux

Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels

alphorm.com

Plan
Les oprateurs relationnels
Les oprateurs conditionnels

Java, les fondamentaux

alphorm.com

Les oprateurs relationnels


Oprateur ==, !=, <,>,<=,>=
Evalus un boolen
Sappliquent tous les types primitifs
Sappliquent aussi aux rfrences, mais attention pas aux objets

Java, les fondamentaux

alphorm.com

Les oprateurs conditionnels


Les oprateurs &&, || sont court-circuit
Les oprateurs &,|,^ sappliquent comme sur les bits dun entier
Loprateur ! est NOT
Loprateur ternaire :
(a > b )? A : b
Si a est suprieur b alors a sinon b

Java, les fondamentaux

alphorm.com

Ce quon a couvert
Les oprateurs relationnels
Les oprateurs conditionnels

Java, les fondamentaux

alphorm.com

Utiliser des oprateurs et des


structures dcisionnelles
Tester lgalit entre chanes

Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Java, les fondamentaux

Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels

alphorm.com

Plan
Lgalit physique ou smantique des objets
La classe String et ses mthodes
== ou bien equals() ?

Java, les fondamentaux

alphorm.com

Lgalit smantique ou physique


Un objet est sur le tas et est rfrenc via une rfrence
Loprateur == sapplique sur la rfrence, test physique
Comparer deux objets en prenant en compte ce quils contiennent est

le test smantique
Le test smantique se fait PAR les objets eux-mmes
Il ny a pas de test smantique par dfaut en Java

Java, les fondamentaux

alphorm.com

La classe String et ses mthodes


Mthode equals : test dgalit de 2 objets String
String str1 String str2
Test : str1.equals(str2)
Mthode equalsIgnoreCase : test dgalit sans prendre en compte la

casse

Java, les fondamentaux

alphorm.com

== ou bien equals()
== est un test physique
Les mthodes equals ou equalsIgnoreCase testent le contenu
== peut servir identifier le contenu CAR String est une immutable

value

Java, les fondamentaux

alphorm.com

Ce quon a couvert
Lgalit physique ou smantique des objets
La classe String et ses mthodes
== ou bien equals() ?

Java, les fondamentaux

alphorm.com

Utiliser des oprateurs et des


structures dcisionnelles
Evaluer diffrentes
conditions et coder

Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Java, les fondamentaux

Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels

alphorm.com

Plan
Les expressions boolennes
Tester une seule condition, simple ou complexe
Tester une suite de condition
Un branchement complexe

Java, les fondamentaux

alphorm.com

Les expressions boolennes


Un expression boolenne est une expression dont lvaluation donne

true ou false
Un numrique ou une rfrence ne sont pas des boolens
Le type boolean reprsente une variable boolenne

Java, les fondamentaux

alphorm.com

Tester une seule condition


Pour tester une seule condition : if avec ou sans accolades
Il est courant de rajouter systmatiquement les accolades pour viter

une erreur future : les indentations ne comptent pas


Il est courant de rajouter un else car un if seul est peu lisible
La condition est mise entre parenthses
La condition peut tre complexe, utilisant les oprateurs boolens

Java, les fondamentaux

alphorm.com

Tester une suite de condition


Il faut enchaner les if et les else
La logique conditionnelle pose rapidement des problmes :
De lecture, le code est long lire
De fragilit, difficile de modifier une condition sans impact
Facile boguer, la logique est complique
Les conditions elles-mmes sont rapidement trop complexes

Java, les fondamentaux

alphorm.com

Un branchement complexe
Lorsquune seule variable est tester, pour un ensemble de valeurs
En utilisant switch / case , on simplifie un peu
Mais la variable est forcment primitive
Peu tre le signe dun manque de conception objet

Java, les fondamentaux

alphorm.com

Ce quon a couvert
Les expressions boolennes
Tester une seule condition, simple ou complexe
Tester une suite de condition
Un branchement complexe

Java, les fondamentaux

alphorm.com

Utiliser des oprateurs et des


structures dcisionnelles
Crer des if et if/else

Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Java, les fondamentaux

Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels

alphorm.com

Plan
Linstruction if
Le couple if / else
Lintense if / else / if /else /

Java, les fondamentaux

alphorm.com

Linstruction if
Linstruction if est suivie dune condition entre parenthses

Il y a une seule instruction derrire un if


Mais on va placer plusieurs instructions grce aux accolades

Java, les fondamentaux

alphorm.com

Le couple if / else
Un if sans else a t-il du sens ?

Une seule instruction aprs un else , ou bien des accolades

Java, les fondamentaux

alphorm.com

Lintense
Enchaner des if / else if / est rarement une bonne ide

Java, les fondamentaux

alphorm.com

Ce quon a couvert
Linstruction if
Le couple if / else
Lintense if / else / if /else /

Java, les fondamentaux

alphorm.com

Utiliser des oprateurs et des


structures dcisionnelles
Enchaner les conditions

Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Java, les fondamentaux

Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels

alphorm.com

Plan
Linstruction if / else
Le cas de la cration des objets
Que testent rellement les conditions ?

Java, les fondamentaux

alphorm.com

Linstruction if / else
Une instruction conditionnelle est rapidement invitable
Ne pas la rendre trop complexe
Eventuellement rduire la complexit

Java, les fondamentaux

alphorm.com

Le cas de la cration des objets


Pour crer un objet, il faut connatre sa classe
La logique conditionnelle est donc quasi-imparable

Java, les fondamentaux

alphorm.com

Que testent rellement les conditions ?


Il faut viter de tester le type des objets
Par instanceof
Par un autre moyen
Pour dclencher des mthodes sur des objets en fonctions des types, il

faut penser polymorphisme


Les conditions sont souvent des primitives
La combinaison des variables de conditions reflte le rsultat dune

mthode

Java, les fondamentaux

alphorm.com

Ce quon a couvert
Linstruction if / else
Le cas de la cration des objets
Que testent rellement les conditions ?

Java, les fondamentaux

alphorm.com

Utiliser des oprateurs et des


structures dcisionnelles
Linstruction switch

Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Java, les fondamentaux

Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels

alphorm.com

Plan
Forme gnrale du switch
Quand utiliser switch
Quand ne pas utiliser switch

Java, les fondamentaux

alphorm.com

Forme gnrale du switch


Il faut une variable, entire jusqu Java7, String compris depuis
Le cas par dfaut est optionnel

Java, les fondamentaux

alphorm.com

Quand utiliser le switch


Reste simple et invitable

Java, les fondamentaux

alphorm.com

Quand ne pas utiliser le switch


Expression complexe, qui pourrait tre remplace par une conception

plus pousse
Oublier le default

Java, les fondamentaux

alphorm.com

Ce quon a couvert
Forme gnrale du switch
Quand utiliser switch
Quand ne pas utiliser switch

Java, les fondamentaux

alphorm.com

Crer et utiliser des tableaux


Dclarer et instancier un
tableau 1 dimension

Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Java, les fondamentaux

Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels

alphorm.com

Plan
Quest-ce quun tableau ?
Tableau de primitives
Tableau dobjets

Java, les fondamentaux

alphorm.com

Quest-ce quun tableau ?


Le tableau est un objet
Il sinstancie avec un new
Son type et T[ ]
Il ne fournit aucune information, na aucune intelligence

Java, les fondamentaux

alphorm.com

Tableau de primitives
Un tableau de type primitifs contient les valeurs
Les valeurs sont mises 0 (en fonction du type)
Une seul new suffit disposer des donnes

Java, les fondamentaux

alphorm.com

Tableau dobjets
Le tableau dobjets nexiste pas
Le tableau est un tableau de rfrences
Les rfrences sont mises null
Il faut donc un autre new pour chaque objet dont on veut disposer

Java, les fondamentaux

alphorm.com

Ce quon a couvert
Quest-ce quun tableau ?
Tableau de primitives
Tableau dobjets

Java, les fondamentaux

alphorm.com

Crer et utiliser des tableaux


Dclarer et instancier un
tableau 2 dimensions

Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Java, les fondamentaux

Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels

alphorm.com

Plan
Quest-ce quun tableau deux dimensions?
Les services de ce tableau

Java, les fondamentaux

alphorm.com

Quest-ce quun tableau deux dimensions ?


On spcifie 2 dimensions, le tableau est donc une matrice
Il faut deux indices pour ranger un lment dans le tableau
On peut aussi linitialiser de faon statique

Java, les fondamentaux

alphorm.com

Les services de ce tableau


Lattribut en lecture seule length est disponible pour les 2

dimensions

Java, les fondamentaux

alphorm.com

Ce quon a couvert
Quest-ce quun tableau deux dimensions?
Les services de ce tableau

Java, les fondamentaux

alphorm.com

Crer et utiliser des tableaux


Utiliser une boucle for dans
le tableau

Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Java, les fondamentaux

Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels

alphorm.com

Plan
Les boucles for, while, do-while, for(each)
Le parcours du tableau une dimension
Le parcours du tableau 2 dimensions

Java, les fondamentaux

alphorm.com

Les boucles
La boucle while(cond) { }
La boucle do { } while(cond) ;
La boucle for( int i =0; i<cond; i++) { }
La boucle for ( E e: tab) { }

Java, les fondamentaux

alphorm.com

Parcourir un tableau une dimension


Avec une boucle for bas sur une variable
La variable de boucle est indice daccs dans le tableau
Avec une boucle for each
On ressort llement contenu dans le tableau

Java, les fondamentaux

alphorm.com

Parcourir un tableau deux dimensions


Avec une double boucle
Les variables de boucles sont les indices daccs aux lments du

tableau
La capacit du tableau length est utilise

Java, les fondamentaux

alphorm.com

Ce quon a couvert
Les boucles for, while, do-while, for(each)
Le parcours du tableau une dimension
Le parcours du tableau 2 dimensions

Java, les fondamentaux

alphorm.com

Crer et utiliser des tableaux


Crer et initialiser une
ArrayList

Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Java, les fondamentaux

Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels

alphorm.com

Plan
Quest-ce que java.util.ArrayList ?
Comment initialiser une ArrayList
Parcourir une ArrayList

Java, les fondamentaux

alphorm.com

Quest-ce quune ArrayList ?


Un objet de java.util
Tableau dynamique, se redimensionne seule
Offre des services supplmentaires

Java, les fondamentaux

alphorm.com

Comment initialiser une ArrayList


En la remplissant au fur et au mesure, avec add
En lui donnant une taille initiale

Java, les fondamentaux

alphorm.com

Parcourir une ArrayList


En utilisant un indice jusqu size
En utilisant le for each

Java, les fondamentaux

alphorm.com

Ce quon a couvert
Quest-ce que java.util.ArrayList ?
Comment initialiser une ArrayList
Parcourir une ArrayList

Java, les fondamentaux

alphorm.com

Crer et utiliser des tableaux


Utiliser linstruction import

Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Java, les fondamentaux

Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels

alphorm.com

Plan
Le package java.util
Utiliser import

Java, les fondamentaux

alphorm.com

Le package java.util
Les classes de collection se trouvent dans java.util
Voir la documentation
On ne peut pas utiliser le nom simple de la classe ArrayList, sans son

nom de package
Cela garantit labsence de collision entre les noms de classes

Java, les fondamentaux

alphorm.com

Linstruction import
Arbitrage entre utiliser le nom complet de la classe
Ou bien faire un import de la classe, et utiliser son nom court
Aucun impact sur le code gnr
Confort de codage et de lecture
Pas dimport du package lui-mme
On importe des classes dun package
On peut importer toutes les classes dun package

Java, les fondamentaux

alphorm.com

Ce quon a couvert
Le package java.util
Utiliser import

Java, les fondamentaux

alphorm.com

Crer et utiliser des tableaux


Accder une valeur dun
tableau

Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Java, les fondamentaux

Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels

alphorm.com

Plan
Accder aux valeurs dans un tableau
Accder aux valeurs dans une ArrayList

Java, les fondamentaux

alphorm.com

Accder aux valeurs dans un tableau


Le tableau supporte laccs alatoire
Avec loprateur [ ], on lit nimporte quelle valeur
Les dbordements sont reprs
Le mme oprateur permet dcrire
Le tableau ne se redimensionne pas

Java, les fondamentaux

alphorm.com

Accder aux valeur dune ArrayList


Ce tableau peut se redimensionner seul
Avec get(int), on obtient la ime valeur
Mais pour modifier le ime lment, utiliser add(int, E)

Java, les fondamentaux

alphorm.com

Ce quon a couvert
Accder aux valeurs dans un tableau
Accder aux valeurs dans une ArrayList

Java, les fondamentaux

alphorm.com

Crer et utiliser des tableaux


Utiliser le tableau args

Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Java, les fondamentaux

Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels

alphorm.com

Plan
Les arguments de la ligne de commande
Parcourir le tableau
Convertir les lments de ce tableau

Java, les fondamentaux

alphorm.com

Les arguments de la ligne de commande


Les arguments fournit aprs java app sur le ligne de commande
Spars par des blancs
Ce sont des chanes de caractres dans le main

Java, les fondamentaux

alphorm.com

Parcourir le tableau
Soit utiliser length, soit for each
La capacit du tableau est sa taille utile
Permet typiquement de passer des options lapplication
Utilisable mme avec netbeans ou eclipse

Java, les fondamentaux

alphorm.com

Convertir les lments du tableau


Pour tre exploitable, il faut souvent convertir en entiers ?
Integer.parseInt(str)
Attention prendre en compte des erreurs de type
Grer les exceptions
Rechercher le type

Java, les fondamentaux

alphorm.com

Ce quon a couvert
Les arguments de la ligne de commande
Parcourir le tableau
Convertir les lments de ce tableau

Java, les fondamentaux

alphorm.com

Utiliser des boucles


Coder une do/while

Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Java, les fondamentaux

Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels

alphorm.com

Plan
Les composants de la boucle do /while
Les composants de la boucle while
Les erreurs ne pas faire

Java, les fondamentaux

alphorm.com

Les composants de la boucle do/while


Un bloc de code excuter
Une condition respecter
Une condition darrt

Java, les fondamentaux

alphorm.com

Les composants de la boucle while


Une ou plusieurs instructions dans un bloc
Une condition pour arrter la boucle

Java, les fondamentaux

alphorm.com

Les erreurs ne pas faire


Pour le while , ne pas oublier les accolades si besoin
Que la condition permette de sortir de la boucle

Java, les fondamentaux

alphorm.com

Ce quon a couvert
Les composants de la boucle do /while
Les composants de la boucle while
Les erreurs ne pas faire

Java, les fondamentaux

alphorm.com

Utiliser des boucles


Dvelopper une boucle for

Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Java, les fondamentaux

Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels

alphorm.com

Plan
Les composants dune boucle for
Les avantages du for sur le while
Les critures limites du for

Java, les fondamentaux

alphorm.com

Les composants dune boucle for


Initialisation
Tant que
Incrment

Java, les fondamentaux

alphorm.com

Les avantages du for sur le while


Le for possde toujours 3 parties
On oublie moins la modification de la variable de boucle
Linitialisation est plus vidente

Java, les fondamentaux

alphorm.com

Les critures limites du for


Utiliser un for pour une boucle infinie
Oublier volontairement une partie du for
Mettre des listes dinitialisation
Mettre des listes dincrments
Utiliser des conditions darrt compliques

Java, les fondamentaux

alphorm.com

Ce quon a couvert
Les composants dune boucle for
Les avantages du for sur le while
Les critures limites du for

Java, les fondamentaux

alphorm.com

Utiliser des boucles


Utiliser des ArrayList dans
une boucle for

Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Java, les fondamentaux

Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels

alphorm.com

Plan
Remarques sur le contenu dune ArrayList
Parcourir une ArrayList en utilisant get
Parcourir une ArrayList en utilisant un itrateur

Java, les fondamentaux

alphorm.com

Remarques sur le contenu dune ArrayList


ArrayList est une implmentation tableau
Depuis Java5, ArrayList peut tre typ : ArrayList<String>
Avant, ArrayList contient des Object
Il est possible de rcuprer le ime lment du tableau
Lordre est conserv !

Java, les fondamentaux

alphorm.com

Parcourir une ArrayList avec get


Avec la mthode get , on peut passer un indice
Rcuprer le ime lment
La mthode size donne le nombre dlments prsents

Java, les fondamentaux

alphorm.com

Parcourir une ArrayList avec des itrateurs


Un itrateur est une sorte de curseur sur lArrayList
Il peut avancer et donner llment courant
Lindice auquel on accde nest plus important
Pratique si on veut juste parcourir du premier au dernier

Java, les fondamentaux

alphorm.com

Ce quon a couvert
Remarques sur le contenu dune ArrayList
Parcourir une ArrayList en utilisant get
Parcourir une ArrayList en utilisant un itrateur

Java, les fondamentaux

alphorm.com

Utiliser des boucles


Comprendre la porte des
variables

Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Java, les fondamentaux

Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels

alphorm.com

Plan
Dfinir la porte dune variable
Les variables locales et les paramtres
Les variables champ de donne
Pourquoi ny a t-il pas en Java de variable de porte globale ?

Java, les fondamentaux

alphorm.com

Dfinir la porte dune variable


La zone de code o laccs la variable est possible
Plus la porte est rduite, plus la gestion de la ressource est simple
La donne disparat elle-mme dans certains cas
Lorsquon sort de la porte dune rfrence, on naccde PLUS lobjet
En Java, les blocs { } limite la porte dune variable

Java, les fondamentaux

alphorm.com

Les variables locales et paramtres


Une variable locale ne peut pas tre utilise en dehors de la mthode

dans laquelle elle est dclare


Pour garder la donne, il faut la recopier dans une autre variable
Retour de fonction
Variable attribut
Les paramtres sont des sortes de variables locales
La valeur est fournie par lappelant

Java, les fondamentaux

alphorm.com

Les variables champ de donne


Un attribut, ou champ de donne a une porte limite par la classe
Il appartient lobjet ou la classe (cf static)
Lattribut a donc une porte suprieure celle dune variable locale

Java, les fondamentaux

alphorm.com

Pas de variables globales en Java


La porte ultime serait la variable globale
Mais ce type de porte pose des problmes
Difficile de matriser qui utilise la variable
Etat de la variable cahotique
Avec le static , certains essaient de recrer la situation dune porte

globale

Java, les fondamentaux

alphorm.com

Ce quon a couvert
Dfinir la porte dune variable
Les variables locales et les paramtres
Les variables champ de donne
Pourquoi ny a t-il pas en Java de variable de porte globale ?

Java, les fondamentaux

alphorm.com

Utiliser des mthodes


Crer et appeler des
mthodes

Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Java, les fondamentaux

Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels

alphorm.com

Plan
Crer une mthode dans une classe
Appeler une mthode

Java, les fondamentaux

alphorm.com

Crer une mthode


Pour raliser un traitement sur les donnes de lobjet
Une mthode a une implmentation
Pour proposer un service lextrieur
Une mthode a une signature
Les variables : locale, paramtre, champ
Le retour nest pas obligatoire

Java, les fondamentaux

alphorm.com

Appeler une mthode


Il faut accder un objet de ce type
Utiliser loprateur . pour slectionner la mthode
Passer des arguments
Utiliser ou non le retour

Java, les fondamentaux

alphorm.com

Ce quon a couvert
Crer une mthode dans une classe
Appeler une mthode

Java, les fondamentaux

alphorm.com

Utiliser des mthodes


Transmettre des arguments

Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Java, les fondamentaux

Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels

alphorm.com

Plan
Le passage des arguments lappel
Le passage de primitives
Le passage dobjets

Java, les fondamentaux

alphorm.com

Le passage des arguments lappel


Lors de lappel de la mthode, utiliser les parenthses
Les parenthses seules si pas dargument
La liste des arguments sans leurs types
Les arguments doivent correspondre aux types attendus
Il nest pas possible domettre des arguments
Pas de valeurs par dfaut sur les paramtres

Java, les fondamentaux

alphorm.com

Le passage de primitives
Les primitives sont toujours recopies dans la mthode
Les paramtres sont donc en IN
Il ny a aucun mot cl pour changer ce comportement
On dit que les primitives sont passes par valeur

Java, les fondamentaux

alphorm.com

Le passage des objets


Les objets sont rfrencs
La copie entire des objets nexiste pas en Java
Le passage ne concerne que les rfrences des objets
On dit que les objets sont passs par rfrences

Java, les fondamentaux

alphorm.com

Ce quon a couvert
Le passage des arguments lappel
Le passage de primitives
Le passage dobjets

Java, les fondamentaux

alphorm.com

Utiliser des mthodes


Crer des mthodes et des
variables statiques

Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Java, les fondamentaux

Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels

alphorm.com

Plan
Crer des variables statiques et les utiliser
Crer des mthodes statiques et les utiliser

Java, les fondamentaux

alphorm.com

Crer des variables statiques et les utiliser


Dfinition dune variable statique
Une variable qui est alloue en dehors des objets
La syntaxe pour dclarer un champ statique : static
Lintrt des champs statiques
Unicit de linformation pour tous les objets
Accs aux donnes sans objet
Utilisation dnonce : une variable globale en Java !!

Java, les fondamentaux

alphorm.com

Crer des mthodes statiques et les utiliser


Syntaxe de la mthode statique : static
Utilisation de la mthode statique : appel sur LA CLASSE
Do le nom : mthode de classe
Intrt : appeler une mthode sans crer un objet
Parce quaucun objet nexiste
Parce que la cration dun objet cote cher
Parce quon na pas accs lobjet

Java, les fondamentaux

alphorm.com

Ce quon a couvert
Crer des variables statiques et les utiliser
Crer des mthodes statiques et les utiliser

Java, les fondamentaux

alphorm.com

Utiliser des mthodes


Utiliser des modificateurs

Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Java, les fondamentaux

Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels

alphorm.com

Plan
Les modificateurs : public, protected, private
Visibilit par dfaut, sans modificateur
Visibilit private
Visibilit protected
Visibilit public

Java, les fondamentaux

alphorm.com

Les modificateurs
Un mot-cl que lon place avant la dclaration du membre
Les modificateurs de visibilit
Pour rgler lencapsulation
Les mots-cls static , final ,

Java, les fondamentaux

alphorm.com

La visibilit par dfaut


Un membre sans visibilit
Toutes les classes du mme package peuvent y accder
Intressant pour les infos/traitements partags par le package

Java, les fondamentaux

alphorm.com

La visibilit private
Pour protger les donnes internes lobjet
Accessible uniquement par le code de la classe elle-mme
Les membres private font partie de limplmentation

Java, les fondamentaux

alphorm.com

La visibilit protected
Un accs intermdiaire
Toutes les classes du package y accdent
Et aussi toutes les classes filles cf hritage
Permet douvrir un accs en direction des futures classes tendues
Intressant surtout pour les mthodes

Java, les fondamentaux

alphorm.com

La visibilit public
La visibilit la plus large
Expose les accs tout le code
Intressant surtout pour des mthodes
Des champs de donnes public devraient tre final
Correspond des offres de services pour lextrieur, qui appelle
Attention ne pas confondre visibilit et porte

Java, les fondamentaux

alphorm.com

Ce quon a couvert
Les modificateurs : public, protected, private
Visibilit par dfaut, sans modificateur
Visibilit private
Visibilit protected
Visibilit public

Java, les fondamentaux

alphorm.com

Utiliser des mthodes


Utiliser la surcharge des
mthodes

Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Java, les fondamentaux

Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels

alphorm.com

Plan
La syntaxe de la surcharge
Appeler une mthode surcharge
La surcharge et lhritage

Java, les fondamentaux

alphorm.com

La syntaxe de la surcharge
Plusieurs mthodes peuvent
avoir le mme nom,
avec des paramtres diffrents
La signature dune mthode comprend son nom ET ses arguments

Java, les fondamentaux

alphorm.com

Appeler une mthode surcharge


Choisir les arguments passer
Nombre darguments
Type des arguments
Le compilateur fait le bon appel
Tout est fig la compilation
On parle parfois de polymorphisme de surcharge

Java, les fondamentaux

alphorm.com

La surcharge et lhritage
La surcharge est rsolue travers lhritage
Une classe fille peut enrichir linterface en ajoutant une surcharge
Ne pas confondre
Surcharge
Redfinition

Java, les fondamentaux

alphorm.com

Ce quon a couvert
La syntaxe de la surcharge
Appeler une mthode surcharge
La surcharge et lhritage

Java, les fondamentaux

alphorm.com

Utiliser lencapsulation et les


constructeurs
Crer des constructeurs

Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Java, les fondamentaux

Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels

alphorm.com

Plan
Linitialisation des objets
Le rle des constructeurs
Les blocs dinitialisation

Java, les fondamentaux

alphorm.com

Linitialisation des objets


Les champs de donne sont mis 0
0 pour les entiers, 0.0 pour les flottants, \u0000 pour char
Pour les rfrences, null et false pour les boolens
Cette initialisation par dfaut est rarement suffisante
Il est possible de donner une valeur la dclaration du champ

Java, les fondamentaux

alphorm.com

Le rle des constructeurs


Par dfaut, le compilateur gnre un constructeur sans paramtre
La rcriture de ce constructeur est possible
Il est possible de crer dautres constructeurs, avec des signatures

diffrentes
Le rle du constructeur est dinitialiser les champs de lobjet
Afin que lobjet soit dans un bon tat

Java, les fondamentaux

alphorm.com

Les blocs dinitialisation


On peut simplement crire un bloc {} dans lequel on initialise les

champs
Ce bloc peut tre marqu static , dans ce cas ce bloc sert initialiser

les champs static

Java, les fondamentaux

alphorm.com

Ce quon a couvert
Linitialisation des objets
Le rle des constructeurs
Les blocs dinitialisation

Java, les fondamentaux

alphorm.com

Utiliser lencapsulation et les


constructeurs
Implmenter lencapsulation

Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Java, les fondamentaux

Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels

alphorm.com

Plan
Lencapsulation par la visibilit des membres
Lencapsulation par la visibilit des classes

Java, les fondamentaux

alphorm.com

Lencapsulation par la visibilit des membres


Les membres dans une classe sont par dfaut accessible des autres

classes du package
Les visibilits public , protected et private permettent de

rgler ces accs


Ces visibilits sentendent par rapport la classe
Cela na pas de rapport avec la porte

Java, les fondamentaux

alphorm.com

Lencapsulation par la visibilit des classes


Une classe par dfaut nest accessible que depuis son package
Une classe peut tre public , et elle devient accessible de lextrieur
Cela na pas de rapport avec la porte
Un package bien construite propose un ou plusieurs points dentre,

mais ne montre pas toutes les classes quil contient

Java, les fondamentaux

alphorm.com

Ce quon a couvert
Lencapsulation par la visibilit des membres
Lencapsulation par la visibilit des classes

Java, les fondamentaux

alphorm.com

Concepts avancs
Utiliser lhritage

Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Java, les fondamentaux

Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels

alphorm.com

Plan
La relation de gnralisation-spcialisation
Les consquences en termes dhritage
Le mot-cl extends

Java, les fondamentaux

alphorm.com

La relation de gnralisation-spcialisation
Une relation statique entre classe
Qui relie un concept gnral un concept spcialis
Chat->Flin
Qui vite les doublons
Les membres de Flin sont hrits par le Chat
Qui introduit des variations sur un thme
Le Chat parle dune faon spcifique

Java, les fondamentaux

alphorm.com

Les consquences en terme dhritage


Les membres sont tous hrits
Les membres publiques de lanctre restent publiques sur la classe fille
Seuls les membres privs de lanctre sont inaccessibles de la fille
La classe fille peut complter
Les mthodes en en ajoutant
Les champs de donnes en en ajoutant
Les mthodes en les redfinissant

Java, les fondamentaux

alphorm.com

Le mot cl extends
La relation de gnralisation-spcialisation correspond une extension
De type
De comportement
Le mot cl extends suffit tablir la relation
La classe fille se substitue alors a sa mre

Java, les fondamentaux

alphorm.com

Ce quon a couvert
La relation de gnralisation-spcialisation
Les consquences en termes dhritage
Le mot-cl extends

Java, les fondamentaux

alphorm.com

Concepts avancs
Polymorphisme

Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Java, les fondamentaux

Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels

alphorm.com

Plan
La redfinition des mthodes
Mettre en uvre le polymorphisme
Savoir utiliser le polymorphisme

Java, les fondamentaux

alphorm.com

La redfinition des mthodes


La relation de gnralisation-spcialisation suppose lhritage des

membres de la classe mre par la classe fille


Cette relation est utile lorsque la sous-classe est une spcialisation de la

super-classe
Cette spcialisation peut tre due une redfinition de certains

comportements
Redclarer dans la sous-classe la mme mthode que dans la super-classe,
mais modifier le corps de la mthode

Java, les fondamentaux

alphorm.com

Mettre en uvre le polymorphisme


Il suffit de :
Disposer dun hritage
Redfinir une mthode
Pointer sur un objet en tant que super-classe
Appeler la mthode redfinie

Java, les fondamentaux

alphorm.com

Savoir utiliser le polymorphisme


Utiliser le polymorphisme lorsquon identifie une comportement qui

dpend du type de lobjet


Ne pas tester le type des objets
Moindre usage de la logique conditionnelle
Arbitrage entre simplicit et scurit des appels

Java, les fondamentaux

alphorm.com

Ce quon a couvert
La redfinition des mthodes
Mettre en uvre le polymorphisme
Savoir utiliser le polymorphisme

Java, les fondamentaux

alphorm.com

Concepts avancs
Utiliser des super-classes et
des sous-classes

Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Java, les fondamentaux

Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels

alphorm.com

Plan
Des super-classes pour factoriser les membres
Substituer des sous-classes aux super-classes
Spcialiser les comportements des sous-classes

Java, les fondamentaux

alphorm.com

Des super-classes pour factoriser


Lorsque des classes contiennent des membres communs
Faire apparatre une super-classe qui regroupe ces membres communs
Cette super-classe peut tre abstraite
Elle peut contenir une ou plusieurs mthodes abstraites

Java, les fondamentaux

alphorm.com

Substituer des sous-classes


Une sous-classe doit tre conforme linterface de la super-classe
Elle contient 100% des donnes
Elle rpond 100% des mthodes
La signification des mthodes doit tre conforme

Java, les fondamentaux

alphorm.com

Spcialiser le comportement
Une sous-classe peut proposer des attributs et des mthodes en plus
Elle peut redfinir une ou plusieurs mthodes
Mme signature, mais corps diffrent
Le comportement diffrent repose sur le fait que la mthode sexcute

diffremment
Pas de mot-cl spcifique, mais une annotation optionnelle

Java, les fondamentaux

alphorm.com

Ce quon a couvert
Des super-classes pour factoriser les membres
Substituer des sous-classes aux super-classes
Spcialiser les comportements des sous-classes

Java, les fondamentaux

alphorm.com

Concepts avancs
Ajouter un niveau
dabstraction

Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Java, les fondamentaux

Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels

alphorm.com

Plan
Les abstractions en Java : classes et interfaces
Intrts dutiliser des abstractions
Les abstractions dans le framework
Analyse et conception

Java, les fondamentaux

alphorm.com

Les abstractions en Java


Une classe abstraite
Est une classe qui ne peut pas tre instancie
Peut contenir des mthodes abstraites
Contient en gnral des attributs et des mthodes implmentes
Une interface
Est un type non instanciable
Ne peut contenir aucune implmentation dinstance

Java, les fondamentaux

alphorm.com

Intrts des abstractions


Une abstraction est stable
Le code qui utilise une abstraction ne bouge pas
Une abstraction sert de point de stabilit entre modules

Java, les fondamentaux

alphorm.com

Les abstractions dans le framework


Exemple dune classe abstraite : AbstractList
On hrite dune classe abstraite pour profiter dune partie dimplmentation
Exemple dune interface : ActionListener
Pour introduire une fonction de rappel en face dun bouton

Java, les fondamentaux

alphorm.com

Analyse et conception
Une abstraction en analyse
Une classe abstraite pour factoriser des donnes et des traitements
Exemple de la bibliothque
Une abstraction en conception
Indpendance des modules via une interface

Java, les fondamentaux

alphorm.com

Ce quon a couvert
Les abstractions en Java : classes et interfaces
Intrts dutiliser des abstractions
Les abstractions dans le framework
Analyse et conception

Java, les fondamentaux

alphorm.com

Concepts avancs
Les interfaces en Java

Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Java, les fondamentaux

Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels

alphorm.com

Plan
Dfinition et syntaxe des interfaces
Dfinir une interface
Implmenter une interface
Cas dusage connus

Java, les fondamentaux

alphorm.com

Dfinition et syntaxe dune interface


Une interface est un type sans implmentation
Dans son propre fichier
Impossible dimplmenter les mthodes
Les mthodes sont forcment public
Si des attributs existent, ils sont static , final et public

Java, les fondamentaux

alphorm.com

Dfinir une interface


En tant que code client
Jai besoin de telles et telles mthodes
Mais je nai pas besoin de savoir comment elles sont implmentes

Java, les fondamentaux

alphorm.com

Implmenter une interface


Sengager fournir une implmentation pour chaque mthode prvue

par linterface
Le compilateur vrifie la prsence de cette implmentation

Java, les fondamentaux

alphorm.com

Cas dusage connus


Interconnexions entre modules
Dfinition des services dobjets distribus
Sous-interface de Remote
Dfinition des webservices
Abstraction des conteneurs : List, Set, Map

Java, les fondamentaux

alphorm.com

Ce quon a couvert
Dfinition et syntaxe des interfaces
Dfinir une interface
Implmenter une interface
Cas dusage connus

Java, les fondamentaux

alphorm.com

La gestion des erreurs


Les diffrents types derreur

Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Java, les fondamentaux

Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels

alphorm.com

Plan
Les erreurs de syntaxe
Les erreurs de logique, de programmation
Les erreurs exceptionnelles dues lenvironnement

Java, les fondamentaux

alphorm.com

Les erreurs de syntaxe


Empchent la compilation
Seront corriges pour livrer
Attention, en Java la compilation de chaque classe est indpendante
Exemple : erreur de syntaxe empchant la compilation

Java, les fondamentaux

alphorm.com

Les erreurs de logique, de programmation


Une bonne lecture limine 80% des erreurs
Nont pas tre gres
Doivent tre corriges par le dveloppeur
Garder un code lisible
Rflchir la conception avant dcrire le code
Exemple : une variable rfrence nest pas initialise

Java, les fondamentaux

alphorm.com

Les erreurs exceptionnelles


Dues lenvironnement dexcution, difficiles prvoir
Sont souvent gres : le compilateur les dtecte
Typiquement non prises en compte lors du prototypage
Exemple : un fichier nexiste pas alors quil devrait

Java, les fondamentaux

alphorm.com

Ce quon a couvert
Les erreurs de syntaxe
Les erreurs de logique, de programmation
Les erreurs exceptionnelles dues lenvironnement

Java, les fondamentaux

alphorm.com

La gestion des erreurs


Prsentation des types
dexceptions

Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Java, les fondamentaux

Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels

alphorm.com

Plan
Nature de lexception
Les exceptions runtime
Les exceptions gres
Les exceptions de lutilisateur

Java, les fondamentaux

alphorm.com

Nature de lexception
Une exception est un objet
Dune classe qui hrite de java.lang.Exception
Cet objet est cr lors de la leve de lexception
Il est rcupr dans le bloc du gestionnaire derreur

Java, les fondamentaux

alphorm.com

Les exceptions runtime


Exceptions qui correspondent des erreurs de programmation
Ne sont pas gres : non signales par le compilateur
NullPointerException : accs un membre via une rfrence null
IllegalArgumentException : largument ne correspond pas lattendu
ArrayIndexOutOfBoundException : dbordement dun tableau
ArithmeticException : exceptions comme la division entire par zro

Java, les fondamentaux

alphorm.com

Les exceptions gres


Ces exceptions correspondent des erreurs dues lenvironnement
Ressources non disponibles, manque de droits daccs,
Spcifies par les mthodes
Prise en compte par le compilateur qui oblige grer lappel
FileNotFoundException : fichier non trouv
IOException : problme daccs aux entres-sorties
SqlException : erreur remonte du SGBD

Java, les fondamentaux

alphorm.com

Les exceptions de lutilisateur


Crer une classe qui hrite de java.lang.Exception
Attributs, mthodes, constructeurs comme toute classe
Crer un objet de cette classe et utiliser throw
Les erreurs bas-niveau doivent tre signales par des exceptions

Java, les fondamentaux

alphorm.com

Ce quon a couvert
Nature de lexception
Les exceptions runtime
Les exceptions gres
Les exceptions de lutilisateur

Java, les fondamentaux

alphorm.com

La gestion des erreurs


Utiliser Javadocs pour
rechercher des exceptions

Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Java, les fondamentaux

Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels

alphorm.com

Plan
Le rle du compilateur pour les exceptions gres
La spcification des exceptions par les mthodes

Java, les fondamentaux

alphorm.com

Le rle du compilateur
Le compilateur lit la spcification des exceptions
Il engage le dveloppeur grer les exceptions
Ce contrle nest pas ralis pour les exceptions runtime

Java, les fondamentaux

alphorm.com

La spcification des exceptions


La documentation rfrence les exceptions leves par les mthodes
Trouver la classe qui contient la mthode
Trouver la spcification des exceptions
Pour les exceptions gres, le compilateur nous guide
Exemple : Integer.parseInt()

Java, les fondamentaux

alphorm.com

Ce quon a couvert
Le rle du compilateur pour les exceptions gres
La spcification des exceptions par les mthodes

Java, les fondamentaux

alphorm.com

La gestion des erreurs


Ecrire du code pour grer
les exceptions

Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Java, les fondamentaux

Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels

alphorm.com

Plan
Grer une exception dtecte par le compilateur
Lever une exception
Crer son propre type dexception
Rinterprter une exception

Java, les fondamentaux

alphorm.com

Grer une exception


Le mot-cl try permet disoler le code nominal
Correspond une mthode
Suivi de un ou plusieurs blocs catch qui sont typs par une classe

dexception
Soit le try sexcute puis le code aprs les catch
Soit le try est interrompu et un catch est excut, puis le code aprs le

catch
Possibilit de placer un bloc finally , toujours excut

Java, les fondamentaux

alphorm.com

Lever une exception


Utiliser le mot-cl throw pour lever une exception
Cette exception est simplement un objet cr pour loccasion
Branchement lexcution vers le plus proche catch
Remonte vers les appelants en cherchant un bloc catch qui accepte lobjet
lev
Il faut spcifier la leve dexception dans la signature de la mthode
Sauf pour une exception runtime

Java, les fondamentaux

alphorm.com

Crer son propre type dexception


Crer une classe qui hrite (au moins) de java.lang.Exception
Dclarer les membres et constructeurs ncessaires
Pour capter le contexte derreur ( la construction de lobjet, throw )
Pour restituer les infos sur lerreur (dans un catch )
Lever cette exception lorsquon dtecte les situations irrcuprables

Java, les fondamentaux

alphorm.com

Rinterprter une exception


Dans un bloc catch, relancer une exception
Pour rinterprter lexception, la nouvelle exception tant :
Plus claire dans le contexte de lutilisateur
Traduite dans la culture du poste
Dune granularit diffrente de lexception dorigine
Loccasion de rtablir ltat du systme

Java, les fondamentaux

alphorm.com

Ce quon a couvert
Grer une exception dtecte par le compilateur
Lever une exception
Crer son propre type dexception
Rinterprter une exception

Java, les fondamentaux

alphorm.com

Vue densemble
Crer des packages et des
fichier .jar

Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Java, les fondamentaux

Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels

alphorm.com

Plan
Les packages
Les fichiers .jar
Utiliser des fichiers .jar pour livrer une application

Java, les fondamentaux

alphorm.com

Les packages
Conceptuellement : un regroupement de classes
Physiquement : un rpertoire qui contient les fichiers .java
Logiquement : un sous-systme qui isole des classes travaillant

ensemble et proposant des points dentre

Java, les fondamentaux

alphorm.com

Les fichiers .jar


Cr par loutil jar (disponible dans le jdk)
Fichier compress zipp
Contient tout et nimporte quoi, mais surtout :
Des fichiers .class (binaire Java)
Un manifeste : description du contenu, en particulier la classe qui contient le
main

Java, les fondamentaux

alphorm.com

Utiliser les fichiers .jar pour livrer


Il ny a pas dexe en Java
Pour livrer une bibliothque de classes
Les classes restent organises en packages, rpertoires
Pour livrer une application
En spcifiant la classe principale

Java, les fondamentaux

alphorm.com

Ce quon a couvert
Les packages
Les fichiers .jar
Utiliser des fichiers .jar pour livrer une application

Java, les fondamentaux

alphorm.com

Vue densemble
Architecture en 2 ou 3
niveaux

Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Java, les fondamentaux

Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels

alphorm.com

Plan
Architecture et niveaux
Architecture 2 niveaux
Architecture 3 niveaux

Java, les fondamentaux

alphorm.com

Architecture et niveaux
Larchitecture est leffort dorganisation gnrale de lapplication
La conception devra se conformer larchitecture
Faire plusieurs niveaux permet de sparer les responsabilits
Amliorer la maintenabilit de chaque niveau
Amliorer la cohrence
Favoriser lvolutivit

Java, les fondamentaux

alphorm.com

Architecture 2 niveaux
Sparer la prsentation et des donnes
Rpartir ou pas les services de lapplication
Architecture logique, pas forcment physique
Client-serveur
En Java, la communication est : socket, RMI, jdbc

Java, les fondamentaux

alphorm.com

Architecture 3 niveaux
Prsentation services donnes
Architecture logique qui peut correspondre ou pas au physique
En Java :
prsentation sous HTML, JSP, Servlet, Swing.
services : classes Java, Servlet,
Donnes accessibles via javabeans, EJB, jdbc

Java, les fondamentaux

alphorm.com

Ce quon a couvert
Architecture et niveaux
Architecture 2 niveaux
Architecture 3 niveaux

Java, les fondamentaux

alphorm.com

Vue densemble
Exemples dapplications Java

Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Java, les fondamentaux

Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels

alphorm.com

Plan
Lapplication standalone, console
Lapplication Applet
Lapplication Servlet, associe JSP
Lapplication Android

Java, les fondamentaux

alphorm.com

Lapplication standalone, console


Avec une classe qui a un main
Cette mthode est le point dentre de lapplication
Le main est excut squentiellement
Une ihm graphique peut tre gre
Excut sur le systme dexploitation
Cas particulier de Java Web Start

Java, les fondamentaux

alphorm.com

Lapplication Applet
Une applet hrite de Applet
Instancie et excute dans le contexte dun navigateur
Un cycle de vie spcifique
Accs limit au systme
Dploiement via un accs http

Java, les fondamentaux

alphorm.com

Lapplication Servlet
Un servlet hrite de Servlet
Est instancie et excute sur un serveur
Conteneur de servlet
Rpond aux mthodes HTTP (Get, Post)
Peut crire du HTML, mais plutt logique applicative
Est souvent associe la technique des JSP

Java, les fondamentaux

alphorm.com

Lapplication Android
Une application Java spciale
Machine virtuelle spcifique
API spcifique
Cycle de vie contraint
Typiquement construite avec un IDE spciale

Java, les fondamentaux

alphorm.com

Ce quon a couvert
Lapplication standalone, console
Lapplication Applet
Lapplication Servlet, associe JSP
Lapplication Android

Java, les fondamentaux

alphorm.com

Conclusion
Conclusion

Site : http://www.alphorm.com
Blog : http://www.alphorm.com/blog
Forum : http://www.alphorm.com/forum
Java, les fondamentaux

Fabien Brissonneau
Consultant, concepteur et formateur
Objets Logiciels

alphorm.com

Plan
Prsentation de la technologie Java

Concepts avancs de lobjet

Penser en termes objet

Gestion des erreurs

Prsentation du langage Java

Vue densemble

Utiliser des variables primitives


Utiliser des objets
Utiliser des oprateurs et des dcisions
Crer et utiliser des tableaux
Utiliser des structures en boucles
Utiliser des mthodes et la surcharge
Utiliser lencapsulation et les constructeurs
Java, les fondamentaux

alphorm.com

Pour continuer
Le module avanc de la formation Java
Ne pas oublier la documentation Javadoc, en ligne ou sur le poste

Java, les fondamentaux

alphorm.com

You might also like