Page 1
Présentation de la formation
Java les fondamentaux
Java, les fondamentaux alphorm.com™©
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Java les fondamentaux (examen 1Z0-803)
Page 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
Java, les fondamentaux alphorm.com™©
• Présentation des outils
• Les publics concernés
Page 3
Présentation du formateur• Fabien Brissonneau
• Email : [email protected]
• Consultant Concepteur et Formateur
• Missions d’architecture, de conception , de réalisation logicielles
• Fondateur de eiXa6
• Actuellement en mission sur un projet de gestion
Java, les fondamentaux alphorm.com™©
• 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/
Page 4
Mes formations sur alphorm
Java, les fondamentaux alphorm.com™©
Page 5
Les autres formations dév sur Alphorm
Java, les fondamentaux alphorm.com™©
Page 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
Java, les fondamentaux alphorm.com™©
• Avec un très grande bibliothèque de classes
Page 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
Java, les fondamentaux alphorm.com™©
• Utiliser des objets
• Utiliser des opérateurs et des décisions
• Créer et utiliser des tableaux
• Utiliser des structures en boucles
• Gestion des erreurs
• Vue d’ensemble
Page 8
Certification OCA suite à l’examen 1Z0-803
Java, les fondamentaux alphorm.com™©
Page 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
Java, les fondamentaux alphorm.com™©
• Nous utiliserons aussi Eclipse
• La présentation sera faite sous Windows 7
Page 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™©
Page 11
Scoop • Formation à apparaitre prochainement sur alphorm
Java, les fondamentaux alphorm.com™©
Page 12
Allons-y !…• Nous pouvons démarrer !!
Java, les fondamentaux alphorm.com™©
Page 13
Présentation
Associer Java à d’autres
Java, les fondamentaux alphorm.com™©
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Associer Java à d’autres langages
Page 14
Plan• Historique
• Caractéristiques essentielles du langage
• Comparer Java à C++
• Comparer Java à C#
• Comparer Java à Python
Java, les fondamentaux alphorm.com™©
• Comparer Java à Python
Page 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™©
Page 16
Caractéristiques essentielles• Langage à la syntaxe simple
• Langage généraliste
• Langage indépendant de la plateforme
• Langage orienté objet
Java, les fondamentaux alphorm.com™©
• Langage prévu pour le support du réseau
Page 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
Java, les fondamentaux alphorm.com™©
• 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
Page 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
Java, les fondamentaux alphorm.com™©
• 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
Page 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
Java, les fondamentaux alphorm.com™©
• 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
Page 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
Java, les fondamentaux alphorm.com™©
� 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
Page 21
Présentation
Téléchargement et
Java, les fondamentaux alphorm.com™©
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Téléchargement et installation de Java
Page 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™©
Page 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)
Java, les fondamentaux alphorm.com™©
� 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
Page 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,…)
Java, les fondamentaux alphorm.com™©
� 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
Page 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
Java, les fondamentaux alphorm.com™©
• NetBeans 8 utilise n’importe quel jdk 7 ou 8, il le référence par jdkhome
Page 26
Configuration des outils• Netbeans
• Eclipse
• Ligne de commande
� PATH
Java, les fondamentaux alphorm.com™©
� CLASSPATH
� JAVA_HOME / JRE_HOME
Page 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™©
Page 28
Présentation
Les technologies Java
Java, les fondamentaux alphorm.com™©
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Les technologies Java
Page 29
Plan• Java SE
• Java EE
• Embedded Java
Java, les fondamentaux alphorm.com™©
Page 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
Java, les fondamentaux alphorm.com™©
• Le runtime JavaFX
• La machine virtuelle Oracle JRockit
Page 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
Java, les fondamentaux alphorm.com™©
• Une plateforme pour déployer des applications d’entreprise (robustesse, Web services, déploiement facilité)
Page 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™©
Page 33
Ce qu’on a couvert• Java SE
• Java EE
• Embedded Java
Java, les fondamentaux alphorm.com™©
Page 34
Présentation
Caractéristiques principales
Java, les fondamentaux alphorm.com™©
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Caractéristiques principales et les avantages de la
technologie Java
Page 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™©
• L’ouverture des technologies
Page 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™©
Page 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™©
Page 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™©
Page 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™©
Page 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™©
Page 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™©
• L’ouverture des technologies
Page 42
Présentation
Utiliser un environnement
Java, les fondamentaux alphorm.com™©
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Utiliser un environnement de développement intégré
Page 43
Plan• L’IDE Netbeans
• Créer un projet
• Produire à partir du projet
• L’IDE Eclipse
Java, les fondamentaux alphorm.com™©
Page 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™©
Page 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
Java, les fondamentaux alphorm.com™©
• Le projet est « typé », les répertoires sont différemment organisés
Page 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™©
Page 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
Java, les fondamentaux alphorm.com™©
• Multilangages, multi-utilisations
Page 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™©
Page 49
Penser en termes d’objets
Définir le domaine du
Java, les fondamentaux alphorm.com™©
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Définir le domaine du problème
Page 50
Plan• 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™©
Page 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™©
Page 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™©
• Le modèle du domaine est quasiment hors informatique
Page 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™©
Page 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
Java, les fondamentaux alphorm.com™©
• Le code n’invente quasi rien
• Le corps des méthodes n’est pas spécifié par un modèle de classes
Page 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™©
Page 56
Penser en termes d’objets
Identifier les objets
Java, les fondamentaux alphorm.com™©
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Identifier les objets
Page 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™©
• Vocabulaire
Page 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™©
Page 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…)
Java, les fondamentaux alphorm.com™©
• Il y a plusieurs sortes de classes (métier, applicatives…)
• Une classe est lisible dans les services qu’elle rend
Page 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™©
Page 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™©
Page 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 :
Java, les fondamentaux alphorm.com™©
� des attributs (données)
� des méthodes (traitements)
Page 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™©
• Vocabulaire
Page 64
Présentation du langage Java
Définir les classes
Java, les fondamentaux alphorm.com™©
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Définir les classes
Page 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™©
Page 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
Java, les fondamentaux alphorm.com™©
• 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
Page 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™©
Page 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™©
• L’appel d’un constructeur est implicite
Page 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™©
Page 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™©
Page 71
Présentation du langage Java
Identifier les composants
Java, les fondamentaux alphorm.com™©
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Identifier les composants d’une classe
Page 72
Plan• Les composants possibles
• Créer des attributs
• Créer des constructeurs
• Créer des méthodes
Java, les fondamentaux alphorm.com™©
Page 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é
Java, les fondamentaux alphorm.com™©
• L’ordre de leurs déclarations n’est pas significatif
Page 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 :
Java, les fondamentaux alphorm.com™©
• 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
Page 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™©
Page 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
Java, les fondamentaux alphorm.com™©
• 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
Page 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™©
Page 78
Présentation du langage Java
Créer et utiliser une classe
Java, les fondamentaux alphorm.com™©
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Créer et utiliser une classe de test
Page 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™©
Page 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™©
Page 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™©
Page 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™©
Page 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™©
Page 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™©
Page 85
Présentation du langage Java
Compiler et exécuter un
Java, les fondamentaux alphorm.com™©
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Compiler et exécuter un programme de test
Page 86
Plan• Création d’un programme de test
• Lancement d’un programme de test JUnit
Java, les fondamentaux alphorm.com™©
Page 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™©
Page 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™©
Page 89
Ce qu’on a couvert• Création d’un programme de test
• Lancement d’un programme de test
Java, les fondamentaux alphorm.com™©
Page 90
Utiliser des primitives
Déclarer et initialiser des
Java, les fondamentaux alphorm.com™©
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Déclarer et initialiser des variables de champs
Page 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™©
Page 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™©
Page 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™©
Page 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™©
Page 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™©
Page 96
Utiliser des primitives
Décrire les types primitifs
Java, les fondamentaux alphorm.com™©
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Décrire les types primitifs
Page 97
Plan• Les types entiers
• Les types flottants
• Le type caractère
• Le type booléen
Java, les fondamentaux alphorm.com™©
Page 98
Les types entiers• Un octet signé : byte
• Deux octets signés : short
• Quatre octets signés : int
• Huit octets signés : long
Java, les fondamentaux alphorm.com™©
• 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
Page 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™©
Page 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™©
Page 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™©
Page 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™©
Page 103
Utiliser des primitives
Déclarer des variables et
Java, les fondamentaux alphorm.com™©
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Déclarer des variables et leur affecter des valeurs
Page 104
Plan• Les variables en Java
• Comportement des variables locales
• L’affectation d’une valeur à une variable locale
Java, les fondamentaux alphorm.com™©
Page 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
Java, les fondamentaux alphorm.com™©
• Notez l’absence de variable globale
Page 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™©
Page 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
Java, les fondamentaux alphorm.com™©
• Tous les chemins doivent donner une valeur à la variable
• Certaines variables sont utilisées en retour de fonctions
Page 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™©
Page 109
Utiliser des primitives
Utiliser des constantes
Java, les fondamentaux alphorm.com™©
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Utiliser des constantes
Page 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™©
Page 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
Java, les fondamentaux alphorm.com™©
• Par convention, le nom de la variable est en majuscules
Page 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™©
• Exemple : Math.PI
Page 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™©
« const » du C++
Page 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™©
Page 115
Utiliser des primitives
Utiliser des opérateurs
Java, les fondamentaux alphorm.com™©
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Utiliser des opérateurs arithmétiques
Page 116
Plan• Les opérateurs arithmétiques en Java
• Le comportement des types
Java, les fondamentaux alphorm.com™©
Page 117
Les opérateurs arithmétiques• Opérateurs +, -, / , *
• Opérateurs combinant affectation et opération +=, -=, /=,*=
• Opérateurs unaires ++, --
• L’opérateur % (modulo)
Java, les fondamentaux alphorm.com™©
• Pas de surcharge possible des opérateurs
• Il existe des opérateurs au niveau des bits : &, ~ ,… décalage <<, >>, …
Page 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 :
Java, les fondamentaux alphorm.com™©
� 1 est un int
� 1.0 est un double
Page 119
Ce qu’on a couvert• Les opérateurs arithmétiques en Java
• Le comportement des types
Java, les fondamentaux alphorm.com™©
Page 120
Utiliser des objets
Déclarer et initialiser des
Java, les fondamentaux alphorm.com™©
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Déclarer et initialiser des objets
Page 121
Plan• Référence vs objet
• Référence locale, paramètre
• Référence en attribut
Java, les fondamentaux alphorm.com™©
Page 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é
Java, les fondamentaux alphorm.com™©
• Voiture titine = new Voiture()
Page 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
Java, les fondamentaux alphorm.com™©
• À partir d’une autre référence
• En créant un objet
Page 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
Java, les fondamentaux alphorm.com™©
� Initialisation lors de la déclaration ou dans un constructeur
Page 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™©
Page 126
Utiliser des objets
Stocker des objets en
Java, les fondamentaux alphorm.com™©
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Stocker des objets en mémoire
Page 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™©
Page 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
Java, les fondamentaux alphorm.com™©
� 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
Page 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™©
• Il faut que le développeur pense à mettre ses références à « null »
Page 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™©
Page 131
Utiliser des objets
Utiliser des références
Java, les fondamentaux alphorm.com™©
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Utiliser des références d’objets
Page 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™©
Page 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 :
Java, les fondamentaux alphorm.com™©
� 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
Page 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
Java, les fondamentaux alphorm.com™©
• Un accès direct à un champ est rare, car cela ne respecte pas l’encapsulation
Page 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
Java, les fondamentaux alphorm.com™©
� 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
Page 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™©
Page 137
Utiliser des objets
Utiliser les javadocs
Java, les fondamentaux alphorm.com™©
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Utiliser les javadocs
Page 138
Plan• Qu’est-ce que javadoc ?
• Visiter la documentation de jse
• Appliquer la documentation dans son code
Java, les fondamentaux alphorm.com™©
Page 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™©
Page 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™©
Page 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™©
Page 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™©
Page 143
Utiliser des objets
Utiliser des objets String et
Java, les fondamentaux alphorm.com™©
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Utiliser des objets String et StringBuilder
Page 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™©
Page 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
Java, les fondamentaux alphorm.com™©
• Voir la documentation pour les détails
Page 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™©
Page 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™©
• On obtient à tout moment le buffer via toString()
Page 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™©
Page 149
Utiliser des opérateurs et des structures décisionnelles
Opérateurs relationnels et
Java, les fondamentaux alphorm.com™©
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Opérateurs relationnels et conditionnels
Page 150
Plan• Les opérateurs relationnels
• Les opérateurs conditionnels
Java, les fondamentaux alphorm.com™©
Page 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™©
Page 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 :
Java, les fondamentaux alphorm.com™©
� (a > b )? A : b
� Si a est supérieur à b alors a sinon b
Page 153
Ce qu’on a couvert• Les opérateurs relationnels
• Les opérateurs conditionnels
Java, les fondamentaux alphorm.com™©
Page 154
Utiliser des opérateurs et des structures décisionnelles
Tester l’égalité entre chaînes
Java, les fondamentaux alphorm.com™©
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Tester l’égalité entre chaînes
Page 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™©
Page 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
Java, les fondamentaux alphorm.com™©
• 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
Page 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™©
casse
Page 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™©
Page 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™©
Page 160
Utiliser des opérateurs et des structures décisionnelles
Evaluer différentes
Java, les fondamentaux alphorm.com™©
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Evaluer différentes conditions et coder
Page 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™©
Page 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™©
Page 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
Java, les fondamentaux alphorm.com™©
• La condition est mise entre parenthèses
• La condition peut être complexe, utilisant les opérateurs booléens
Page 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
Java, les fondamentaux alphorm.com™©
� Facile à boguer, la logique est compliquée
• Les conditions elles-mêmes sont rapidement trop complexes
Page 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™©
Page 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™©
Page 167
Utiliser des opérateurs et des structures décisionnelles
Créer des if et if/else
Java, les fondamentaux alphorm.com™©
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Créer des if et if/else
Page 168
Plan• L’instruction « if »
• Le couple « if / else »
• L’intense « if / else / if /else / … »
Java, les fondamentaux alphorm.com™©
Page 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 »
Java, les fondamentaux alphorm.com™©
• Mais on va placer plusieurs instructions grâce aux accolades
Page 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™©
Page 171
L’intense …• Enchaîner des « if / else if / … » est rarement une bonne idée
Java, les fondamentaux alphorm.com™©
Page 172
Ce qu’on a couvert• L’instruction « if »
• Le couple « if / else »
• L’intense « if / else / if /else / … »
Java, les fondamentaux alphorm.com™©
Page 173
Utiliser des opérateurs et des structures décisionnelles
Enchaîner les conditions
Java, les fondamentaux alphorm.com™©
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Enchaîner les conditions
Page 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™©
Page 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™©
Page 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™©
Page 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
Java, les fondamentaux alphorm.com™©
faut penser polymorphisme
• Les conditions sont souvent des primitives
• La combinaison des variables de conditions reflète le résultat d’une méthode
Page 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™©
Page 179
Utiliser des opérateurs et des structures décisionnelles
L’instruction switch
Java, les fondamentaux alphorm.com™©
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
L’instruction switch
Page 180
Plan• Forme générale du switch
• Quand utiliser switch
• Quand ne pas utiliser switch
Java, les fondamentaux alphorm.com™©
Page 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™©
Page 182
Quand utiliser le switch• Reste simple et inévitable
Java, les fondamentaux alphorm.com™©
Page 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™©
Page 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™©
Page 185
Créer et utiliser des tableaux
Déclarer et instancier un
Java, les fondamentaux alphorm.com™©
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Déclarer et instancier un tableau à 1 dimension
Page 186
Plan• Qu’est-ce qu’un tableau ?
• Tableau de primitives
• Tableau d’objets
Java, les fondamentaux alphorm.com™©
Page 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™©
Page 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™©
Page 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™©
Page 190
Ce qu’on a couvert• Qu’est-ce qu’un tableau ?
• Tableau de primitives
• Tableau d’objets
Java, les fondamentaux alphorm.com™©
Page 191
Créer et utiliser des tableaux
Déclarer et instancier un
Java, les fondamentaux alphorm.com™©
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Déclarer et instancier un tableau à 2 dimensions
Page 192
Plan• Qu’est-ce qu’un tableau à deux dimensions?
• Les services de ce tableau
Java, les fondamentaux alphorm.com™©
Page 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™©
Page 194
Les services de ce tableau• L’attribut en lecture seule « length » est disponible pour les 2
dimensions
Java, les fondamentaux alphorm.com™©
Page 195
Ce qu’on a couvert• Qu’est-ce qu’un tableau à deux dimensions?
• Les services de ce tableau
Java, les fondamentaux alphorm.com™©
Page 196
Créer et utiliser des tableaux
Utiliser une boucle for dans
Java, les fondamentaux alphorm.com™©
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Utiliser une boucle for dans le tableau
Page 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™©
Page 198
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™©
Page 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™©
Page 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™©
Page 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™©
Page 202
Créer et utiliser des tableaux
Créer et initialiser une
Java, les fondamentaux alphorm.com™©
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Créer et initialiser une ArrayList
Page 203
Plan• Qu’est-ce que java.util.ArrayList ?
• Comment initialiser une ArrayList
• Parcourir une ArrayList
Java, les fondamentaux alphorm.com™©
Page 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™©
Page 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™©
Page 206
Parcourir une ArrayList• En utilisant un indice jusqu’à « size »
• En utilisant le for « each »
Java, les fondamentaux alphorm.com™©
Page 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™©
Page 208
Créer et utiliser des tableaux
Utiliser l’instruction import
Java, les fondamentaux alphorm.com™©
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Utiliser l’instruction import
Page 209
Plan• Le package java.util
• Utiliser import
Java, les fondamentaux alphorm.com™©
Page 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™©
• Cela garantit l’absence de collision entre les noms de classes
Page 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
Java, les fondamentaux alphorm.com™©
• Pas d’import du package lui-même
• On importe des classes d’un package
• On peut importer toutes les classes d’un package
Page 212
Ce qu’on a couvert• Le package java.util
• Utiliser import
Java, les fondamentaux alphorm.com™©
Page 213
Créer et utiliser des tableaux
Accéder à une valeur d’un
Java, les fondamentaux alphorm.com™©
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Accéder à une valeur d’un tableau
Page 214
Plan• Accéder aux valeurs dans un tableau
• Accéder aux valeurs dans une ArrayList
Java, les fondamentaux alphorm.com™©
Page 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
Java, les fondamentaux alphorm.com™©
• Le tableau ne se redimensionne pas
Page 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™©
Page 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™©
Page 218
Créer et utiliser des tableaux
Utiliser le tableau args
Java, les fondamentaux alphorm.com™©
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Utiliser le tableau args
Page 219
Plan• Les arguments de la ligne de commande
• Parcourir le tableau
• Convertir les éléments de ce tableau
Java, les fondamentaux alphorm.com™©
Page 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™©
Page 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™©
Page 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™©
� Rechercher le type
Page 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™©
Page 224
Utiliser des boucles
Coder une do/while
Java, les fondamentaux alphorm.com™©
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Coder une do/while
Page 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™©
Page 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™©
Page 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™©
Page 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™©
Page 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™©
Page 230
Utiliser des boucles
Développer une boucle for
Java, les fondamentaux alphorm.com™©
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Développer une boucle for
Page 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™©
Page 232
Les composants d’une boucle for• Initialisation
• Tant que
• Incrément
Java, les fondamentaux alphorm.com™©
Page 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™©
Page 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
Java, les fondamentaux alphorm.com™©
• Utiliser des conditions d’arrêt compliquées
Page 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™©
Page 236
Utiliser des boucles
Utiliser des ArrayList dans
Java, les fondamentaux alphorm.com™©
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Utiliser des ArrayList dans une boucle for
Page 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™©
Page 238
Remarques sur le contenu d’une ArrayList• ArrayList est une implémentation tableau
• Depuis Java5, ArrayList peut être typé : ArrayList<String>
• Avant, ArrayList contient des Object
• Il est possible de récupérer le ième élément du tableau
Java, les fondamentaux alphorm.com™©
• L’ordre est conservé !
Page 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™©
Page 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™©
Page 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™©
Page 242
Utiliser des boucles
Comprendre la portée des
Java, les fondamentaux alphorm.com™©
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Comprendre la portée des variables
Page 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™©
Page 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
Java, les fondamentaux alphorm.com™©
• En Java, les blocs { … } limite la portée d’une variable
Page 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
Java, les fondamentaux alphorm.com™©
� Variable attribut
• Les paramètres sont des sortes de variables locales
� La valeur est fournie par l’appelant
Page 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™©
Page 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
Java, les fondamentaux alphorm.com™©
• Avec le « static », certains essaient de recréer la situation d’une portée globale
Page 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™©
Page 249
Utiliser des méthodes
Créer et appeler des
Java, les fondamentaux alphorm.com™©
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Créer et appeler des méthodes
Page 250
Plan• Créer une méthode dans une classe
• Appeler une méthode
Java, les fondamentaux alphorm.com™©
Page 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
Java, les fondamentaux alphorm.com™©
• Les variables : locale, paramètre, champ
• Le retour n’est pas obligatoire
Page 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™©
Page 253
Ce qu’on a couvert• Créer une méthode dans une classe
• Appeler une méthode
Java, les fondamentaux alphorm.com™©
Page 254
Utiliser des méthodes
Transmettre des arguments
Java, les fondamentaux alphorm.com™©
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Transmettre des arguments
Page 255
Plan• Le passage des arguments à l’appel
• Le passage de primitives
• Le passage d’objets
Java, les fondamentaux alphorm.com™©
Page 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
Java, les fondamentaux alphorm.com™©
• Il n’est pas possible d’omettre des arguments
• Pas de valeurs par défaut sur les paramètres
Page 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™©
Page 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™©
Page 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™©
Page 260
Utiliser des méthodes
Créer des méthodes et des
Java, les fondamentaux alphorm.com™©
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Créer des méthodes et des variables statiques
Page 261
Plan• Créer des variables statiques et les utiliser
• Créer des méthodes statiques et les utiliser
Java, les fondamentaux alphorm.com™©
Page 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
Java, les fondamentaux alphorm.com™©
� Unicité de l’information pour tous les objets
� Accès aux données sans objet
• Utilisation dénoncée : une variable globale en Java !!
Page 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
Java, les fondamentaux alphorm.com™©
� 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
� …
Page 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™©
Page 265
Utiliser des méthodes
Utiliser des modificateurs
Java, les fondamentaux alphorm.com™©
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Utiliser des modificateurs
Page 266
Plan• Les modificateurs : public, protected, private
• Visibilité par défaut, sans modificateur
• Visibilité « private »
• Visibilité « protected »
• Visibilité « public »
Java, les fondamentaux alphorm.com™©
• Visibilité « public »
Page 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™©
Page 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™©
Page 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™©
Page 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
Java, les fondamentaux alphorm.com™©
• Intéressant surtout pour les méthodes
Page 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 »
Java, les fondamentaux alphorm.com™©
• Correspond à des offres de services pour l’extérieur, qui appelle
• Attention à ne pas confondre visibilité et portée…
Page 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™©
• Visibilité « public »
Page 273
Utiliser des méthodes
Utiliser la surcharge des
Java, les fondamentaux alphorm.com™©
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Utiliser la surcharge des méthodes
Page 274
Plan• La syntaxe de la surcharge
• Appeler une méthode surchargée
• La surcharge et l’héritage
Java, les fondamentaux alphorm.com™©
Page 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™©
Page 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
Java, les fondamentaux alphorm.com™©
• Tout est figé à la compilation
• On parle parfois de polymorphisme de surcharge
Page 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
Java, les fondamentaux alphorm.com™©
� Redéfinition
Page 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™©
Page 279
Utiliser l’encapsulation et les constructeurs
Créer des constructeurs
Java, les fondamentaux alphorm.com™©
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Créer des constructeurs
Page 280
Plan• L’initialisation des objets
• Le rôle des constructeurs
• Les blocs d’initialisation
Java, les fondamentaux alphorm.com™©
Page 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™©
• Il est possible de donner une valeur à la déclaration du champ
Page 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
Java, les fondamentaux alphorm.com™©
• Le rôle du constructeur est d’initialiser les champs de l’objet
• Afin que l’objet soit dans un bon état
Page 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™©
Page 284
Ce qu’on a couvert• L’initialisation des objets
• Le rôle des constructeurs
• Les blocs d’initialisation
Java, les fondamentaux alphorm.com™©
Page 285
Utiliser l’encapsulation et les constructeurs
Implémenter l’encapsulation
Java, les fondamentaux alphorm.com™©
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Implémenter l’encapsulation
Page 286
Plan• L’encapsulation par la visibilité des membres
• L’encapsulation par la visibilité des classes
Java, les fondamentaux alphorm.com™©
Page 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
Java, les fondamentaux alphorm.com™©
• Cela n’a pas de rapport avec la portée
Page 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™©
mais ne montre pas toutes les classes qu’il contient
Page 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™©
Page 290
Concepts avancés
Utiliser l’héritage
Java, les fondamentaux alphorm.com™©
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Utiliser l’héritage
Page 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™©
Page 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
Java, les fondamentaux alphorm.com™©
� 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
Page 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
Java, les fondamentaux alphorm.com™©
� Les méthodes en en ajoutant
� Les champs de données en en ajoutant
� Les méthodes en les redéfinissant
Page 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™©
• La classe fille se substitue alors à a sa mère
Page 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™©
Page 296
Concepts avancés
Polymorphisme
Java, les fondamentaux alphorm.com™©
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Polymorphisme
Page 297
Plan• La redéfinition des méthodes
• Mettre en œuvre le polymorphisme
• Savoir utiliser le polymorphisme
Java, les fondamentaux alphorm.com™©
Page 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
Java, les fondamentaux alphorm.com™©
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
Page 299
Mettre en œuvre 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™©
� Appeler la méthode redéfinie
Page 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™©
• Arbitrage entre simplicité et sécurité des appels
Page 301
Ce qu’on a couvert• La redéfinition des méthodes
• Mettre en œuvre le polymorphisme
• Savoir utiliser le polymorphisme
Java, les fondamentaux alphorm.com™©
Page 302
Concepts avancés
Utiliser des super-classes et
Java, les fondamentaux alphorm.com™©
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Utiliser des super-classes et des sous-classes
Page 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™©
Page 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™©
Page 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™©
Page 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
Java, les fondamentaux alphorm.com™©
différemment
• Pas de mot-clé spécifique, mais une annotation optionnelle
Page 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™©
Page 308
Concepts avancés
Ajouter un niveau
Java, les fondamentaux alphorm.com™©
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Ajouter un niveau d’abstraction
Page 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™©
Page 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
Java, les fondamentaux alphorm.com™©
• Une interface
� Est un type non instanciable
� Ne peut contenir aucune implémentation d’instance
Page 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™©
Page 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™©
Page 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™©
� Indépendance des modules via une interface
Page 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™©
Page 315
Concepts avancés
Les interfaces en Java
Java, les fondamentaux alphorm.com™©
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Les interfaces en Java
Page 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™©
Page 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
Java, les fondamentaux alphorm.com™©
• Si des attributs existent, ils sont « static », « final » et « public »
Page 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™©
Page 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™©
Page 320
Cas d’usage connus• Interconnexions entre modules
• Définition des services d’objets distribués
� Sous-interface de Remote
• Définition des webservices
Java, les fondamentaux alphorm.com™©
• Abstraction des conteneurs : List, Set, Map…
Page 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™©
Page 322
La gestion des erreurs
Les différents types d’erreur
Java, les fondamentaux alphorm.com™©
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Les différents types d’erreur
Page 323
Plan• Les erreurs de syntaxe
• Les erreurs de logique, de programmation
• Les erreurs exceptionnelles dues à l’environnement
Java, les fondamentaux alphorm.com™©
Page 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™©
Page 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
Java, les fondamentaux alphorm.com™©
� Réfléchir la conception avant d’écrire le code
• Exemple : une variable référence n’est pas initialisée
Page 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™©
Page 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™©
Page 328
La gestion des erreurs
Présentation des types
Java, les fondamentaux alphorm.com™©
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Présentation des types d’exceptions
Page 329
Plan• Nature de l’exception
• Les exceptions runtime
• Les exceptions gérées
• Les exceptions de l’utilisateur
Java, les fondamentaux alphorm.com™©
Page 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™©
Page 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
Java, les fondamentaux alphorm.com™©
• ArrayIndexOutOfBoundException : débordement d’un tableau
• ArithmeticException : exceptions comme la division entière par zéro
Page 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
Java, les fondamentaux alphorm.com™©
• FileNotFoundException : fichier non trouvé
• IOException : problème d’accès aux entrées-sorties
• SqlException : erreur remontée du SGBD
Page 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™©
Page 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™©
Page 335
La gestion des erreurs
Utiliser Javadocs pour
Java, les fondamentaux alphorm.com™©
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Utiliser Javadocs pour rechercher des exceptions
Page 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™©
Page 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™©
Page 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™©
• Exemple : Integer.parseInt(…)
Page 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™©
Page 340
La gestion des erreurs
Ecrire du code pour gérer
Java, les fondamentaux alphorm.com™©
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Ecrire du code pour gérer les exceptions
Page 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™©
Page 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
Java, les fondamentaux alphorm.com™©
• 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é
Page 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é
Java, les fondamentaux alphorm.com™©
levé
• Il faut spécifier la levée d’exception dans la signature de la méthode
� Sauf pour une exception runtime
Page 344
Créer son propre type d’exception• Créer une classe qui hérite (au moins) de java.lang.Exception
• Déclarer les membres et constructeurs nécessaires
� Pour capter le contexte d’erreur (à la construction de l’objet, « throw »)
� Pour restituer les infos sur l’erreur (dans un « catch »)
Lever cette exception lorsqu’on détecte les situations irrécupérables
Java, les fondamentaux alphorm.com™©
• Lever cette exception lorsqu’on détecte les situations irrécupérables
Page 345
Réinterpréter une exception• Dans un bloc catch, relancer une exception
• Pour réinterpréter l’exception, la nouvelle exception étant :
� Plus claire dans le contexte de l’utilisateur
� Traduite dans la culture du poste
D’une granularité différente de l’exception d’origine
Java, les fondamentaux alphorm.com™©
� D’une granularité différente de l’exception d’origine
� L’occasion de rétablir l’état du système
Page 346
Ce qu’on a couvert• 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™©
Page 347
Vue d’ensemble
Créer des packages et des
Java, les fondamentaux alphorm.com™©
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Créer des packages et des fichier .jar
Page 348
Plan• Les packages
• Les fichiers .jar
• Utiliser des fichiers .jar pour livrer une application
Java, les fondamentaux alphorm.com™©
Page 349
Les packages• Conceptuellement : un regroupement de classes
• Physiquement : un répertoire qui contient les fichiers .java
• Logiquement : un sous-système qui isole des classes travaillant ensemble et proposant des points d’entrée
Java, les fondamentaux alphorm.com™©
Page 350
Les fichiers .jar• Créé par l’outil jar (disponible dans le jdk)
• Fichier compressé zippé
• Contient tout et n’importe quoi, mais surtout :
� Des fichiers .class (binaire Java)
Java, les fondamentaux alphorm.com™©
� Un manifeste : description du contenu, en particulier la classe qui contient le « main »
Page 351
Utiliser les fichiers .jar pour livrer • Il n’y a pas d’exe en Java
• Pour livrer une bibliothèque de classes
� Les classes restent organisées en packages, répertoires
• Pour livrer une application
Java, les fondamentaux alphorm.com™©
� En spécifiant la classe principale
Page 352
Ce qu’on a couvert• Les packages
• Les fichiers .jar
• Utiliser des fichiers .jar pour livrer une application
Java, les fondamentaux alphorm.com™©
Page 353
Vue d’ensemble
Architecture en 2 ou 3
Java, les fondamentaux alphorm.com™©
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Architecture en 2 ou 3 niveaux
Page 354
Plan• Architecture et niveaux
• Architecture 2 niveaux
• Architecture 3 niveaux
Java, les fondamentaux alphorm.com™©
Page 355
Architecture et niveaux• L’architecture est l’effort d’organisation générale de l’application
• La conception devra se conformer à l’architecture
• Faire plusieurs niveaux permet de séparer les responsabilités
� Améliorer la maintenabilité de chaque niveau
Java, les fondamentaux alphorm.com™©
� Améliorer la cohérence
� Favoriser l’évolutivité
Page 356
Architecture 2 niveaux• Séparer la présentation et des données
• Répartir ou pas les services de l’application
• Architecture logique, pas forcément physique
• Client-serveur
Java, les fondamentaux alphorm.com™©
• En Java, la communication est : socket, RMI, jdbc…
Page 357
Architecture 3 niveaux• Présentation – services – données
• Architecture logique qui peut correspondre ou pas au physique
• En Java :
� présentation sous HTML, JSP, Servlet, Swing….
Java, les fondamentaux alphorm.com™©
� services : classes Java, Servlet, …
� Données accessibles via javabeans, EJB, jdbc…
Page 358
Ce qu’on a couvert• Architecture et niveaux
• Architecture 2 niveaux
• Architecture 3 niveaux
Java, les fondamentaux alphorm.com™©
Page 359
Vue d’ensemble
Exemples d’applications Java
Java, les fondamentaux alphorm.com™©
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Exemples d’applications Java
Page 360
Plan• L’application standalone, console
• L’application Applet
• L’application Servlet, associée à JSP
• L’application Android
Java, les fondamentaux alphorm.com™©
Page 361
L’application standalone, console• Avec une classe qui a un « main »
• Cette méthode est le point d’entrée de l’application
• Le main est exécuté séquentiellement
• Une ihm graphique peut être gérée
Java, les fondamentaux alphorm.com™©
• Exécuté sur le système d’exploitation
• Cas particulier de Java Web Start
Page 362
L’application Applet• Une applet hérite de Applet
• Instanciée et exécutée dans le contexte d’un navigateur
• Un cycle de vie spécifique
• Accès limité au système
Java, les fondamentaux alphorm.com™©
• Déploiement via un accès http
Page 363
L’application Servlet• Un servlet hérite de Servlet
• Est instanciée et exécutée sur un serveur
� Conteneur de servlet
• Répond aux méthodes HTTP (Get, Post…)
Java, les fondamentaux alphorm.com™©
• Peut écrire du HTML, mais plutôt logique applicative
• Est souvent associée à la technique des JSP
Page 364
L’application Android• Une application Java spéciale
� Machine virtuelle spécifique
� API spécifique
� Cycle de vie contraint
• Typiquement construite avec un IDE spéciale
Java, les fondamentaux alphorm.com™©
• Typiquement construite avec un IDE spéciale
Page 365
Ce qu’on a couvert• L’application standalone, console
• L’application Applet
• L’application Servlet, associée à JSP
• L’application Android
Java, les fondamentaux alphorm.com™©
Page 366
Conclusion
Conclusion
Java, les fondamentaux alphorm.com™©
Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels
Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum
Conclusion
Page 367
Plan• Présentation de la technologie Java
• Penser en termes objet
• Présentation du langage Java
• Utiliser des variables primitives
• Utiliser des objets
• Concepts avancés de l’objet
• Gestion des erreurs
• Vue d’ensemble
Java, les fondamentaux alphorm.com™©
• Utiliser des objets
• Utiliser des opérateurs et des décisions
• Créer et utiliser des tableaux
• Utiliser des structures en boucles
• Utiliser des méthodes et la surcharge
• Utiliser l’encapsulation et les constructeurs
Page 368
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™©