Contenu connexe Similaire à Alphorm.com Formation Java, les fondamentaux (20) Alphorm.com Formation Java, les fondamentaux 1. Présentation de la formation
Java les fondamentaux
(examen 1Z0-803)
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
Java, les fondamentaux alphorm.com™©
2. Plan
• Présentation du formateur
• Les autres formations sur Alphorm
• Qu’est-ce que Java ?
• Le plan de la formation
• Présentation des outils
• Les publics concernés
Java, les fondamentaux alphorm.com™©
3. Présentation du formateur
• Fabien Brissonneau
• Email : fabien.brissonneau@gmail.com
• Consultant Concepteur et Formateur
• Missions d’architecture, de conception , de réalisation logicielles
• Fondateur de eiXa6
• Actuellement en mission sur un projet de gestion
• Mes références :
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™©
6. Qu’est-ce que Java ?
• Langage de programmation généraliste
• Créé en 1995 par Sun, héritant du C++
• Géré en communauté
• Langage de programmation objet
• Avec un très grande bibliothèque de classes
Java, les fondamentaux alphorm.com™©
7. Le plan de la formation
• Présentation de la technologie Java
• Penser en termes objet
• Présentation du langage Java
• Utiliser des variables primitives
• Utiliser des objets
• Utiliser des méthodes et la
surcharge
• Utiliser l’encapsulation et les
constructeurs
• Concepts avancés de l’objet
• Gestion des erreurs
• Utiliser des opérateurs et des
décisions
• Créer et utiliser des tableaux
• Utiliser des structures en boucles
• Vue d’ensemble
Java, les fondamentaux alphorm.com™©
9. Présentation des outils
• Le site de Oracle sera utilisé pour télécharger
Les outils en ligne de commande
La bibliothèque de base
Un IDE, Netbeans
• Nous utiliserons aussi Eclipse
• La présentation sera faite sous Windows 7
Java, les fondamentaux alphorm.com™©
10. Les publics concernés
• Cette formation est la première de 2 formations certifiantes
• Java SE7
• La formation suivante est Java avancé !
Java, les fondamentaux alphorm.com™©
11. Scoop
• Formation à apparaitre prochainement sur alphorm
Java, les fondamentaux alphorm.com™©
12. Allons-y !…
• Nous pouvons démarrer !!
Java, les fondamentaux alphorm.com™©
13. Présentation
Associer Java à d’autres
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
langages
Java, les fondamentaux alphorm.com™©
14. Plan
• Historique
• Caractéristiques essentielles du langage
• Comparer Java à C++
• Comparer Java à C#
• Comparer Java à Python
Java, les fondamentaux alphorm.com™©
15. Historique
• Démarre 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™©
16. Caractéristiques essentielles
• Langage à la syntaxe simple
• Langage généraliste
• Langage indépendant de la plateforme
• Langage orienté objet
• Langage prévu pour le support du réseau
Java, les fondamentaux alphorm.com™©
17. Comparer Java à C++
• Objectifs : C++ est proche du système, Java a une grande couche d’abstraction
• Syntaxe : C++ a une syntaxe complexe et pleine de surprises, Java a une syntaxe simple
• Bibliothèque standard : la bibliothèque du C++ est le plus petit commun à toute
application, Java a une bibliothèque très large
• Exécution : C++ est natif, Java tourne sur une machine virtuelle
• Paradigme de programmation : C++ favorise un mélange des façons de programmer, Java
est fortement orienté objet
• Mémoire : en C++, la gestion de la mémoire 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™©
18. Comparer Java à C#
• Objectifs : C# est lié au monde Microsoft et Java n’est pas lié à un constructeur
• Syntaxe : C# et Java ont une syntaxe simple. C# ajoute quelques éléments, qui
rapellent le C++
• Bibliothèque standard : les bibliothèques Java et DotNet sont très larges
• Exécution : C# et Java tournent sur une machine virtuelle, avec compilation JIT
• Paradigme de programmation : C# et Java sont fortement orientés objet
• Mémoire : C# et Java utilisent un ramasse-miette
• Origine et évolution : C# est un langage d’origine Microsoft
Java, les fondamentaux alphorm.com™©
19. Comparer Java à Python
• Objectifs : Python est plus un langage de « glue », là où Java servirait à créer les
composants liés
• Syntaxe : Python utilise les indentations, limite la verbosité. Java comme Python
ont peu de types de base
• Bibliothèque standard : les bibliothèques Java et Python sont très larges
• Exécution : Python est interprété, son bytecode est invisible. La phase de
compilation du source Java en bytecode est clairement identifiée
• Paradigme de programmation : Python et Java sont orientés objet, mais Python
s’utilise souvent comme un langage de script
• Mémoire : Python et Java utilisent un ramasse-miette
• Origine et évolution : Python est d’origine associative, PSF
Java, les fondamentaux alphorm.com™©
20. Ce qu’on a couvert
• Nous avons rappelé les caractéristiques essentielles de Java
• Nous avons comparé Java à d’autres de langages comparables
• Par rapport à ces langages, Java apparaît comme :
Un langage à la syntaxe simple
Un langage qui permet une bonne productivité
Un langage fortement typé, qui guide le développeur
Fortement orienté objet
Avec une grande bibliothèque standard
Ouvert sur le monde
Java, les fondamentaux alphorm.com™©
21. Présentation
Téléchargement et
installation de Java
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
Java, les fondamentaux alphorm.com™©
22. Plan
• Où trouver Java ?
• Les téléchargements disponibles
• Installation des outils Java
• Configuration de l’environnement de travail Java
Java, les fondamentaux alphorm.com™©
23. Où trouver Java ?
• Le nécessaire pour exécuter : www.java.com
• Le kit de développement : 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 nouveautés Java sont
émises sous la forme de Java Specification Request : www.jcp.org
• Oracle participe aussi à OpenJDK
Java, les fondamentaux alphorm.com™©
24. Les téléchargements disponibles
• Les éditions Java : Java SE, Java EE, Java ME
• Standard Edition : JRE complet + outils pour développer (compilateur,
débuggeur, moniteur)
• Enterprise Edition : concerne les applications serveur (multi-tier,
sécurisées,…)
Glassfish
API supplémentaire, documentation et exemples
• EE Web Profile : sous-ensemble ne concernant que les applis Web
• Micro Edition : pour des applications embarquées, mémoire limitées,
accès permanent au réseau, etc
Java, les fondamentaux alphorm.com™©
25. Installation des outils
• JDK SE : téléchargement, installation sous différentes plateformes
• Téléchargement et installation avec ou sans NetBeans (netbeans.org)
• Le JRE sera installé dans : program files/Java/jre8
• Il faut avoir les droits d’administration
• NetBeans 8 utilise n’importe quel jdk 7 ou 8, il le référence par jdkhome
Java, les fondamentaux alphorm.com™©
26. Configuration des outils
• Netbeans
• Eclipse
• Ligne de commande
PATH
CLASSPATH
JAVA_HOME / JRE_HOME
Java, les fondamentaux alphorm.com™©
27. Ce qu’on a couvert
• Où trouver Java ?
• Les téléchargements disponibles
• Installation des outils Java
• Configuration de l’environnement de travail Java
Java, les fondamentaux alphorm.com™©
28. Présentation
Les technologies Java
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
Java, les fondamentaux alphorm.com™©
29. Plan
• Java SE
• Java EE
• Embedded Java
Java, les fondamentaux alphorm.com™©
30. Java SE
• Version standard de la livraison Java
• Le Java Development Kit (JDK) incluant le SDK JavaFX
• Le Java Runtime Environment (JRE) permettant d’exécuter les
applications
• Le runtime JavaFX
• La machine virtuelle Oracle JRockit
Java, les fondamentaux alphorm.com™©
31. Java EE
• Version entreprise de Java
• Il existe 2 profils : EE SDK et EE Web Profile SDK
• Les deux versions sont livrées avec Glassfish
• Exemples de code, documentation et tutoriel
• Une plateforme pour déployer des applications d’entreprise
(robustesse, Web services, déploiement facilité)
Java, les fondamentaux alphorm.com™©
32. Embedded Java
• Java pour environnements pauvres en ressources
• 2 options proposées : Java ME Embedded et Java ME Embedded Client
Java, les fondamentaux alphorm.com™©
33. Ce qu’on a couvert
• Java SE
• Java EE
• Embedded Java
Java, les fondamentaux alphorm.com™©
34. Présentation
Caractéristiques principales
et les avantages de la
technologie Java
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
Java, les fondamentaux alphorm.com™©
35. Plan
• Syntaxe du langage Java
• Les bibliothèques Java
• La machine virtuelle
• La gestion de la ressource mémoire
• L’ouverture des technologies
Java, les fondamentaux alphorm.com™©
36. La syntaxe du langage Java
• Une syntaxe rappelant celle du C++
• Simple et productive
• Pas de pièges, objectif de lisibilité maximale
Java, les fondamentaux alphorm.com™©
37. Les bibliothèques Java
• Les bibliothèques standard sont très larges
• Couvrent tous les aspects d’une aplication
• Evitent le besoin de réinventer l’existant
• De nombreuses bibliothèques de tiers
Java, les fondamentaux alphorm.com™©
38. La machine virtuelle
• A l’origine, une machine logicielle qui interprète du bytecode
• Le code Java est compilé explicitement en bytecode
• Les machines virtuelles compilent Just In Time
• Un bytecode et une machine très optimisés
Java, les fondamentaux alphorm.com™©
39. La gestion de le ressource mémoire
• La mémoire n’est pas gérée explicitement par le développeur
• Un thread de la JVM se charge de la gestion
• Les zones mémoire plus utilisées sont récupérées
• La responsabilité du développeur est de rendre la main
Java, les fondamentaux alphorm.com™©
40. L’ouverture des technologies
• Le processus d’évolution du langage est ouvert
• Les spécifications sont ouvertes (JVM)
• De nombreux intervenants proposent des composants
• Certains on tendance à tirer à eux les standards
Java, les fondamentaux alphorm.com™©
41. Ce qu’on a couvert
• Syntaxe du langage Java
• Les bibliothèques Java
• La machine virtuelle
• La gestion de la ressource mémoire
• L’ouverture des technologies
Java, les fondamentaux alphorm.com™©
42. Présentation
Utiliser un environnement
de développement intégré
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
Java, les fondamentaux alphorm.com™©
43. Plan
• L’IDE Netbeans
• Créer un projet
• Produire à partir du projet
• L’IDE Eclipse
Java, les fondamentaux alphorm.com™©
44. Netbeans
• Environnement d’origine 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™©
45. Créer un projet
• La notion de projet n’est pas Java
• Il faut créer un projet Netbeans
• Le source Java est créé/compilé à partir de ce projet
• Le projet peut aussi référencer des éléments extérieurs
• Le projet est « typé », les répertoires sont différemment organisés
Java, les fondamentaux alphorm.com™©
46. Produire à partir du projet
• Production de .class, issus de la compilation
• Génération de fichiers zippés comme les « jar »
• Génération de la documentation technique
Java, les fondamentaux alphorm.com™©
47. L’IDE Eclipse
• Eclipse est une plateforme d’origine IBM
• Largement utilisée
• Indépendante de Java
• Plateforme sur laquelle on installe des plugs in
• Multilangages, multi-utilisations
Java, les fondamentaux alphorm.com™©
48. Ce qu’on a couvert
• L’IDE Netbeans
• Créer un projet
• Produire à partir du projet
• L’IDE Eclipse
Java, les fondamentaux alphorm.com™©
49. Penser en termes d’objets
Définir le domaine du
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
problème
Java, les fondamentaux alphorm.com™©
51. Domaine - conception - code
• Le modèle du domaine est la première vue orientée objets
• La trace entre métier et code est assurée
• Le code est une autre vue du métier
• Le code n’est là que pour répondre à un besoin métier
Java, les fondamentaux alphorm.com™©
52. Rôle du modèle du domaine
• Le modèle du domaine est une vue orientée objet
On peut le traduire en code (à travers des étapes nombreuses)
Il est compris par le métier
Il est stable (contrairement au code)
• Le modèle du domaine est quasiment hors informatique
Java, les fondamentaux alphorm.com™©
53. Le modèle de conception
• A partir du modèle du domaine
• Prenant en compte l’architecture technique
• Le modèle de conception est efficace, performant, et fidèle
• Il sera traduit en code
Java, les fondamentaux alphorm.com™©
54. Traduction en Java
• Le type d’objet est une classe - Java
• Les attributs sont les données
• Les méthodes sont les fonctions membres
• Les associations sont des attributs références
• Le code n’invente quasi rien
• Le corps des méthodes n’est pas spécifié par un modèle de classes
Java, les fondamentaux alphorm.com™©
55. Ce qu’on a couvert
• Domaine/métier/analyse/conception/code
• Rôle du modèle du domaine
• Rôle du modèle de conception
• Traduction en Java
Java, les fondamentaux alphorm.com™©
56. Penser en termes d’objets
Identifier les objets
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
Java, les fondamentaux alphorm.com™©
57. Plan
• Définition d’un objet
• Pourquoi parler de classes
• Définir un bon objet métier
• Les classes applicatives
• Vocabulaire
Java, les fondamentaux alphorm.com™©
58. Définition d’un objet
• Une entité vivante, qui réagit aux messages reçus
• Un objet contient les données et les traitements qui permettent d’agir
dessus
• Un objet a des frontières bien définies, des états et des comportements
Java, les fondamentaux alphorm.com™©
59. Pourquoi parler des classes
• Une classe est un type d’objet
• Parler des types au lieu des exemples occurrents permet simplifier la
description du problème
• Une classe est aussi le descripteur d’objets
• Il y a plusieurs sortes de classes (métier, applicatives…)
• Une classe est lisible dans les services qu’elle rend
Java, les fondamentaux alphorm.com™©
60. Définir un bon objet métier
• Souvent repéré comme un groupe nominal dans un énoncé
• Un bon objet métier est manipulé par le métier
• Il contient des données importantes
• Il est cohérent dans un traitement
Java, les fondamentaux alphorm.com™©
61. Les classes applicatives
• Une classe applicative correspond aux couches techniques
• Elle apparaît dans le modèle de conception
• N’est pas le reflet des objets métier
• Peuvent ne contenir que des traitements
Java, les fondamentaux alphorm.com™©
62. Vocabulaire
• Les classes contiennent toutes les données et traitements
• Rien ne peut être en dehors des classes
• Les objets masquent leur implémentation : c’est l’encapsulation
• Les classes définissent :
des attributs (données)
des méthodes (traitements)
Java, les fondamentaux alphorm.com™©
63. Ce qu’on a couvert
• Définition d’un objet
• Pourquoi parler de classes
• Définir un bon objet métier
• Les classes applicatives
• Vocabulaire
Java, les fondamentaux alphorm.com™©
64. Présentation du langage Java
Définir les classes
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
Java, les fondamentaux alphorm.com™©
65. Plan
• Une classe définit les attributs et les méthodes
• Les visibilités autorisent ou interdisent les accès aux membres
• Les constructeurs sont remarquables
• La définition de la classe peut supporter des modificateurs
Java, les fondamentaux alphorm.com™©
66. Une classe définit attributs et méthodes
• Les attributs sont typés, ce sont les données
• Les méthodes sont décrits par un nom, un type de retour et des
paramètres, eux-mêmes typés
• Il n’y a pas d’ordre dans les déclarations
• Le corps des méthodes peut utiliser les attributs, les paramètres et les
variables locales éventuelles
• Par convention, une classe commencent par une majuscule, un attribut
et une méthode par une minuscule
Java, les fondamentaux alphorm.com™©
67. Les visibilités
• Pour implémenter l’encapsulation
• Visibilités : par défaut, private, protected, public
• Limitent l’accès aux membres par d’autres morceaux de code
Java, les fondamentaux alphorm.com™©
68. Les constructeurs
• Les constructeurs sont des méthodes
Qui portent le nom de la classe
N’ont pas de type de retour
Initialisent les attributs
• L’appel d’un constructeur est implicite
Java, les fondamentaux alphorm.com™©
69. La définition de classe a des modificateurs
• Classe publique ou non
• Classe extension d’une autre
• Classe implémentation d’une interface
Java, les fondamentaux alphorm.com™©
70. Ce qu’on a couvert
• Une classe définit les attributs et les méthodes
• Les visibilités autorisent ou interdisent les accès aux membres
• Les constructeurs sont remarquables
• La définition de la classe peut supporter des modificateurs
Java, les fondamentaux alphorm.com™©
71. Présentation du langage Java
Identifier les composants
d’une classe
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
Java, les fondamentaux alphorm.com™©
72. Plan
• Les composants possibles
• Créer des attributs
• Créer des constructeurs
• Créer des méthodes
Java, les fondamentaux alphorm.com™©
73. Les composants d’une classe
• Une classe définit des attributs, ou champs de données
• Une classe définit des constructeurs, qui initialisent ces champs
• Une classe définit des méthodes, ou fonctions membres
• Les membres sont affectés d’une visibilité
• L’ordre de leurs déclarations n’est pas significatif
Java, les fondamentaux alphorm.com™©
74. Créer des attributs
• Un champ de donnée est typé
• Son nom suit la convention : commence par une minuscule et ensuite
capitalisation
• En général, la visibilité est privée
• Le type de ce champ de donnée est :
Un type fondamental (int, …)
Une chaîne de caractères (String)
Une référence vers un autre type, standard ou utilisateur
Java, les fondamentaux alphorm.com™©
75. Créer des constructeurs
• Un constructeur est une fonction membre spéciale
• Le nom d’un constructeur est le nom de la classe
• Il peut avoir des paramètres, mais pas de retour
• Dans le corps du constructeur, on doit initialiser les champs de donnée
Java, les fondamentaux alphorm.com™©
76. Créer des méthodes
• Une méthode est un traitement effectué sur un objet
• Son nom suit la même convention que les attributs
• Elle déclare une liste de paramètres (type nom)
• Elle peut ne pas avoir de paramètres
• Elle a un retour, sinon, elle déclare « void »
• Une méthode correspond à un message que l’on peut envoyer à l’objet
de ce type
Java, les fondamentaux alphorm.com™©
77. Ce qu’on a couvert
• Les composants possibles
• Créer des attributs
• Créer des constructeurs
• Créer des méthodes
Java, les fondamentaux alphorm.com™©
78. Présentation du langage Java
Créer et utiliser une classe
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
de test
Java, les fondamentaux alphorm.com™©
79. Plan
• Définition d’une classe de test
• Construction d’une classe de test
• Utilisation simple d’une classe de test
• Utilisation d’une classe de test via un framework
Java, les fondamentaux alphorm.com™©
80. Définition d’une classe de test
• Une classe qui ne sert qu’à tester une autre classe
• Une classe est l’unité de test par excellence
• La classe de test propose une méthode par traitement à tester
• Les méthodes de tests sont déclenchés par l’extérieur
Java, les fondamentaux alphorm.com™©
81. Construction d’une classe de test
• Pour chaque classe du modèle, créer une classe de test
• Dans cette nouvelle classe, créer une méthode par test à réaliser
• Dans une méthode de test : mettre en place le jeu de test, lancer
Java, les fondamentaux alphorm.com™©
82. Utilisation simple d’une classe de test
• Dans un main
• Appeler les méthodes de la classe de test
• On voit qu’il est plus simple de faire des appels « statiques »
• Remarquer la visualisation des résultats dans la console
Java, les fondamentaux alphorm.com™©
83. Utilisation d’un framework de test
• JUnit s’est imposé comme un framework de test
• Appels statiques
• Les classes et les méthodes de tests sont annotés
• Une ihm simple permet d’identifier les réussites et les échecs
Java, les fondamentaux alphorm.com™©
84. Ce qu’on a couvert
• Définition d’une classe de test
• Construction d’une classe de test
• Utilisation simple d’une classe de test
• Utilisation d’une classe de test via un framework
Java, les fondamentaux alphorm.com™©
85. Présentation du langage Java
Compiler et exécuter un
programme de test
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
Java, les fondamentaux alphorm.com™©
86. Plan
• Création d’un programme de test
• Lancement d’un programme de test JUnit
Java, les fondamentaux alphorm.com™©
87. Création d’un programme de test
• Il faut disposer des classes à tester
• Créer un programme avec un main
• Compiler et exécuter le programme
• Vérifier les sorties
Java, les fondamentaux alphorm.com™©
88. Programme de test JUnit
• Avec un framework de test comme JUnit, construction des classes de
test simplifié
• Lancement d’un ihm spécifique
Java, les fondamentaux alphorm.com™©
89. Ce qu’on a couvert
• Création d’un programme de test
• Lancement d’un programme de test
Java, les fondamentaux alphorm.com™©
90. Utiliser des primitives
Déclarer et initialiser des
variables de champs
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
Java, les fondamentaux alphorm.com™©
91. Plan
• Qu’est-ce qu’une primitive ?
• Déclaration d’un champ de donnée
• Initialiser un champ de donnée
Java, les fondamentaux alphorm.com™©
92. Qu’est-ce qu’une primitive ?
• Les types primitifs sont les types fondamentaux de Java
• Les données primitives sont placées sur la pile
• Les valeurs possibles sont déterminées par le type
• Il n’est pas possible de créer de nouveaux types primitifs
Java, les fondamentaux alphorm.com™©
93. Déclaration d’un champ de donnée
• La forme générale est : Type nomDeLaVariable;
• On peut rajouter la visibilité
• Et une valeur par défaut
Java, les fondamentaux alphorm.com™©
94. Initialiser un champ de donnée
• Par défaut la valeur est 0, 0.0, null ou false suivant le type
• Il faut donc en général donner une valeur à ce champ
• Initialiser par défaut, lors de la déclaration
• Ecrire le code d’initialisation dans un constructeur
Java, les fondamentaux alphorm.com™©
95. Ce qu’on a couvert
• Qu’est-ce qu’une primitive ?
• Déclaration d’un champ de donnée
• Initialiser un champ de donnée
Java, les fondamentaux alphorm.com™©
96. Utiliser des primitives
Décrire les types primitifs
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
Java, les fondamentaux alphorm.com™©
97. Plan
• Les types entiers
• Les types flottants
• Le type caractère
• Le type booléen
Java, les fondamentaux alphorm.com™©
98. Les types entiers
• Un octet signé : byte
• Deux octets signés : short
• Quatre octets signés : int
• Huit octets signés : long
• Pas de types non signés, mais des méthodes sur les types Integer et
Long pour gérer l’arithmétique non signée
• Les littéraux sont typés : 4 est un int, 4L est un long
Java, les fondamentaux alphorm.com™©
99. Les types flottants
• 32-bit IEEE 754 : float
• 64-bit IEEE 754 : double
• Ne pas utiliser ces types pour des monétaires, mais plutôt BigDecimal
• Les littéraux sont typés : 5.6 est un double, 5.6F est un float
Java, les fondamentaux alphorm.com™©
100. Le type caractère
• Représenté par char
• 16-bit Unicode, soit de u0000 à uFFFF
• Le type chaîne de caractère n’est pas un type primitif (String)
Java, les fondamentaux alphorm.com™©
101. Le type booléen
• Une valeur soit true, soit false
• La taille en mémoire n’est pas précisée
• Les booléens ne peuvent être confondus ni avec des entiers, ni avec des
référence (null)
Java, les fondamentaux alphorm.com™©
102. Ce qu’on a couvert
• Les types entiers
• Les types flottants
• Le type caractère
• Le type booléen
Java, les fondamentaux alphorm.com™©
103. Utiliser des primitives
Déclarer des variables et
leur affecter des valeurs
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
Java, les fondamentaux alphorm.com™©
104. Plan
• Les variables en Java
• Comportement des variables locales
• L’affectation d’une valeur à une variable locale
Java, les fondamentaux alphorm.com™©
105. Les variables en Java
• Les variables sont déclarées et typées
• Les variables attributs, ou champ de donnée
• Les variables paramètres
• Les variables locales à une méthode
• Notez l’absence de variable globale
Java, les fondamentaux alphorm.com™©
106. Comportement des variables locales
• Une variable locale est déclarée à l’intérieur d’une méthode
• Elle disparaît à la fin du bloc { } dans lequel elle est déclarée
• Elle doit être initialisée avant d’être utilisée
Java, les fondamentaux alphorm.com™©
107. L’affectation d’une variable locale
• Pour être utilisée, une variable doit avoir une valeur :
À l’initialisation
Plus tard, en affectant une valeur calculée
• Le compilateur identifie les chemins dans la méthode
Tous les chemins doivent donner une valeur à la variable
• • Certaines variables sont utilisées en retour de fonctions
Java, les fondamentaux alphorm.com™©
108. Ce qu’on a couvert
• Les variables en Java
• Comportement des variables locales
• L’affectation d’une valeur à une variable locale
Java, les fondamentaux alphorm.com™©
109. Utiliser des primitives
Utiliser des constantes
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
Java, les fondamentaux alphorm.com™©
110. Plan
• Un mot clé pour créer une constante
• Une constante en attribut, publique ou non
• Une constante en variable locale
Java, les fondamentaux alphorm.com™©
111. Un mot clé pour créer une constante
• En utilisant le mot-clé « final »
• Il faut donner une valeur à la variable
• Il est impossible de modifier la valeur donnée
• Le type de la variable est quelconque
• Par convention, le nom de la variable est en majuscules
Java, les fondamentaux alphorm.com™©
112. 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 n’est pas dangereux
• Exemple : Math.PI
Java, les fondamentaux alphorm.com™©
113. Une constante en variable locale
• Une variable locale constante ne peut pas être modifiée dans sa portée
• Elle interdit simplement toute modification
• Elle est utilisable dans une classe anonyme de la même portée
• Dans le cas du paramètre, attention à ne pas confondre avec les
« const » du C++
Java, les fondamentaux alphorm.com™©
114. Ce qu’on a couvert
• Un mot clé pour créer une constante
• Une constante en attribut, publique ou non
• Une constante en variable locale
Java, les fondamentaux alphorm.com™©
115. Utiliser des primitives
Utiliser des opérateurs
arithmétiques
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
Java, les fondamentaux alphorm.com™©
116. Plan
• Les opérateurs arithmétiques en Java
• Le comportement des types
Java, les fondamentaux alphorm.com™©
117. Les opérateurs arithmétiques
• Opérateurs +, -, / , *
• Opérateurs combinant affectation et opération +=, -=, /=,*=
• Opérateurs unaires ++, --
• L’opérateur % (modulo)
• Pas de surcharge possible des opérateurs
• Il existe des opérateurs au niveau des bits : , ~ ,… décalage , , …
Java, les fondamentaux alphorm.com™©
118. Le comportement des types
• Pour garder la précision des calculs, on promeut les short et byte en int
• Il vaut mieux donc utiliser des int
• Les débordements sur entiers ne sont pas gérés comme sur les réels
• Les littéraux ont des types :
1 est un int
1.0 est un double
Java, les fondamentaux alphorm.com™©
119. Ce qu’on a couvert
• Les opérateurs arithmétiques en Java
• Le comportement des types
Java, les fondamentaux alphorm.com™©
120. Utiliser des objets
Déclarer et initialiser des
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
objets
Java, les fondamentaux alphorm.com™©
121. Plan
• Référence vs objet
• Référence locale, paramètre
• Référence en attribut
Java, les fondamentaux alphorm.com™©
122. Référence vs objet
• Un objet est une zone mémoire allouée avec un « new »
• Pour garder un lien vers cette zone mémoire, on utilise une référence
• Un objet ne peut pas être manipulé sans référence
• Lors qu’un objet n’est plus référencé, il est finalisé
• Voiture titine = new Voiture()
Java, les fondamentaux alphorm.com™©
123. Référence locale, paramètre
• Une référence vers un objet peut apparaître en paramètre
L’appelant doit fournir l’objet en question
• Une référence peut être une variable locale
Il faut initialiser cette variable :
À partir d’une autre référence
• • En créant un objet
Java, les fondamentaux alphorm.com™©
124. Référence en attribut
• Une référence peut être un attribut
• Il s’agit d’un lien vers un autre objet
• Les règles d’initialisation des types primitifs s’appliquent
Valeur null par défaut
Initialisation lors de la déclaration ou dans un constructeur
Java, les fondamentaux alphorm.com™©
125. Ce qu’on a couvert
• Référence vs objet
• Référence locale, paramètre
• Référence en attribut
Java, les fondamentaux alphorm.com™©
126. Utiliser des objets
Stocker des objets en
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
mémoire
Java, les fondamentaux alphorm.com™©
127. Plan
• Un objet peut référencer d’autres objets
• Règles d’accès aux objets en mémoire
Java, les fondamentaux alphorm.com™©
128. Un objet peut référencer d’autres objets
• Via des attributs en mémoire
• Des graphes d’objets sont stockés en mémoire
• Exemple :
Le gobelet référence des dés
Tant que le gobelet existe en mémoire, les dés aussi
• La règle d’encapsulation s’applique, le gobelet ne peut accéder aux
membres privés des dés
Java, les fondamentaux alphorm.com™©
129. Règles d’accès aux objets
• Les objets ne sont finalisés (ramassés) que lorsqu’ils ne sont plus
référencés
• Cette règle s’applique aux graphes d’objets
• Suppose que les références sur objet sont comptées
• Il faut que le développeur pense à mettre ses références à « null »
Java, les fondamentaux alphorm.com™©
130. Ce qu’on a couvert
• Un objet peut référencer d’autres objets
• Règles d’accès aux objets en mémoire
Java, les fondamentaux alphorm.com™©
131. Utiliser des objets
Utiliser des références
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
d’objets
Java, les fondamentaux alphorm.com™©
132. Plan
• Référence et objets
• Accéder à un champ d’un objet
• Accéder à une méthode d’un objet
Java, les fondamentaux alphorm.com™©
133. Référence et objet
• Un objet est accessible via les références qui pointent vers lui
• Une référence est un accès mémoire, mais non explicite
• La sélection des membres se fait avec l’opérateur « . »
• Obtenir une référence à un objet se fait :
En créant soi-même l’objet
En invoquant une méthode qui crée l’objet et nous le retourne
En récupérant la référence en paramètre
Java, les fondamentaux alphorm.com™©
134. Accéder à un champ
• Via une référence, on obtient un accès aux membres
• Si le champ est accessible (champ « public » par exemple)
Avec un code genre : ref . attribut
Je peux lire, modifier l’attribut de l’objet pointé par ref
Un accès direct à un champ est rare, car cela ne respecte pas
• l’encapsulation
Java, les fondamentaux alphorm.com™©
135. Accéder à une méthode
• Via une référence, on accède aux traitements de l’objet
• L’appel se réalise comme pour un attribut, mais avec des parenthèses,
même s’il n’y a pas de paramètres à passer
• Le déclenchement de la méthode suppose un effet sur l’objet :
La méthode nous retourne le résultat d’un calcul
La méthode modifie l’état de l’objet
• En général, l’objet peut garder le résultat du calcul lui-même
Java, les fondamentaux alphorm.com™©
136. Ce qu’on a couvert
• Référence et objets
• Accéder à un champ d’un objet
• Accéder à une méthode d’un objet
Java, les fondamentaux alphorm.com™©
137. Utiliser des objets
Utiliser les javadocs
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
Java, les fondamentaux alphorm.com™©
138. Plan
• Qu’est-ce que javadoc ?
• Visiter la documentation de jse
• Appliquer la documentation dans son code
Java, les fondamentaux alphorm.com™©
139. Qu’est-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 compléments que l’on peut ajouter
Java, les fondamentaux alphorm.com™©
140. Visiter la documentation jse
• Accéder au site Oracle, ou bien en utiliser un téléchargement
• Trouver le package, la classe, la méthode
• La description contient des généralités, des exemples
• Voyons la classe Date, la classe Math
Java, les fondamentaux alphorm.com™©
141. Appliquer la documentation au code
• Avec la classe Date, créer une Date now et today
Un constructeur par défaut qui créer un Date maintenant
• Avec la classe Math, comprendre la description des champs
Voir le lien avec d’autres classes, StrictMath
Java, les fondamentaux alphorm.com™©
142. Ce qu’on a couvert
• Qu’est-ce que javadoc ?
• Visiter la documentation de jse
• Appliquer la documentation dans son code
Java, les fondamentaux alphorm.com™©
143. Utiliser des objets
Utiliser des objets String et
StringBuilder
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
Java, les fondamentaux alphorm.com™©
144. Plan
• La chaîne de caractères String
• Les limites de la classe String
• L’intérêt de StringBuilder
Java, les fondamentaux alphorm.com™©
145. La chaîne de caractères String
• Une classe, avec des comportements
• Une création exceptionnelle, rappelant les types primitifs
• L’application de l’opérateur +, y compris pour concaténer des primitives
• Méthode de manipulation de chaîne
• Voir la documentation pour les détails
Java, les fondamentaux alphorm.com™©
146. Les limites de la classe String
• Une String est « immutable value »
• Toutes les méthodes qui semblent modifier l’objet String en crée un
autre
• Très peu efficace pour créer un buffer
Java, les fondamentaux alphorm.com™©
147. L’intérêt de StringBuilder
• La classe StringBuilder n’a pas de relation de type avec String
• Dédiée à la gestion de buffer
Ajout de morceaux de chaînes…
Troncature aléatoire
On obtient à tout moment le buffer via toString()
• Java, les fondamentaux alphorm.com™©
148. Ce qu’on a couvert
• La chaîne de caractères String
• Les limites de la classe String
• L’intérêt de StringBuilder
Java, les fondamentaux alphorm.com™©
149. Utiliser des opérateurs et des
structures décisionnelles
Opérateurs relationnels et
conditionnels
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
Java, les fondamentaux alphorm.com™©
150. Plan
• Les opérateurs relationnels
• Les opérateurs conditionnels
Java, les fondamentaux alphorm.com™©
151. Les opérateurs relationnels
• Opérateur ==, !=, ,,=,=
• Evalués à un booléen
• S’appliquent à tous les types primitifs
• S’appliquent aussi aux références, mais attention pas aux objets
Java, les fondamentaux alphorm.com™©
152. Les opérateurs conditionnels
• Les opérateurs , || sont court-circuit
• Les opérateurs ,|,^ s’appliquent comme sur les bits d’un entier
• L’opérateur ! est NOT
• L’opérateur ternaire :
(a b )? A : b
Si a est supérieur à b alors a sinon b
Java, les fondamentaux alphorm.com™©
153. Ce qu’on a couvert
• Les opérateurs relationnels
• Les opérateurs conditionnels
Java, les fondamentaux alphorm.com™©
154. Utiliser des opérateurs et des
structures décisionnelles
Tester l’égalité entre chaînes
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
Java, les fondamentaux alphorm.com™©
155. Plan
• L’égalité physique ou sémantique des objets
• La classe String et ses méthodes
• == ou bien equals(…) ?
Java, les fondamentaux alphorm.com™©
156. L’égalité sémantique ou physique
• Un objet est sur le tas et est référencé via une référence
• L’opérateur == s’applique sur la référence, test physique
• Comparer deux objets en prenant en compte ce qu’ils contiennent est
le test sémantique
• Le test sémantique se fait PAR les objets eux-mêmes
• Il n’y a pas de test sémantique par défaut en Java
Java, les fondamentaux alphorm.com™©
157. La classe String et ses méthodes
• Méthode equals : test d’égalité de 2 objets String
String str1 … String str2 …
Test : str1.equals(str2)
• Méthode equalsIgnoreCase : test d’égalité sans prendre en compte la
casse
Java, les fondamentaux alphorm.com™©
158. == ou bien equals(…)
• == est un test physique
• Les méthodes equals ou equalsIgnoreCase testent le contenu
• == peut servir à identifier le contenu CAR String est une « immutable
value »
Java, les fondamentaux alphorm.com™©
159. Ce qu’on a couvert
• L’égalité physique ou sémantique des objets
• La classe String et ses méthodes
• == ou bien equals(…) ?
Java, les fondamentaux alphorm.com™©
160. Utiliser des opérateurs et des
structures décisionnelles
Evaluer différentes
conditions et coder
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
Java, les fondamentaux alphorm.com™©
161. Plan
• Les expressions booléennes
• Tester une seule condition, simple ou complexe
• Tester une suite de condition
• Un branchement complexe
Java, les fondamentaux alphorm.com™©
162. Les expressions booléennes
• Un expression booléenne est une expression dont l’évaluation donne
true ou false
• Un numérique ou une référence ne sont pas des booléens
• Le type « boolean » représente une variable booléenne
Java, les fondamentaux alphorm.com™©
163. Tester une seule condition
• Pour tester une seule condition : « if » avec ou sans accolades
• Il est courant de rajouter systématiquement 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 parenthèses
• La condition peut être complexe, utilisant les opérateurs booléens
Java, les fondamentaux alphorm.com™©
164. Tester une suite de condition
• Il faut enchaîner les « if » et les « else »
• La logique conditionnelle pose rapidement des problèmes :
De lecture, le code est long à lire
De fragilité, difficile de modifier une condition sans impact
Facile à boguer, la logique est compliquée
• Les conditions elles-mêmes sont rapidement trop complexes
Java, les fondamentaux alphorm.com™©
165. Un branchement complexe
• Lorsqu’une seule variable est tester, pour un ensemble de valeurs
• En utilisant « switch / case », on simplifie un peu
• Mais la variable est forcément primitive
• Peu être le signe d’un manque de conception objet
Java, les fondamentaux alphorm.com™©
166. Ce qu’on a couvert
• Les expressions booléennes
• Tester une seule condition, simple ou complexe
• Tester une suite de condition
• Un branchement complexe
Java, les fondamentaux alphorm.com™©
167. Utiliser des opérateurs et des
structures décisionnelles
Créer des if et if/else
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
Java, les fondamentaux alphorm.com™©
168. Plan
• L’instruction « if »
• Le couple « if / else »
• L’intense « if / else / if /else / … »
Java, les fondamentaux alphorm.com™©
169. L’instruction « if »
• L’instruction « if » est suivie d’une condition entre parenthèses
• Il y a une seule instruction derrière un « if »
• Mais on va placer plusieurs instructions grâce aux accolades
Java, les fondamentaux alphorm.com™©
170. Le couple « if / else »
• Un « if » sans « else » a t-il du sens ?
• Une seule instruction après un « else », ou bien des accolades
Java, les fondamentaux alphorm.com™©
171. L’intense …
• Enchaîner des « if / else if / … » est rarement une bonne idée
Java, les fondamentaux alphorm.com™©
172. Ce qu’on a couvert
• L’instruction « if »
• Le couple « if / else »
• L’intense « if / else / if /else / … »
Java, les fondamentaux alphorm.com™©
173. Utiliser des opérateurs et des
structures décisionnelles
Enchaîner les conditions
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
Java, les fondamentaux alphorm.com™©
174. Plan
• L’instruction « if / else »
• Le cas de la création des objets
• Que testent réellement les conditions ?
Java, les fondamentaux alphorm.com™©
175. L’instruction « if / else »
• Une instruction conditionnelle est rapidement inévitable
• Ne pas la rendre trop complexe
• Eventuellement réduire la complexité
Java, les fondamentaux alphorm.com™©
176. Le cas de la création des objets
• Pour créer un objet, il faut connaître sa classe
• La logique conditionnelle est donc quasi-imparable
Java, les fondamentaux alphorm.com™©
177. Que testent réellement les conditions ?
• Il faut éviter de tester le type des objets
Par instanceof
Par un autre moyen
• Pour déclencher des méthodes sur des objets en fonctions des types, il
faut penser polymorphisme
• Les conditions sont souvent des primitives
• La combinaison des variables de conditions reflète le résultat d’une
méthode
Java, les fondamentaux alphorm.com™©
178. Ce qu’on a couvert
• L’instruction « if / else »
• Le cas de la création des objets
• Que testent réellement les conditions ?
Java, les fondamentaux alphorm.com™©
179. Utiliser des opérateurs et des
structures décisionnelles
L’instruction switch
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
Java, les fondamentaux alphorm.com™©
180. Plan
• Forme générale du switch
• Quand utiliser switch
• Quand ne pas utiliser switch
Java, les fondamentaux alphorm.com™©
181. Forme générale du switch
• Il faut une variable, entière jusqu’à Java7, String compris depuis
• Le cas par défaut est optionnel
Java, les fondamentaux alphorm.com™©
182. Quand utiliser le switch
• Reste simple et inévitable
Java, les fondamentaux alphorm.com™©
183. Quand ne pas utiliser le switch
• Expression complexe, qui pourrait être remplacée par une conception
plus poussée
• Oublier le « default »
Java, les fondamentaux alphorm.com™©
184. Ce qu’on a couvert
• Forme générale du switch
• Quand utiliser switch
• Quand ne pas utiliser switch
Java, les fondamentaux alphorm.com™©
185. Créer et utiliser des tableaux
Déclarer et instancier un
tableau à 1 dimension
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
Java, les fondamentaux alphorm.com™©
186. Plan
• Qu’est-ce qu’un tableau ?
• Tableau de primitives
• Tableau d’objets
Java, les fondamentaux alphorm.com™©
187. Qu’est-ce qu’un tableau ?
• Le tableau est un objet
• Il s’instancie avec un new
• Son type et T[ ]
• Il ne fournit aucune information, n’a aucune intelligence
Java, les fondamentaux alphorm.com™©
188. 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 données
Java, les fondamentaux alphorm.com™©
189. Tableau d’objets
• Le tableau d’objets n’existe pas
• Le tableau est un tableau de références
• Les références sont mises à null
• Il faut donc un autre new pour chaque objet dont on veut disposer
Java, les fondamentaux alphorm.com™©
190. Ce qu’on a couvert
• Qu’est-ce qu’un tableau ?
• Tableau de primitives
• Tableau d’objets
Java, les fondamentaux alphorm.com™©
191. Créer et utiliser des tableaux
Déclarer et instancier un
tableau à 2 dimensions
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
Java, les fondamentaux alphorm.com™©
192. Plan
• Qu’est-ce qu’un tableau à deux dimensions?
• Les services de ce tableau
Java, les fondamentaux alphorm.com™©
193. Qu’est-ce qu’un tableau à deux dimensions ?
• On spécifie 2 dimensions, le tableau est donc une matrice
• Il faut deux indices pour ranger un élément dans le tableau
• On peut aussi l’initialiser de façon statique
Java, les fondamentaux alphorm.com™©
194. Les services de ce tableau
• L’attribut en lecture seule « length » est disponible pour les 2
dimensions
Java, les fondamentaux alphorm.com™©
195. Ce qu’on a couvert
• Qu’est-ce qu’un tableau à deux dimensions?
• Les services de ce tableau
Java, les fondamentaux alphorm.com™©
196. Créer et utiliser des tableaux
Utiliser une boucle for dans
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
le tableau
Java, les fondamentaux alphorm.com™©
197. 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™©
198. Les boucles
• La boucle while(cond) { }
• La boucle do { … } while(cond) ;
• La boucle for( int i =0; icond; i++) { }
• La boucle for ( E e: tab) { }
Java, les fondamentaux alphorm.com™©
199. Parcourir un tableau à une dimension
• Avec une boucle for basé sur une variable
La variable de boucle est indice d’accès dans le tableau
• Avec une boucle for « each »
On ressort l’élement contenu dans le tableau
Java, les fondamentaux alphorm.com™©
200. Parcourir un tableau à deux dimensions
• Avec une double boucle
• Les variables de boucles sont les indices d’accès aux éléments du
tableau
• La capacité du tableau « length » est utilisée
Java, les fondamentaux alphorm.com™©
201. Ce qu’on 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™©
202. Créer et utiliser des tableaux
Créer et initialiser une
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
ArrayList
Java, les fondamentaux alphorm.com™©
203. Plan
• Qu’est-ce que java.util.ArrayList ?
• Comment initialiser une ArrayList
• Parcourir une ArrayList
Java, les fondamentaux alphorm.com™©
204. Qu’est-ce qu’une ArrayList ?
• Un objet de java.util
• Tableau dynamique, se redimensionne seule
• Offre des services supplémentaires
Java, les fondamentaux alphorm.com™©
205. 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™©
206. Parcourir une ArrayList
• En utilisant un indice jusqu’à « size »
• En utilisant le for « each »
Java, les fondamentaux alphorm.com™©
207. Ce qu’on a couvert
• Qu’est-ce que java.util.ArrayList ?
• Comment initialiser une ArrayList
• Parcourir une ArrayList
Java, les fondamentaux alphorm.com™©
208. Créer et utiliser des tableaux
Utiliser l’instruction import
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
Java, les fondamentaux alphorm.com™©
209. Plan
• Le package java.util
• Utiliser import
Java, les fondamentaux alphorm.com™©
210. 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 l’absence de collision entre les noms de classes
Java, les fondamentaux alphorm.com™©
211. L’instruction 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 généré
• Confort de codage et de lecture
• Pas d’import du package lui-même
• On importe des classes d’un package
• On peut importer toutes les classes d’un package
Java, les fondamentaux alphorm.com™©
212. Ce qu’on a couvert
• Le package java.util
• Utiliser import
Java, les fondamentaux alphorm.com™©
213. Créer et utiliser des tableaux
Accéder à une valeur d’un
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
tableau
Java, les fondamentaux alphorm.com™©
214. Plan
• Accéder aux valeurs dans un tableau
• Accéder aux valeurs dans une ArrayList
Java, les fondamentaux alphorm.com™©
215. Accéder aux valeurs dans un tableau
• Le tableau supporte l’accès aléatoire
• Avec l’opérateur [ ], on lit n’importe quelle valeur
• Les débordements sont repérés
• Le même opérateur permet d’écrire
• Le tableau ne se redimensionne pas
Java, les fondamentaux alphorm.com™©
216. Accéder aux valeur d’une ArrayList
• Ce tableau peut se redimensionner seul
• Avec get(int), on obtient la ième valeur
• Mais pour modifier le ième élément, utiliser add(int, E)
Java, les fondamentaux alphorm.com™©
217. Ce qu’on a couvert
• Accéder aux valeurs dans un tableau
• Accéder aux valeurs dans une ArrayList
Java, les fondamentaux alphorm.com™©
218. Créer et utiliser des tableaux
Utiliser le tableau args
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
Java, les fondamentaux alphorm.com™©
219. Plan
• Les arguments de la ligne de commande
• Parcourir le tableau
• Convertir les éléments de ce tableau
Java, les fondamentaux alphorm.com™©
220. Les arguments de la ligne de commande
• Les arguments fournit après « java app » sur le ligne de commande
• Séparés par des blancs
• Ce sont des chaînes de caractères dans le main
Java, les fondamentaux alphorm.com™©
221. Parcourir le tableau
• Soit utiliser length, soit for « each »
• La capacité du tableau est sa taille utile
• Permet typiquement de passer des options à l’application
• Utilisable même avec netbeans ou eclipse
Java, les fondamentaux alphorm.com™©
222. Convertir les éléments du tableau
• Pour être exploitable, il faut souvent convertir en … entiers ?
Integer.parseInt(str)
• Attention à prendre en compte des erreurs de type
Gérer les exceptions
Rechercher le type
Java, les fondamentaux alphorm.com™©
223. Ce qu’on a couvert
• Les arguments de la ligne de commande
• Parcourir le tableau
• Convertir les éléments de ce tableau
Java, les fondamentaux alphorm.com™©
224. Utiliser des boucles
Coder une do/while
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
Java, les fondamentaux alphorm.com™©
225. Plan
• Les composants de la boucle do /while
• Les composants de la boucle while
• Les erreurs à ne pas faire
Java, les fondamentaux alphorm.com™©
226. Les composants de la boucle do/while
• Un bloc de code à exécuter
• Une condition à respecter
• Une condition d’arrêt
Java, les fondamentaux alphorm.com™©
227. Les composants de la boucle while
• Une ou plusieurs instructions dans un bloc
• Une condition pour arrêter la boucle
Java, les fondamentaux alphorm.com™©
228. 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™©
229. Ce qu’on 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™©
230. Utiliser des boucles
Développer une boucle for
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
Java, les fondamentaux alphorm.com™©
231. Plan
• Les composants d’une boucle « for »
• Les avantages du for sur le while
• Les écritures limites du « for »
Java, les fondamentaux alphorm.com™©
232. Les composants d’une boucle for
• Initialisation
• Tant que
• Incrément
Java, les fondamentaux alphorm.com™©
233. Les avantages du for sur le while
• Le « for » possède toujours 3 parties
• On oublie moins la modification de la variable de boucle
• L’initialisation est plus évidente
Java, les fondamentaux alphorm.com™©
234. Les écritures limites du for
• Utiliser un « for » pour une boucle infinie
• Oublier volontairement une partie du « for »
• Mettre des listes d’initialisation
• Mettre des listes d’incréments
• Utiliser des conditions d’arrêt compliquées
Java, les fondamentaux alphorm.com™©
235. Ce qu’on a couvert
• Les composants d’une boucle « for »
• Les avantages du for sur le while
• Les écritures limites du « for »
Java, les fondamentaux alphorm.com™©
236. Utiliser des boucles
Utiliser des ArrayList dans
une boucle for
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
Java, les fondamentaux alphorm.com™©
237. Plan
• Remarques sur le contenu d’une ArrayList
• Parcourir une ArrayList en utilisant « get »
• Parcourir une ArrayList en utilisant un itérateur
Java, les fondamentaux alphorm.com™©
238. Remarques sur le contenu d’une ArrayList
• ArrayList est une implémentation tableau
• Depuis Java5, ArrayList peut être typé : ArrayListString
• Avant, ArrayList contient des Object
• Il est possible de récupérer le ième élément du tableau
• L’ordre est conservé !
Java, les fondamentaux alphorm.com™©
239. Parcourir une ArrayList avec get
• Avec la méthode « get », on peut passer un indice
• Récupérer le ième élément
• La méthode « size » donne le nombre d’éléments présents
Java, les fondamentaux alphorm.com™©
240. Parcourir une ArrayList avec des itérateurs
• Un itérateur est une sorte de « curseur » sur l’ArrayList
• Il peut avancer et donner l’élément courant
• L’indice auquel on accède n’est plus important
• Pratique si on veut juste parcourir du premier au dernier
Java, les fondamentaux alphorm.com™©
241. Ce qu’on a couvert
• Remarques sur le contenu d’une ArrayList
• Parcourir une ArrayList en utilisant « get »
• Parcourir une ArrayList en utilisant un itérateur
Java, les fondamentaux alphorm.com™©
242. Utiliser des boucles
Comprendre la portée des
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
variables
Java, les fondamentaux alphorm.com™©
243. Plan
• Définir la portée d’une variable
• Les variables locales et les paramètres
• Les variables champ de donnée
• Pourquoi n’y a t-il pas en Java de variable de portée globale ?
Java, les fondamentaux alphorm.com™©
244. Définir la portée d’une variable
• La zone de code où l’accès à la variable est possible
• Plus la portée est réduite, plus la gestion de la ressource est simple
• La donnée disparaît elle-même dans certains cas
• Lorsqu’on sort de la portée d’une référence, on n’accède PLUS à l’objet
• En Java, les blocs { … } limite la portée d’une variable
Java, les fondamentaux alphorm.com™©
245. Les variables locales et paramètres
• Une variable locale ne peut pas être utilisée en dehors de la méthode
dans laquelle elle est déclarée
• Pour garder la donnée, il faut la recopier dans une autre variable
Retour de fonction
Variable attribut
• Les paramètres sont des sortes de variables locales
La valeur est fournie par l’appelant
Java, les fondamentaux alphorm.com™©
246. Les variables champ de donnée
• Un attribut, ou champ de donnée a une portée limitée par la classe
• Il appartient à l’objet ou à la classe (cf static)
• L’attribut a donc une portée supérieure à celle d’une variable locale
Java, les fondamentaux alphorm.com™©
247. Pas de variables globales en Java
• La portée ultime serait la variable globale
• Mais ce type de portée pose des problèmes
Difficile de maîtriser qui utilise la variable
Etat de la variable cahotique
Avec le « static », certains essaient de recréer la situation d’une portée
• globale
Java, les fondamentaux alphorm.com™©
248. Ce qu’on a couvert
• Définir la portée d’une variable
• Les variables locales et les paramètres
• Les variables champ de donnée
• Pourquoi n’y a t-il pas en Java de variable de portée globale ?
Java, les fondamentaux alphorm.com™©
249. Utiliser des méthodes
Créer et appeler des
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
méthodes
Java, les fondamentaux alphorm.com™©
250. Plan
• Créer une méthode dans une classe
• Appeler une méthode
Java, les fondamentaux alphorm.com™©
251. Créer une méthode
• Pour réaliser un traitement sur les données de l’objet
Une méthode a une implémentation
• Pour proposer un service à l’extérieur
Une méthode a une signature
Les variables : locale, paramètre, champ
• • Le retour n’est pas obligatoire
Java, les fondamentaux alphorm.com™©
252. Appeler une méthode
• Il faut accéder à un objet de ce type
• Utiliser l’opérateur « . » pour sélectionner la méthode
• Passer des arguments
• Utiliser ou non le retour
Java, les fondamentaux alphorm.com™©
253. Ce qu’on a couvert
• Créer une méthode dans une classe
• Appeler une méthode
Java, les fondamentaux alphorm.com™©
254. Utiliser des méthodes
Transmettre des arguments
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
Java, les fondamentaux alphorm.com™©
255. Plan
• Le passage des arguments à l’appel
• Le passage de primitives
• Le passage d’objets
Java, les fondamentaux alphorm.com™©
256. Le passage des arguments à l’appel
• Lors de l’appel de la méthode, utiliser les parenthèses
Les parenthèses seules si pas d’argument
La liste des arguments sans leurs types
• Les arguments doivent correspondre aux types attendus
Il n’est pas possible d’omettre des arguments
• • Pas de valeurs par défaut sur les paramètres
Java, les fondamentaux alphorm.com™©
257. Le passage de primitives
• Les primitives sont toujours recopiées dans la méthode
• Les paramètres sont donc en IN
• Il n’y a aucun mot clé pour changer ce comportement
• On dit que les primitives sont passées par valeur
Java, les fondamentaux alphorm.com™©
258. Le passage des objets
• Les objets sont référencés
• La copie entière des objets n’existe pas en Java
• Le passage ne concerne que les références des objets
• On dit que les objets sont passés par références
Java, les fondamentaux alphorm.com™©
259. Ce qu’on a couvert
• Le passage des arguments à l’appel
• Le passage de primitives
• Le passage d’objets
Java, les fondamentaux alphorm.com™©
260. Utiliser des méthodes
Créer des méthodes et des
variables statiques
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
Java, les fondamentaux alphorm.com™©
261. Plan
• Créer des variables statiques et les utiliser
• Créer des méthodes statiques et les utiliser
Java, les fondamentaux alphorm.com™©
262. Créer des variables statiques et les utiliser
• Définition d’une variable statique
Une variable qui est allouée en dehors des objets
• La syntaxe pour déclarer un champ statique : « static »
• L’intérêt des champs statiques
Unicité de l’information pour tous les objets
Accès aux données sans objet
• Utilisation dénoncée : une variable globale en Java !!
Java, les fondamentaux alphorm.com™©
263. Créer des méthodes statiques et les utiliser
• Syntaxe de la méthode statique : « static »
• Utilisation de la méthode statique : appel sur LA CLASSE
D’où le nom : méthode de classe
• Intérêt : appeler une méthode sans créer un objet
Parce qu’aucun objet n’existe
Parce que la création d’un objet coûte cher
Parce qu’on n’a pas accès à l’objet
…
Java, les fondamentaux alphorm.com™©
264. Ce qu’on a couvert
• Créer des variables statiques et les utiliser
• Créer des méthodes statiques et les utiliser
Java, les fondamentaux alphorm.com™©
265. Utiliser des méthodes
Utiliser des modificateurs
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
Java, les fondamentaux alphorm.com™©
266. Plan
• Les modificateurs : public, protected, private
• Visibilité par défaut, sans modificateur
• Visibilité « private »
• Visibilité « protected »
• Visibilité « public »
Java, les fondamentaux alphorm.com™©
267. Les modificateurs
• Un mot-clé que l’on place avant la déclaration du membre
• Les modificateurs de visibilité
Pour régler l’encapsulation
• Les mots-clés « static », « final », …
Java, les fondamentaux alphorm.com™©
268. La visibilité par défaut
• Un membre sans visibilité
• Toutes les classes du même package peuvent y accéder
• Intéressant pour les infos/traitements partagés par le package
Java, les fondamentaux alphorm.com™©
269. La visibilité private
• Pour protéger les données internes à l’objet
• Accessible uniquement par le code de la classe elle-même
• Les membres « private » font partie de l’implémentation
Java, les fondamentaux alphorm.com™©
270. La visibilité protected
• Un accès intermédiaire
• Toutes les classes du package y accèdent
• Et aussi toutes les classes ‘filles’ … cf héritage…
• Permet d’ouvrir un accès en direction des futures classes étendues
• Intéressant surtout pour les méthodes
Java, les fondamentaux alphorm.com™©
271. La visibilité public
• La visibilité la plus large
• Expose les accès à tout le code
• Intéressant surtout pour des méthodes
Des champs de données « public » devraient être « final »
• Correspond à des offres de services pour l’extérieur, qui appelle
• Attention à ne pas confondre visibilité et portée…
Java, les fondamentaux alphorm.com™©
272. Ce qu’on a couvert
• Les modificateurs : public, protected, private
• Visibilité par défaut, sans modificateur
• Visibilité « private »
• Visibilité « protected »
• Visibilité « public »
Java, les fondamentaux alphorm.com™©
273. Utiliser des méthodes
Utiliser la surcharge des
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
méthodes
Java, les fondamentaux alphorm.com™©
274. Plan
• La syntaxe de la surcharge
• Appeler une méthode surchargée
• La surcharge et l’héritage
Java, les fondamentaux alphorm.com™©
275. La syntaxe de la surcharge
• Plusieurs méthodes peuvent
avoir le même nom,
avec des paramètres différents
• La signature d’une méthode comprend son nom ET ses arguments
Java, les fondamentaux alphorm.com™©
276. Appeler une méthode surchargée
• Choisir les arguments à passer
Nombre d’arguments
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™©
277. La surcharge et l’héritage
• La surcharge est résolue à travers l’héritage
• Une classe fille peut enrichir l’interface en ajoutant une surcharge
• Ne pas confondre
Surcharge
Redéfinition
Java, les fondamentaux alphorm.com™©
278. Ce qu’on a couvert
• La syntaxe de la surcharge
• Appeler une méthode surchargée
• La surcharge et l’héritage
Java, les fondamentaux alphorm.com™©
279. Utiliser l’encapsulation et les
constructeurs
Créer des constructeurs
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
Java, les fondamentaux alphorm.com™©
280. Plan
• L’initialisation des objets
• Le rôle des constructeurs
• Les blocs d’initialisation
Java, les fondamentaux alphorm.com™©
281. L’initialisation des objets
• Les champs de donnée sont mis à « 0 »
0 pour les entiers, 0.0 pour les flottants, u0000 pour char
Pour les références, null et false pour les booléens
• Cette initialisation par défaut est rarement suffisante
• Il est possible de donner une valeur à la déclaration du champ
Java, les fondamentaux alphorm.com™©
282. Le rôle des constructeurs
• Par défaut, le compilateur génère un constructeur sans paramètre
• La réécriture de ce constructeur est possible
• Il est possible de créer d’autres constructeurs, avec des signatures
différentes
• Le rôle du constructeur est d’initialiser les champs de l’objet
• Afin que l’objet soit dans un bon état
Java, les fondamentaux alphorm.com™©
283. Les blocs d’initialisation
• 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™©
284. Ce qu’on a couvert
• L’initialisation des objets
• Le rôle des constructeurs
• Les blocs d’initialisation
Java, les fondamentaux alphorm.com™©
285. Utiliser l’encapsulation et les
constructeurs
Implémenter l’encapsulation
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
Java, les fondamentaux alphorm.com™©
286. Plan
• L’encapsulation par la visibilité des membres
• L’encapsulation par la visibilité des classes
Java, les fondamentaux alphorm.com™©
287. L’encapsulation par la visibilité des membres
• Les membres dans une classe sont par défaut accessible des autres
classes du package
• Les visibilités « public », « protected » et « private » permettent de
régler ces accès
• Ces visibilités s’entendent par rapport à la classe
• Cela n’a pas de rapport avec la portée
Java, les fondamentaux alphorm.com™©
288. L’encapsulation par la visibilité des classes
• Une classe par défaut n’est accessible que depuis son package
• Une classe peut être « public », et elle devient accessible de l’extérieur
• Cela n’a pas de rapport avec la portée
• Un package bien construite propose un ou plusieurs points d’entrée,
mais ne montre pas toutes les classes qu’il contient
Java, les fondamentaux alphorm.com™©
289. Ce qu’on a couvert
• L’encapsulation par la visibilité des membres
• L’encapsulation par la visibilité des classes
Java, les fondamentaux alphorm.com™©
290. Concepts avancés
Utiliser l’héritage
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
Java, les fondamentaux alphorm.com™©
291. Plan
• La relation de généralisation-spécialisation
• Les conséquences en termes d’héritage
• Le mot-clé « extends »
Java, les fondamentaux alphorm.com™©
292. La relation de généralisation-spécialisation
• Une relation statique entre classe
• Qui relie un concept général à un concept spécialisé
Chat-Félin
• Qui évite les doublons
Les membres de Félin sont hérités par le Chat
• Qui introduit des variations sur un thème
Le Chat parle d’une façon spécifique
Java, les fondamentaux alphorm.com™©
293. Les conséquences en terme d’héritage
• Les membres sont tous hérités
• Les membres publiques de l’ancêtre restent publiques sur la classe fille
• Seuls les membres privés de l’ancêtre sont inaccessibles de la fille
• La classe fille peut compléter
Les méthodes en en ajoutant
Les champs de données en en ajoutant
Les méthodes en les redéfinissant
Java, les fondamentaux alphorm.com™©
294. Le mot clé extends
• La relation de généralisation-spécialisation correspond à une extension
De type
De comportement
• Le mot clé « extends » suffit à établir la relation
• La classe fille se substitue alors à a sa mère
Java, les fondamentaux alphorm.com™©
295. Ce qu’on a couvert
• La relation de généralisation-spécialisation
• Les conséquences en termes d’héritage
• Le mot-clé « extends »
Java, les fondamentaux alphorm.com™©
296. Concepts avancés
Polymorphisme
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
Java, les fondamentaux alphorm.com™©
297. Plan
• La redéfinition des méthodes
• Mettre en oeuvre le polymorphisme
• Savoir utiliser le polymorphisme
Java, les fondamentaux alphorm.com™©
298. La redéfinition des méthodes
• La relation de généralisation-spécialisation suppose l’héritage des
membres de la classe mère par la classe fille
• Cette relation est utile lorsque la sous-classe est une spécialisation de la
super-classe
• Cette spécialisation peut être due à une redéfinition de certains
comportements
Redéclarer dans la sous-classe la même méthode que dans la super-classe,
mais modifier le corps de la méthode
Java, les fondamentaux alphorm.com™©
299. Mettre en oeuvre le polymorphisme
• Il suffit de :
Disposer d’un héritage
Redéfinir une méthode
Pointer sur un objet en tant que super-classe
Appeler la méthode redéfinie
Java, les fondamentaux alphorm.com™©
300. Savoir utiliser le polymorphisme
• Utiliser le polymorphisme lorsqu’on identifie une comportement qui
dépend du type de l’objet
Ne pas tester le type des objets
• Moindre usage de la logique conditionnelle
• Arbitrage entre simplicité et sécurité des appels
Java, les fondamentaux alphorm.com™©
301. Ce qu’on a couvert
• La redéfinition des méthodes
• Mettre en oeuvre le polymorphisme
• Savoir utiliser le polymorphisme
Java, les fondamentaux alphorm.com™©
302. Concepts avancés
Utiliser des super-classes et
des sous-classes
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
Java, les fondamentaux alphorm.com™©
303. Plan
• Des super-classes pour factoriser les membres
• Substituer des sous-classes aux super-classes
• Spécialiser les comportements des sous-classes
Java, les fondamentaux alphorm.com™©
304. Des super-classes pour factoriser
• Lorsque des classes contiennent des membres communs
• Faire apparaître une super-classe qui regroupe ces membres communs
• Cette super-classe peut être abstraite
• Elle peut contenir une ou plusieurs méthodes abstraites
Java, les fondamentaux alphorm.com™©
305. Substituer des sous-classes
• Une sous-classe doit être conforme à l’interface de la super-classe
• Elle contient 100% des données
• Elle répond à 100% des méthodes
La signification des méthodes doit être conforme
Java, les fondamentaux alphorm.com™©
306. Spécialiser le comportement
• Une sous-classe peut proposer des attributs et des méthodes en plus
• Elle peut redéfinir une ou plusieurs méthodes
Même signature, mais corps différent
• Le comportement différent repose sur le fait que la méthode s’exécute
différemment
• Pas de mot-clé spécifique, mais une annotation optionnelle
Java, les fondamentaux alphorm.com™©
307. Ce qu’on a couvert
• Des super-classes pour factoriser les membres
• Substituer des sous-classes aux super-classes
• Spécialiser les comportements des sous-classes
Java, les fondamentaux alphorm.com™©
308. Concepts avancés
Ajouter un niveau
d’abstraction
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
Java, les fondamentaux alphorm.com™©
309. Plan
• Les abstractions en Java : classes et interfaces
• Intérêts d’utiliser des abstractions
• Les abstractions dans le framework
• Analyse et conception
Java, les fondamentaux alphorm.com™©
310. Les abstractions en Java
• Une classe abstraite
Est une classe qui ne peut pas être instanciée
Peut contenir des méthodes abstraites
Contient en général des attributs et des méthodes implémentées
• Une interface
Est un type non instanciable
Ne peut contenir aucune implémentation d’instance
Java, les fondamentaux alphorm.com™©
311. Intérêts 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™©
312. Les abstractions dans le framework
• Exemple d’une classe abstraite : AbstractList
On hérite d’une classe abstraite pour profiter d’une partie d’implémentation
• Exemple d’une interface : ActionListener
Pour introduire une fonction de rappel en face d’un bouton
Java, les fondamentaux alphorm.com™©
313. Analyse et conception
• Une abstraction en analyse
Une classe abstraite pour factoriser des données et des traitements
Exemple de la bibliothèque
• Une abstraction en conception
Indépendance des modules via une interface
Java, les fondamentaux alphorm.com™©
314. Ce qu’on a couvert
• Les abstractions en Java : classes et interfaces
• Intérêts d’utiliser des abstractions
• Les abstractions dans le framework
• Analyse et conception
Java, les fondamentaux alphorm.com™©
315. Concepts avancés
Les interfaces en Java
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
Java, les fondamentaux alphorm.com™©
316. Plan
• Définition et syntaxe des interfaces
• Définir une interface
• Implémenter une interface
• Cas d’usage connus
Java, les fondamentaux alphorm.com™©
317. Définition et syntaxe d’une interface
• Une interface est un type sans implémentation
Dans son propre fichier
• Impossible d’implémenter les méthodes
• Les méthodes sont forcément public
• Si des attributs existent, ils sont « static », « final » et « public »
Java, les fondamentaux alphorm.com™©
318. Définir une interface
• En tant que code client
J’ai besoin de telles et telles méthodes
Mais je n’ai pas besoin de savoir comment elles sont implémentées
Java, les fondamentaux alphorm.com™©
319. Implémenter une interface
• S’engager à fournir une implémentation pour chaque méthode prévue
par l’interface
• Le compilateur vérifie la présence de cette implémentation
Java, les fondamentaux alphorm.com™©
320. Cas d’usage connus
• Interconnexions entre modules
• Définition des services d’objets distribués
Sous-interface de Remote
• Définition des webservices
• Abstraction des conteneurs : List, Set, Map…
Java, les fondamentaux alphorm.com™©
321. Ce qu’on a couvert
• Définition et syntaxe des interfaces
• Définir une interface
• Implémenter une interface
• Cas d’usage connus
Java, les fondamentaux alphorm.com™©
322. La gestion des erreurs
Les différents types d’erreur
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
Java, les fondamentaux alphorm.com™©
323. Plan
• Les erreurs de syntaxe
• Les erreurs de logique, de programmation
• Les erreurs exceptionnelles dues à l’environnement
Java, les fondamentaux alphorm.com™©
324. Les erreurs de syntaxe
• Empêchent la compilation
• Seront corrigées pour livrer
• Attention, en Java la compilation de chaque classe est indépendante
• Exemple : erreur de syntaxe empêchant la compilation
Java, les fondamentaux alphorm.com™©
325. Les erreurs de logique, de programmation
• « Une bonne lecture élimine 80% des erreurs »
• N’ont pas à être gérées
• Doivent être corrigées par le développeur
Garder un code lisible
Réfléchir la conception avant d’écrire le code
• Exemple : une variable référence n’est pas initialisée
Java, les fondamentaux alphorm.com™©
326. Les erreurs exceptionnelles
• Dues à l’environnement d’exécution, difficiles à prévoir
• Sont souvent « gérées » : le compilateur les détecte
• Typiquement non prises en compte lors du prototypage
• Exemple : un fichier n’existe pas alors qu’il devrait
Java, les fondamentaux alphorm.com™©
327. Ce qu’on a couvert
• Les erreurs de syntaxe
• Les erreurs de logique, de programmation
• Les erreurs exceptionnelles dues à l’environnement
Java, les fondamentaux alphorm.com™©
328. La gestion des erreurs
Présentation des types
d’exceptions
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
Java, les fondamentaux alphorm.com™©
329. Plan
• Nature de l’exception
• Les exceptions runtime
• Les exceptions gérées
• Les exceptions de l’utilisateur
Java, les fondamentaux alphorm.com™©
330. Nature de l’exception
• Une exception est un objet
• D’une classe qui hérite de java.lang.Exception
• Cet objet est créé lors de la levée de l’exception
• Il est récupéré dans le bloc du gestionnaire d’erreur
Java, les fondamentaux alphorm.com™©
331. Les exceptions runtime
• Exceptions qui correspondent à des erreurs de programmation
• Ne sont pas gérées : non signalées par le compilateur
• NullPointerException : accès à un membre via une référence null
• IllegalArgumentException : l’argument ne correspond pas à l’attendu
• ArrayIndexOutOfBoundException : débordement d’un tableau
• ArithmeticException : exceptions comme la division entière par zéro
Java, les fondamentaux alphorm.com™©
332. Les exceptions gérées
• Ces exceptions correspondent à des erreurs dues à l’environnement
Ressources non disponibles, manque de droits d’accès,…
• Spécifiées par les méthodes
• Prise en compte par le compilateur qui oblige à gérer l’appel
• FileNotFoundException : fichier non trouvé
• IOException : problème d’accès aux entrées-sorties
• SqlException : erreur remontée du SGBD
Java, les fondamentaux alphorm.com™©
333. Les exceptions de l’utilisateur
• Créer une classe qui hérite de java.lang.Exception
Attributs, méthodes, constructeurs comme toute classe
• Créer un objet de cette classe et utiliser « throw »
• Les erreurs bas-niveau doivent être signalées par des exceptions
Java, les fondamentaux alphorm.com™©
334. Ce qu’on a couvert
• Nature de l’exception
• Les exceptions runtime
• Les exceptions gérées
• Les exceptions de l’utilisateur
Java, les fondamentaux alphorm.com™©
335. La gestion des erreurs
Utiliser Javadocs pour
rechercher des exceptions
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
Java, les fondamentaux alphorm.com™©
336. Plan
• Le rôle du compilateur pour les exceptions gérées
• La spécification des exceptions par les méthodes
Java, les fondamentaux alphorm.com™©
337. Le rôle du compilateur
• Le compilateur lit la spécification des exceptions
• Il engage le développeur à gérer les exceptions
• Ce contrôle n’est pas réalisé pour les exceptions runtime
Java, les fondamentaux alphorm.com™©
338. La spécification des exceptions
• La documentation référence les exceptions levées par les méthodes
Trouver la classe qui contient la méthode
Trouver la spécification des exceptions
• Pour les exceptions gérées, le compilateur nous guide
• Exemple : Integer.parseInt(…)
Java, les fondamentaux alphorm.com™©
339. Ce qu’on a couvert
• Le rôle du compilateur pour les exceptions gérées
• La spécification des exceptions par les méthodes
Java, les fondamentaux alphorm.com™©
340. La gestion des erreurs
Ecrire du code pour gérer
les exceptions
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
Java, les fondamentaux alphorm.com™©
341. Plan
• Gérer une exception détectée par le compilateur
• Lever une exception
• Créer son propre type d’exception
• Réinterpréter une exception
Java, les fondamentaux alphorm.com™©
342. Gérer une exception
• Le mot-clé « try » permet d’isoler le code nominal
• Correspond à une méthode
• Suivi de un ou plusieurs blocs « catch » qui sont typés par une classe
d’exception
• Soit le try s’exécute puis le code après les catch
• Soit le try est interrompu et un catch est exécuté, puis le code après le
catch
• Possibilité de placer un bloc « finally », toujours exécuté
Java, les fondamentaux alphorm.com™©
343. Lever une exception
• Utiliser le mot-clé « throw » pour lever une exception
• Cette exception est simplement un objet créé pour l’occasion
• Branchement à l’exécution vers le plus proche « catch »
Remonte vers les appelants en cherchant un bloc catch qui accepte l’objet
levé
• Il faut spécifier la levée d’exception dans la signature de la méthode
Sauf pour une exception runtime
Java, les fondamentaux alphorm.com™©