SlideShare una empresa de Scribd logo
1 de 368
Descargar para leer sin conexión
Présentation de la formation 
Java les fondamentaux 
(examen 1Z0-803) 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciels 
Site : http://www.alphorm.com 
Blog : http://www.alphorm.com/blog 
Forum : http://www.alphorm.com/forum 
Java, les fondamentaux alphorm.com™©
Plan 
• Présentation du formateur 
• Les autres formations sur Alphorm 
• Qu’est-ce que Java ? 
• Le plan de la formation 
• Présentation des outils 
• Les publics concernés 
Java, les fondamentaux alphorm.com™©
Présentation du formateur 
• Fabien Brissonneau 
• Email : fabien.brissonneau@gmail.com 
• Consultant Concepteur et Formateur 
• Missions d’architecture, de conception , de réalisation logicielles 
• Fondateur de eiXa6 
• Actuellement en mission sur un projet de gestion 
• Mes références : 
 Mon profil Viadeo : http://fr.viadeo.com/fr/profile/fabien.brissonneau 
 Mon profil LinkedIn : http://fr.linkedin.com/pub/fabien-brissonneau/65/902/92a/ 
Java, les fondamentaux alphorm.com™©
Mes formations sur alphorm 
Java, les fondamentaux alphorm.com™©
Les autres formations dév sur Alphorm 
Java, les fondamentaux alphorm.com™©
Qu’est-ce que Java ? 
• Langage de programmation généraliste 
• Créé en 1995 par Sun, héritant du C++ 
• Géré en communauté 
• Langage de programmation objet 
• Avec un très grande bibliothèque de classes 
Java, les fondamentaux alphorm.com™©
Le plan de la formation 
• Présentation de la technologie Java 
• Penser en termes objet 
• Présentation du langage Java 
• Utiliser des variables primitives 
• Utiliser des objets 
• Utiliser des méthodes et la 
surcharge 
• Utiliser l’encapsulation et les 
constructeurs 
• Concepts avancés de l’objet 
• Gestion des erreurs 
• Utiliser des opérateurs et des 
décisions 
• Créer et utiliser des tableaux 
• Utiliser des structures en boucles 
• Vue d’ensemble 
Java, les fondamentaux alphorm.com™©
Certification OCA suite à l’examen 1Z0-803 
Java, les fondamentaux alphorm.com™©
Présentation des outils 
• Le site de Oracle sera utilisé pour télécharger 
 Les outils en ligne de commande 
 La bibliothèque de base 
 Un IDE, Netbeans 
• Nous utiliserons aussi Eclipse 
• La présentation sera faite sous Windows 7 
Java, les fondamentaux alphorm.com™©
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™©
Scoop 
• Formation à apparaitre prochainement sur alphorm 
Java, les fondamentaux alphorm.com™©
Allons-y !… 
• Nous pouvons démarrer !! 
Java, les fondamentaux alphorm.com™©
Présentation 
Associer Java à d’autres 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciels 
Site : http://www.alphorm.com 
Blog : http://www.alphorm.com/blog 
Forum : http://www.alphorm.com/forum 
langages 
Java, les fondamentaux alphorm.com™©
Plan 
• Historique 
• Caractéristiques essentielles du langage 
• Comparer Java à C++ 
• Comparer Java à C# 
• Comparer Java à Python 
Java, les fondamentaux alphorm.com™©
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™©
Caractéristiques essentielles 
• Langage à la syntaxe simple 
• Langage généraliste 
• Langage indépendant de la plateforme 
• Langage orienté objet 
• Langage prévu pour le support du réseau 
Java, les fondamentaux alphorm.com™©
Comparer Java à C++ 
• Objectifs : C++ est proche du système, Java a une grande couche d’abstraction 
• Syntaxe : C++ a une syntaxe complexe et pleine de surprises, Java a une syntaxe simple 
• Bibliothèque standard : la bibliothèque du C++ est le plus petit commun à toute 
application, Java a une bibliothèque très large 
• Exécution : C++ est natif, Java tourne sur une machine virtuelle 
• Paradigme de programmation : C++ favorise un mélange des façons de programmer, Java 
est fortement orienté objet 
• Mémoire : en C++, la gestion de la mémoire est manuelle, Java utilise un ramasse-miette 
• Origine et évolution : C++ est un standard ISO, Java a été créé par Sun, maintenant Oracle 
Java, les fondamentaux alphorm.com™©
Comparer Java à C# 
• Objectifs : C# est lié au monde Microsoft et Java n’est pas lié à un constructeur 
• Syntaxe : C# et Java ont une syntaxe simple. C# ajoute quelques éléments, qui 
rapellent le C++ 
• Bibliothèque standard : les bibliothèques Java et DotNet sont très larges 
• Exécution : C# et Java tournent sur une machine virtuelle, avec compilation JIT 
• Paradigme de programmation : C# et Java sont fortement orientés objet 
• Mémoire : C# et Java utilisent un ramasse-miette 
• Origine et évolution : C# est un langage d’origine Microsoft 
Java, les fondamentaux alphorm.com™©
Comparer Java à Python 
• Objectifs : Python est plus un langage de « glue », là où Java servirait à créer les 
composants liés 
• Syntaxe : Python utilise les indentations, limite la verbosité. Java comme Python 
ont peu de types de base 
• Bibliothèque standard : les bibliothèques Java et Python sont très larges 
• Exécution : Python est interprété, son bytecode est invisible. La phase de 
compilation du source Java en bytecode est clairement identifiée 
• Paradigme de programmation : Python et Java sont orientés objet, mais Python 
s’utilise souvent comme un langage de script 
• Mémoire : Python et Java utilisent un ramasse-miette 
• Origine et évolution : Python est d’origine associative, PSF 
Java, les fondamentaux alphorm.com™©
Ce qu’on a couvert 
• Nous avons rappelé les caractéristiques essentielles de Java 
• Nous avons comparé Java à d’autres de langages comparables 
• Par rapport à ces langages, Java apparaît comme : 
 Un langage à la syntaxe simple 
 Un langage qui permet une bonne productivité 
 Un langage fortement typé, qui guide le développeur 
 Fortement orienté objet 
 Avec une grande bibliothèque standard 
 Ouvert sur le monde 
Java, les fondamentaux alphorm.com™©
Présentation 
Téléchargement et 
installation de Java 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciels 
Site : http://www.alphorm.com 
Blog : http://www.alphorm.com/blog 
Forum : http://www.alphorm.com/forum 
Java, les fondamentaux alphorm.com™©
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™©
Où trouver Java ? 
• Le nécessaire pour exécuter : www.java.com 
• Le kit de développement : Java Development Kit (JDK) 
• Le runtime en 2 versions : 
 Le Java Rutime Environment (JRE) 
 Le JRE pour serveur 
• Sur le site : www.oracle.com/technetwork/java 
• Oracle participe au Java Community Process, les nouveautés Java sont 
émises sous la forme de Java Specification Request : www.jcp.org 
• Oracle participe aussi à OpenJDK 
Java, les fondamentaux alphorm.com™©
Les téléchargements disponibles 
• Les éditions Java : Java SE, Java EE, Java ME 
• Standard Edition : JRE complet + outils pour développer (compilateur, 
débuggeur, moniteur) 
• Enterprise Edition : concerne les applications serveur (multi-tier, 
sécurisées,…) 
 Glassfish 
 API supplémentaire, documentation et exemples 
• EE Web Profile : sous-ensemble ne concernant que les applis Web 
• Micro Edition : pour des applications embarquées, mémoire limitées, 
accès permanent au réseau, etc 
Java, les fondamentaux alphorm.com™©
Installation des outils 
• JDK SE : téléchargement, installation sous différentes plateformes 
• Téléchargement et installation avec ou sans NetBeans (netbeans.org) 
• Le JRE sera installé dans : program files/Java/jre8 
• Il faut avoir les droits d’administration 
• NetBeans 8 utilise n’importe quel jdk 7 ou 8, il le référence par jdkhome 
Java, les fondamentaux alphorm.com™©
Configuration des outils 
• Netbeans 
• Eclipse 
• Ligne de commande 
 PATH 
 CLASSPATH 
 JAVA_HOME / JRE_HOME 
Java, les fondamentaux alphorm.com™©
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™©
Présentation 
Les technologies Java 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciels 
Site : http://www.alphorm.com 
Blog : http://www.alphorm.com/blog 
Forum : http://www.alphorm.com/forum 
Java, les fondamentaux alphorm.com™©
Plan 
• Java SE 
• Java EE 
• Embedded Java 
Java, les fondamentaux alphorm.com™©
Java SE 
• Version standard de la livraison Java 
• Le Java Development Kit (JDK) incluant le SDK JavaFX 
• Le Java Runtime Environment (JRE) permettant d’exécuter les 
applications 
• Le runtime JavaFX 
• La machine virtuelle Oracle JRockit 
Java, les fondamentaux alphorm.com™©
Java EE 
• Version entreprise de Java 
• Il existe 2 profils : EE SDK et EE Web Profile SDK 
• Les deux versions sont livrées avec Glassfish 
• Exemples de code, documentation et tutoriel 
• Une plateforme pour déployer des applications d’entreprise 
(robustesse, Web services, déploiement facilité) 
Java, les fondamentaux alphorm.com™©
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™©
Ce qu’on a couvert 
• Java SE 
• Java EE 
• Embedded Java 
Java, les fondamentaux alphorm.com™©
Présentation 
Caractéristiques principales 
et les avantages de la 
technologie Java 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciels 
Site : http://www.alphorm.com 
Blog : http://www.alphorm.com/blog 
Forum : http://www.alphorm.com/forum 
Java, les fondamentaux alphorm.com™©
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™©
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™©
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™©
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™©
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™©
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™©
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™©
Présentation 
Utiliser un environnement 
de développement intégré 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciels 
Site : http://www.alphorm.com 
Blog : http://www.alphorm.com/blog 
Forum : http://www.alphorm.com/forum 
Java, les fondamentaux alphorm.com™©
Plan 
• L’IDE Netbeans 
• Créer un projet 
• Produire à partir du projet 
• L’IDE Eclipse 
Java, les fondamentaux alphorm.com™©
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™©
Créer un projet 
• La notion de projet n’est pas Java 
• Il faut créer un projet Netbeans 
• Le source Java est créé/compilé à partir de ce projet 
• Le projet peut aussi référencer des éléments extérieurs 
• Le projet est « typé », les répertoires sont différemment organisés 
Java, les fondamentaux alphorm.com™©
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™©
L’IDE Eclipse 
• Eclipse est une plateforme d’origine IBM 
• Largement utilisée 
• Indépendante de Java 
• Plateforme sur laquelle on installe des plugs in 
• Multilangages, multi-utilisations 
Java, les fondamentaux alphorm.com™©
Ce qu’on a couvert 
• L’IDE Netbeans 
• Créer un projet 
• Produire à partir du projet 
• L’IDE Eclipse 
Java, les fondamentaux alphorm.com™©
Penser en termes d’objets 
Définir le domaine du 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciels 
Site : http://www.alphorm.com 
Blog : http://www.alphorm.com/blog 
Forum : http://www.alphorm.com/forum 
problème 
Java, les fondamentaux alphorm.com™©
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™©
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™©
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 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™©
Traduction en Java 
• Le type d’objet est une classe - Java 
• Les attributs sont les données 
• Les méthodes sont les fonctions membres 
• Les associations sont des attributs références 
• Le code n’invente quasi rien 
• Le corps des méthodes n’est pas spécifié par un modèle de classes 
Java, les fondamentaux alphorm.com™©
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™©
Penser en termes d’objets 
Identifier les objets 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciels 
Site : http://www.alphorm.com 
Blog : http://www.alphorm.com/blog 
Forum : http://www.alphorm.com/forum 
Java, les fondamentaux alphorm.com™©
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™©
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™©
Pourquoi parler des classes 
• Une classe est un type d’objet 
• Parler des types au lieu des exemples occurrents permet simplifier la 
description du problème 
• Une classe est aussi le descripteur d’objets 
• Il y a plusieurs sortes de classes (métier, applicatives…) 
• Une classe est lisible dans les services qu’elle rend 
Java, les fondamentaux alphorm.com™©
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™©
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™©
Vocabulaire 
• Les classes contiennent toutes les données et traitements 
• Rien ne peut être en dehors des classes 
• Les objets masquent leur implémentation : c’est l’encapsulation 
• Les classes définissent : 
 des attributs (données) 
 des méthodes (traitements) 
Java, les fondamentaux alphorm.com™©
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™©
Présentation du langage Java 
Définir les classes 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciels 
Site : http://www.alphorm.com 
Blog : http://www.alphorm.com/blog 
Forum : http://www.alphorm.com/forum 
Java, les fondamentaux alphorm.com™©
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™©
Une classe définit attributs et méthodes 
• Les attributs sont typés, ce sont les données 
• Les méthodes sont décrits par un nom, un type de retour et des 
paramètres, eux-mêmes typés 
• Il n’y a pas d’ordre dans les déclarations 
• Le corps des méthodes peut utiliser les attributs, les paramètres et les 
variables locales éventuelles 
• Par convention, une classe commencent par une majuscule, un attribut 
et une méthode par une minuscule 
Java, les fondamentaux alphorm.com™©
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™©
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™©
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™©
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™©
Présentation du langage Java 
Identifier les composants 
d’une classe 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciels 
Site : http://www.alphorm.com 
Blog : http://www.alphorm.com/blog 
Forum : http://www.alphorm.com/forum 
Java, les fondamentaux alphorm.com™©
Plan 
• Les composants possibles 
• Créer des attributs 
• Créer des constructeurs 
• Créer des méthodes 
Java, les fondamentaux alphorm.com™©
Les composants d’une classe 
• Une classe définit des attributs, ou champs de données 
• Une classe définit des constructeurs, qui initialisent ces champs 
• Une classe définit des méthodes, ou fonctions membres 
• Les membres sont affectés d’une visibilité 
• L’ordre de leurs déclarations n’est pas significatif 
Java, les fondamentaux alphorm.com™©
Créer des attributs 
• Un champ de donnée est typé 
• Son nom suit la convention : commence par une minuscule et ensuite 
capitalisation 
• En général, la visibilité est privée 
• Le type de ce champ de donnée est : 
 Un type fondamental (int, …) 
 Une chaîne de caractères (String) 
 Une référence vers un autre type, standard ou utilisateur 
Java, les fondamentaux alphorm.com™©
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™©
Créer des méthodes 
• Une méthode est un traitement effectué sur un objet 
• Son nom suit la même convention que les attributs 
• Elle déclare une liste de paramètres (type nom) 
• Elle peut ne pas avoir de paramètres 
• Elle a un retour, sinon, elle déclare « void » 
• Une méthode correspond à un message que l’on peut envoyer à l’objet 
de ce type 
Java, les fondamentaux alphorm.com™©
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™©
Présentation du langage Java 
Créer et utiliser une classe 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciels 
Site : http://www.alphorm.com 
Blog : http://www.alphorm.com/blog 
Forum : http://www.alphorm.com/forum 
de test 
Java, les fondamentaux alphorm.com™©
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™©
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™©
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™©
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™©
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™©
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™©
Présentation du langage Java 
Compiler et exécuter un 
programme de test 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciels 
Site : http://www.alphorm.com 
Blog : http://www.alphorm.com/blog 
Forum : http://www.alphorm.com/forum 
Java, les fondamentaux alphorm.com™©
Plan 
• Création d’un programme de test 
• Lancement d’un programme de test JUnit 
Java, les fondamentaux alphorm.com™©
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™©
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™©
Ce qu’on a couvert 
• Création d’un programme de test 
• Lancement d’un programme de test 
Java, les fondamentaux alphorm.com™©
Utiliser des primitives 
Déclarer et initialiser des 
variables de champs 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciels 
Site : http://www.alphorm.com 
Blog : http://www.alphorm.com/blog 
Forum : http://www.alphorm.com/forum 
Java, les fondamentaux alphorm.com™©
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™©
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™©
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™©
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™©
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™©
Utiliser des primitives 
Décrire les types primitifs 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciels 
Site : http://www.alphorm.com 
Blog : http://www.alphorm.com/blog 
Forum : http://www.alphorm.com/forum 
Java, les fondamentaux alphorm.com™©
Plan 
• Les types entiers 
• Les types flottants 
• Le type caractère 
• Le type booléen 
Java, les fondamentaux alphorm.com™©
Les types entiers 
• Un octet signé : byte 
• Deux octets signés : short 
• Quatre octets signés : int 
• Huit octets signés : long 
• Pas de types non signés, mais des méthodes sur les types Integer et 
Long pour gérer l’arithmétique non signée 
• Les littéraux sont typés : 4 est un int, 4L est un long 
Java, les fondamentaux alphorm.com™©
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™©
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™©
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™©
Ce qu’on a couvert 
• Les types entiers 
• Les types flottants 
• Le type caractère 
• Le type booléen 
Java, les fondamentaux alphorm.com™©
Utiliser des primitives 
Déclarer des variables et 
leur affecter des valeurs 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciels 
Site : http://www.alphorm.com 
Blog : http://www.alphorm.com/blog 
Forum : http://www.alphorm.com/forum 
Java, les fondamentaux alphorm.com™©
Plan 
• Les variables en Java 
• Comportement des variables locales 
• L’affectation d’une valeur à une variable locale 
Java, les fondamentaux alphorm.com™©
Les variables en Java 
• Les variables sont déclarées et typées 
• Les variables attributs, ou champ de donnée 
• Les variables paramètres 
• Les variables locales à une méthode 
• Notez l’absence de variable globale 
Java, les fondamentaux alphorm.com™©
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™©
L’affectation d’une variable locale 
• Pour être utilisée, une variable doit avoir une valeur : 
 À l’initialisation 
 Plus tard, en affectant une valeur calculée 
• Le compilateur identifie les chemins dans la méthode 
Tous les chemins doivent donner une valeur à la variable 
• • Certaines variables sont utilisées en retour de fonctions 
Java, les fondamentaux alphorm.com™©
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™©
Utiliser des primitives 
Utiliser des constantes 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciels 
Site : http://www.alphorm.com 
Blog : http://www.alphorm.com/blog 
Forum : http://www.alphorm.com/forum 
Java, les fondamentaux alphorm.com™©
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™©
Un mot clé pour créer une constante 
• En utilisant le mot-clé « final » 
• Il faut donner une valeur à la variable 
• Il est impossible de modifier la valeur donnée 
• Le type de la variable est quelconque 
• Par convention, le nom de la variable est en majuscules 
Java, les fondamentaux alphorm.com™©
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™©
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™©
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™©
Utiliser des primitives 
Utiliser des opérateurs 
arithmétiques 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciels 
Site : http://www.alphorm.com 
Blog : http://www.alphorm.com/blog 
Forum : http://www.alphorm.com/forum 
Java, les fondamentaux alphorm.com™©
Plan 
• Les opérateurs arithmétiques en Java 
• Le comportement des types 
Java, les fondamentaux alphorm.com™©
Les opérateurs arithmétiques 
• Opérateurs +, -, / , * 
• Opérateurs combinant affectation et opération +=, -=, /=,*= 
• Opérateurs unaires ++, -- 
• L’opérateur % (modulo) 
• Pas de surcharge possible des opérateurs 
• Il existe des opérateurs au niveau des bits : , ~ ,… décalage , , … 
Java, les fondamentaux alphorm.com™©
Le comportement des types 
• Pour garder la précision des calculs, on promeut les short et byte en int 
• Il vaut mieux donc utiliser des int 
• Les débordements sur entiers ne sont pas gérés comme sur les réels 
• Les littéraux ont des types : 
 1 est un int 
 1.0 est un double 
Java, les fondamentaux alphorm.com™©
Ce qu’on a couvert 
• Les opérateurs arithmétiques en Java 
• Le comportement des types 
Java, les fondamentaux alphorm.com™©
Utiliser des objets 
Déclarer et initialiser des 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciels 
Site : http://www.alphorm.com 
Blog : http://www.alphorm.com/blog 
Forum : http://www.alphorm.com/forum 
objets 
Java, les fondamentaux alphorm.com™©
Plan 
• Référence vs objet 
• Référence locale, paramètre 
• Référence en attribut 
Java, les fondamentaux alphorm.com™©
Référence vs objet 
• Un objet est une zone mémoire allouée avec un « new » 
• Pour garder un lien vers cette zone mémoire, on utilise une référence 
• Un objet ne peut pas être manipulé sans référence 
• Lors qu’un objet n’est plus référencé, il est finalisé 
• Voiture titine = new Voiture() 
Java, les fondamentaux alphorm.com™©
Référence locale, paramètre 
• Une référence vers un objet peut apparaître en paramètre 
 L’appelant doit fournir l’objet en question 
• Une référence peut être une variable locale 
 Il faut initialiser cette variable : 
À partir d’une autre référence 
• • En créant un objet 
Java, les fondamentaux alphorm.com™©
Référence en attribut 
• Une référence peut être un attribut 
• Il s’agit d’un lien vers un autre objet 
• Les règles d’initialisation des types primitifs s’appliquent 
 Valeur null par défaut 
 Initialisation lors de la déclaration ou dans un constructeur 
Java, les fondamentaux alphorm.com™©
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™©
Utiliser des objets 
Stocker des objets en 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciels 
Site : http://www.alphorm.com 
Blog : http://www.alphorm.com/blog 
Forum : http://www.alphorm.com/forum 
mémoire 
Java, les fondamentaux alphorm.com™©
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™©
Un objet peut référencer d’autres objets 
• Via des attributs en mémoire 
• Des graphes d’objets sont stockés en mémoire 
• Exemple : 
 Le gobelet référence des dés 
 Tant que le gobelet existe en mémoire, les dés aussi 
• La règle d’encapsulation s’applique, le gobelet ne peut accéder aux 
membres privés des dés 
Java, les fondamentaux alphorm.com™©
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™©
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™©
Utiliser des objets 
Utiliser des références 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciels 
Site : http://www.alphorm.com 
Blog : http://www.alphorm.com/blog 
Forum : http://www.alphorm.com/forum 
d’objets 
Java, les fondamentaux alphorm.com™©
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™©
Référence et objet 
• Un objet est accessible via les références qui pointent vers lui 
• Une référence est un accès mémoire, mais non explicite 
• La sélection des membres se fait avec l’opérateur « . » 
• Obtenir une référence à un objet se fait : 
 En créant soi-même l’objet 
 En invoquant une méthode qui crée l’objet et nous le retourne 
 En récupérant la référence en paramètre 
Java, les fondamentaux alphorm.com™©
Accéder à un champ 
• Via une référence, on obtient un accès aux membres 
• Si le champ est accessible (champ « public » par exemple) 
 Avec un code genre : ref . attribut 
 Je peux lire, modifier l’attribut de l’objet pointé par ref 
Un accès direct à un champ est rare, car cela ne respecte pas 
• l’encapsulation 
Java, les fondamentaux alphorm.com™©
Accéder à une méthode 
• Via une référence, on accède aux traitements de l’objet 
• L’appel se réalise comme pour un attribut, mais avec des parenthèses, 
même s’il n’y a pas de paramètres à passer 
• Le déclenchement de la méthode suppose un effet sur l’objet : 
 La méthode nous retourne le résultat d’un calcul 
 La méthode modifie l’état de l’objet 
• En général, l’objet peut garder le résultat du calcul lui-même 
Java, les fondamentaux alphorm.com™©
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™©
Utiliser des objets 
Utiliser les javadocs 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciels 
Site : http://www.alphorm.com 
Blog : http://www.alphorm.com/blog 
Forum : http://www.alphorm.com/forum 
Java, les fondamentaux alphorm.com™©
Plan 
• Qu’est-ce que javadoc ? 
• Visiter la documentation de jse 
• Appliquer la documentation dans son code 
Java, les fondamentaux alphorm.com™©
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™©
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™©
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™©
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™©
Utiliser des objets 
Utiliser des objets String et 
StringBuilder 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciels 
Site : http://www.alphorm.com 
Blog : http://www.alphorm.com/blog 
Forum : http://www.alphorm.com/forum 
Java, les fondamentaux alphorm.com™©
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™©
La chaîne de caractères String 
• Une classe, avec des comportements 
• Une création exceptionnelle, rappelant les types primitifs 
• L’application de l’opérateur +, y compris pour concaténer des primitives 
• Méthode de manipulation de chaîne 
• Voir la documentation pour les détails 
Java, les fondamentaux alphorm.com™©
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™©
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™©
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™©
Utiliser des opérateurs et des 
structures décisionnelles 
Opérateurs relationnels et 
conditionnels 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciels 
Site : http://www.alphorm.com 
Blog : http://www.alphorm.com/blog 
Forum : http://www.alphorm.com/forum 
Java, les fondamentaux alphorm.com™©
Plan 
• Les opérateurs relationnels 
• Les opérateurs conditionnels 
Java, les fondamentaux alphorm.com™©
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™©
Les opérateurs conditionnels 
• Les opérateurs , || sont court-circuit 
• Les opérateurs ,|,^ s’appliquent comme sur les bits d’un entier 
• L’opérateur ! est NOT 
• L’opérateur ternaire : 
 (a  b )? A : b 
 Si a est supérieur à b alors a sinon b 
Java, les fondamentaux alphorm.com™©
Ce qu’on a couvert 
• Les opérateurs relationnels 
• Les opérateurs conditionnels 
Java, les fondamentaux alphorm.com™©
Utiliser des opérateurs et des 
structures décisionnelles 
Tester l’égalité entre chaînes 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciels 
Site : http://www.alphorm.com 
Blog : http://www.alphorm.com/blog 
Forum : http://www.alphorm.com/forum 
Java, les fondamentaux alphorm.com™©
Plan 
• L’égalité physique ou sémantique des objets 
• La classe String et ses méthodes 
• == ou bien equals(…) ? 
Java, les fondamentaux alphorm.com™©
L’égalité sémantique ou physique 
• Un objet est sur le tas et est référencé via une référence 
• L’opérateur == s’applique sur la référence, test physique 
• Comparer deux objets en prenant en compte ce qu’ils contiennent est 
le test sémantique 
• Le test sémantique se fait PAR les objets eux-mêmes 
• Il n’y a pas de test sémantique par défaut en Java 
Java, les fondamentaux alphorm.com™©
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™©
== 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™©
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™©
Utiliser des opérateurs et des 
structures décisionnelles 
Evaluer différentes 
conditions et coder 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciels 
Site : http://www.alphorm.com 
Blog : http://www.alphorm.com/blog 
Forum : http://www.alphorm.com/forum 
Java, les fondamentaux alphorm.com™©
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™©
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™©
Tester une seule condition 
• Pour tester une seule condition : « if » avec ou sans accolades 
• Il est courant de rajouter systématiquement les accolades pour éviter 
une erreur future : les indentations ne comptent pas 
• Il est courant de rajouter un « else » car un « if » seul est peu lisible 
• La condition est mise entre parenthèses 
• La condition peut être complexe, utilisant les opérateurs booléens 
Java, les fondamentaux alphorm.com™©
Tester une suite de condition 
• Il faut enchaîner les « if » et les « else » 
• La logique conditionnelle pose rapidement des problèmes : 
 De lecture, le code est long à lire 
 De fragilité, difficile de modifier une condition sans impact 
 Facile à boguer, la logique est compliquée 
• Les conditions elles-mêmes sont rapidement trop complexes 
Java, les fondamentaux alphorm.com™©
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™©
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™©
Utiliser des opérateurs et des 
structures décisionnelles 
Créer des if et if/else 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciels 
Site : http://www.alphorm.com 
Blog : http://www.alphorm.com/blog 
Forum : http://www.alphorm.com/forum 
Java, les fondamentaux alphorm.com™©
Plan 
• L’instruction « if » 
• Le couple « if / else » 
• L’intense « if / else / if /else / … » 
Java, les fondamentaux alphorm.com™©
L’instruction « if » 
• L’instruction « if » est suivie d’une condition entre parenthèses 
• Il y a une seule instruction derrière un « if » 
• Mais on va placer plusieurs instructions grâce aux accolades 
Java, les fondamentaux alphorm.com™©
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™©
L’intense … 
• Enchaîner des « if / else if / … » est rarement une bonne idée 
Java, les fondamentaux alphorm.com™©
Ce qu’on a couvert 
• L’instruction « if » 
• Le couple « if / else » 
• L’intense « if / else / if /else / … » 
Java, les fondamentaux alphorm.com™©
Utiliser des opérateurs et des 
structures décisionnelles 
Enchaîner les conditions 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciels 
Site : http://www.alphorm.com 
Blog : http://www.alphorm.com/blog 
Forum : http://www.alphorm.com/forum 
Java, les fondamentaux alphorm.com™©
Plan 
• L’instruction « if / else » 
• Le cas de la création des objets 
• Que testent réellement les conditions ? 
Java, les fondamentaux alphorm.com™©
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™©
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™©
Que testent réellement les conditions ? 
• Il faut éviter de tester le type des objets 
 Par instanceof 
 Par un autre moyen 
• Pour déclencher des méthodes sur des objets en fonctions des types, il 
faut penser polymorphisme 
• Les conditions sont souvent des primitives 
• La combinaison des variables de conditions reflète le résultat d’une 
méthode 
Java, les fondamentaux alphorm.com™©
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™©
Utiliser des opérateurs et des 
structures décisionnelles 
L’instruction switch 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciels 
Site : http://www.alphorm.com 
Blog : http://www.alphorm.com/blog 
Forum : http://www.alphorm.com/forum 
Java, les fondamentaux alphorm.com™©
Plan 
• Forme générale du switch 
• Quand utiliser switch 
• Quand ne pas utiliser switch 
Java, les fondamentaux alphorm.com™©
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™©
Quand utiliser le switch 
• Reste simple et inévitable 
Java, les fondamentaux alphorm.com™©
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™©
Ce qu’on a couvert 
• Forme générale du switch 
• Quand utiliser switch 
• Quand ne pas utiliser switch 
Java, les fondamentaux alphorm.com™©
Créer et utiliser des tableaux 
Déclarer et instancier un 
tableau à 1 dimension 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciels 
Site : http://www.alphorm.com 
Blog : http://www.alphorm.com/blog 
Forum : http://www.alphorm.com/forum 
Java, les fondamentaux alphorm.com™©
Plan 
• Qu’est-ce qu’un tableau ? 
• Tableau de primitives 
• Tableau d’objets 
Java, les fondamentaux alphorm.com™©
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™©
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™©
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™©
Ce qu’on a couvert 
• Qu’est-ce qu’un tableau ? 
• Tableau de primitives 
• Tableau d’objets 
Java, les fondamentaux alphorm.com™©
Créer et utiliser des tableaux 
Déclarer et instancier un 
tableau à 2 dimensions 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciels 
Site : http://www.alphorm.com 
Blog : http://www.alphorm.com/blog 
Forum : http://www.alphorm.com/forum 
Java, les fondamentaux alphorm.com™©
Plan 
• Qu’est-ce qu’un tableau à deux dimensions? 
• Les services de ce tableau 
Java, les fondamentaux alphorm.com™©
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™©
Les services de ce tableau 
• L’attribut en lecture seule « length » est disponible pour les 2 
dimensions 
Java, les fondamentaux alphorm.com™©
Ce qu’on a couvert 
• Qu’est-ce qu’un tableau à deux dimensions? 
• Les services de ce tableau 
Java, les fondamentaux alphorm.com™©
Créer et utiliser des tableaux 
Utiliser une boucle for dans 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciels 
Site : http://www.alphorm.com 
Blog : http://www.alphorm.com/blog 
Forum : http://www.alphorm.com/forum 
le tableau 
Java, les fondamentaux alphorm.com™©
Plan 
• Les boucles for, while, do-while, for(each) 
• Le parcours du tableau à une dimension 
• Le parcours du tableau à 2 dimensions 
Java, les fondamentaux alphorm.com™©
Les boucles 
• La boucle while(cond) { } 
• La boucle do { … } while(cond) ; 
• La boucle for( int i =0; icond; i++) { } 
• La boucle for ( E e: tab) { } 
Java, les fondamentaux alphorm.com™©
Parcourir un tableau à une dimension 
• Avec une boucle for basé sur une variable 
 La variable de boucle est indice d’accès dans le tableau 
• Avec une boucle for « each » 
 On ressort l’élement contenu dans le tableau 
Java, les fondamentaux alphorm.com™©
Parcourir un tableau à deux dimensions 
• Avec une double boucle 
• Les variables de boucles sont les indices d’accès aux éléments du 
tableau 
• La capacité du tableau « length » est utilisée 
Java, les fondamentaux alphorm.com™©
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™©
Créer et utiliser des tableaux 
Créer et initialiser une 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciels 
Site : http://www.alphorm.com 
Blog : http://www.alphorm.com/blog 
Forum : http://www.alphorm.com/forum 
ArrayList 
Java, les fondamentaux alphorm.com™©
Plan 
• Qu’est-ce que java.util.ArrayList ? 
• Comment initialiser une ArrayList 
• Parcourir une ArrayList 
Java, les fondamentaux alphorm.com™©
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™©
Comment initialiser une ArrayList 
• En la remplissant au fur et au mesure, avec « add » 
• En lui donnant une taille initiale 
Java, les fondamentaux alphorm.com™©
Parcourir une ArrayList 
• En utilisant un indice jusqu’à « size » 
• En utilisant le for « each » 
Java, les fondamentaux alphorm.com™©
Ce qu’on a couvert 
• Qu’est-ce que java.util.ArrayList ? 
• Comment initialiser une ArrayList 
• Parcourir une ArrayList 
Java, les fondamentaux alphorm.com™©
Créer et utiliser des tableaux 
Utiliser l’instruction import 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciels 
Site : http://www.alphorm.com 
Blog : http://www.alphorm.com/blog 
Forum : http://www.alphorm.com/forum 
Java, les fondamentaux alphorm.com™©
Plan 
• Le package java.util 
• Utiliser import 
Java, les fondamentaux alphorm.com™©
Le package java.util 
• Les classes de collection se trouvent dans java.util 
 Voir la documentation 
• On ne peut pas utiliser le nom simple de la classe ArrayList, sans son 
nom de package 
• Cela garantit l’absence de collision entre les noms de classes 
Java, les fondamentaux alphorm.com™©
L’instruction import 
• Arbitrage entre utiliser le nom complet de la classe 
• Ou bien faire un « import » de la classe, et utiliser son nom court 
• Aucun impact sur le code généré 
• Confort de codage et de lecture 
• Pas d’import du package lui-même 
• On importe des classes d’un package 
• On peut importer toutes les classes d’un package 
Java, les fondamentaux alphorm.com™©
Ce qu’on a couvert 
• Le package java.util 
• Utiliser import 
Java, les fondamentaux alphorm.com™©
Créer et utiliser des tableaux 
Accéder à une valeur d’un 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciels 
Site : http://www.alphorm.com 
Blog : http://www.alphorm.com/blog 
Forum : http://www.alphorm.com/forum 
tableau 
Java, les fondamentaux alphorm.com™©
Plan 
• Accéder aux valeurs dans un tableau 
• Accéder aux valeurs dans une ArrayList 
Java, les fondamentaux alphorm.com™©
Accéder aux valeurs dans un tableau 
• Le tableau supporte l’accès aléatoire 
• Avec l’opérateur [ ], on lit n’importe quelle valeur 
• Les débordements sont repérés 
• Le même opérateur permet d’écrire 
• Le tableau ne se redimensionne pas 
Java, les fondamentaux alphorm.com™©
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™©
Ce qu’on a couvert 
• Accéder aux valeurs dans un tableau 
• Accéder aux valeurs dans une ArrayList 
Java, les fondamentaux alphorm.com™©
Créer et utiliser des tableaux 
Utiliser le tableau args 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciels 
Site : http://www.alphorm.com 
Blog : http://www.alphorm.com/blog 
Forum : http://www.alphorm.com/forum 
Java, les fondamentaux alphorm.com™©
Plan 
• Les arguments de la ligne de commande 
• Parcourir le tableau 
• Convertir les éléments de ce tableau 
Java, les fondamentaux alphorm.com™©
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™©
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™©
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™©
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™©
Utiliser des boucles 
Coder une do/while 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciels 
Site : http://www.alphorm.com 
Blog : http://www.alphorm.com/blog 
Forum : http://www.alphorm.com/forum 
Java, les fondamentaux alphorm.com™©
Plan 
• Les composants de la boucle do /while 
• Les composants de la boucle while 
• Les erreurs à ne pas faire 
Java, les fondamentaux alphorm.com™©
Les composants de la boucle do/while 
• Un bloc de code à exécuter 
• Une condition à respecter 
• Une condition d’arrêt 
Java, les fondamentaux alphorm.com™©
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™©
Les erreurs à ne pas faire 
• Pour le « while », ne pas oublier les accolades si besoin 
• Que la condition permette de sortir de la boucle 
Java, les fondamentaux alphorm.com™©
Ce 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™©
Utiliser des boucles 
Développer une boucle for 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciels 
Site : http://www.alphorm.com 
Blog : http://www.alphorm.com/blog 
Forum : http://www.alphorm.com/forum 
Java, les fondamentaux alphorm.com™©
Plan 
• Les composants d’une boucle « for » 
• Les avantages du for sur le while 
• Les écritures limites du « for » 
Java, les fondamentaux alphorm.com™©
Les composants d’une boucle for 
• Initialisation 
• Tant que 
• Incrément 
Java, les fondamentaux alphorm.com™©
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™©
Les écritures limites du for 
• Utiliser un « for » pour une boucle infinie 
• Oublier volontairement une partie du « for » 
• Mettre des listes d’initialisation 
• Mettre des listes d’incréments 
• Utiliser des conditions d’arrêt compliquées 
Java, les fondamentaux alphorm.com™©
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™©
Utiliser des boucles 
Utiliser des ArrayList dans 
une boucle for 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciels 
Site : http://www.alphorm.com 
Blog : http://www.alphorm.com/blog 
Forum : http://www.alphorm.com/forum 
Java, les fondamentaux alphorm.com™©
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™©
Remarques sur le contenu d’une ArrayList 
• ArrayList est une implémentation tableau 
• Depuis Java5, ArrayList peut être typé : ArrayListString 
• Avant, ArrayList contient des Object 
• Il est possible de récupérer le ième élément du tableau 
• L’ordre est conservé ! 
Java, les fondamentaux alphorm.com™©
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™©
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™©
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™©
Utiliser des boucles 
Comprendre la portée des 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciels 
Site : http://www.alphorm.com 
Blog : http://www.alphorm.com/blog 
Forum : http://www.alphorm.com/forum 
variables 
Java, les fondamentaux alphorm.com™©
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™©
Définir la portée d’une variable 
• La zone de code où l’accès à la variable est possible 
• Plus la portée est réduite, plus la gestion de la ressource est simple 
• La donnée disparaît elle-même dans certains cas 
• Lorsqu’on sort de la portée d’une référence, on n’accède PLUS à l’objet 
• En Java, les blocs { … } limite la portée d’une variable 
Java, les fondamentaux alphorm.com™©
Les variables locales et paramètres 
• Une variable locale ne peut pas être utilisée en dehors de la méthode 
dans laquelle elle est déclarée 
• Pour garder la donnée, il faut la recopier dans une autre variable 
 Retour de fonction 
 Variable attribut 
• Les paramètres sont des sortes de variables locales 
 La valeur est fournie par l’appelant 
Java, les fondamentaux alphorm.com™©
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™©
Pas de variables globales en Java 
• La portée ultime serait la variable globale 
• Mais ce type de portée pose des problèmes 
 Difficile de maîtriser qui utilise la variable 
 Etat de la variable cahotique 
Avec le « static », certains essaient de recréer la situation d’une portée 
• globale 
Java, les fondamentaux alphorm.com™©
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™©
Utiliser des méthodes 
Créer et appeler des 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciels 
Site : http://www.alphorm.com 
Blog : http://www.alphorm.com/blog 
Forum : http://www.alphorm.com/forum 
méthodes 
Java, les fondamentaux alphorm.com™©
Plan 
• Créer une méthode dans une classe 
• Appeler une méthode 
Java, les fondamentaux alphorm.com™©
Créer une méthode 
• Pour réaliser un traitement sur les données de l’objet 
 Une méthode a une implémentation 
• Pour proposer un service à l’extérieur 
 Une méthode a une signature 
Les variables : locale, paramètre, champ 
• • Le retour n’est pas obligatoire 
Java, les fondamentaux alphorm.com™©
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™©
Ce qu’on a couvert 
• Créer une méthode dans une classe 
• Appeler une méthode 
Java, les fondamentaux alphorm.com™©
Utiliser des méthodes 
Transmettre des arguments 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciels 
Site : http://www.alphorm.com 
Blog : http://www.alphorm.com/blog 
Forum : http://www.alphorm.com/forum 
Java, les fondamentaux alphorm.com™©
Plan 
• Le passage des arguments à l’appel 
• Le passage de primitives 
• Le passage d’objets 
Java, les fondamentaux alphorm.com™©
Le passage des arguments à l’appel 
• Lors de l’appel de la méthode, utiliser les parenthèses 
 Les parenthèses seules si pas d’argument 
 La liste des arguments sans leurs types 
• Les arguments doivent correspondre aux types attendus 
Il n’est pas possible d’omettre des arguments 
• • Pas de valeurs par défaut sur les paramètres 
Java, les fondamentaux alphorm.com™©
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™©
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™©
Ce qu’on a couvert 
• Le passage des arguments à l’appel 
• Le passage de primitives 
• Le passage d’objets 
Java, les fondamentaux alphorm.com™©
Utiliser des méthodes 
Créer des méthodes et des 
variables statiques 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciels 
Site : http://www.alphorm.com 
Blog : http://www.alphorm.com/blog 
Forum : http://www.alphorm.com/forum 
Java, les fondamentaux alphorm.com™©
Plan 
• Créer des variables statiques et les utiliser 
• Créer des méthodes statiques et les utiliser 
Java, les fondamentaux alphorm.com™©
Créer des variables statiques et les utiliser 
• Définition d’une variable statique 
 Une variable qui est allouée en dehors des objets 
• La syntaxe pour déclarer un champ statique : « static » 
• L’intérêt des champs statiques 
 Unicité de l’information pour tous les objets 
 Accès aux données sans objet 
• Utilisation dénoncée : une variable globale en Java !! 
Java, les fondamentaux alphorm.com™©
Créer des méthodes statiques et les utiliser 
• Syntaxe de la méthode statique : « static » 
• Utilisation de la méthode statique : appel sur LA CLASSE 
 D’où le nom : méthode de classe 
• Intérêt : appeler une méthode sans créer un objet 
 Parce qu’aucun objet n’existe 
 Parce que la création d’un objet coûte cher 
 Parce qu’on n’a pas accès à l’objet 
 … 
Java, les fondamentaux alphorm.com™©
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™©
Utiliser des méthodes 
Utiliser des modificateurs 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciels 
Site : http://www.alphorm.com 
Blog : http://www.alphorm.com/blog 
Forum : http://www.alphorm.com/forum 
Java, les fondamentaux alphorm.com™©
Plan 
• Les modificateurs : public, protected, private 
• Visibilité par défaut, sans modificateur 
• Visibilité « private » 
• Visibilité « protected » 
• Visibilité « public » 
Java, les fondamentaux alphorm.com™©
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™©
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™©
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™©
La visibilité protected 
• Un accès intermédiaire 
• Toutes les classes du package y accèdent 
• Et aussi toutes les classes ‘filles’ … cf héritage… 
• Permet d’ouvrir un accès en direction des futures classes étendues 
• Intéressant surtout pour les méthodes 
Java, les fondamentaux alphorm.com™©
La visibilité public 
• La visibilité la plus large 
• Expose les accès à tout le code 
• Intéressant surtout pour des méthodes 
 Des champs de données « public » devraient être « final » 
• Correspond à des offres de services pour l’extérieur, qui appelle 
• Attention à ne pas confondre visibilité et portée… 
Java, les fondamentaux alphorm.com™©
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™©
Utiliser des méthodes 
Utiliser la surcharge des 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciels 
Site : http://www.alphorm.com 
Blog : http://www.alphorm.com/blog 
Forum : http://www.alphorm.com/forum 
méthodes 
Java, les fondamentaux alphorm.com™©
Plan 
• La syntaxe de la surcharge 
• Appeler une méthode surchargée 
• La surcharge et l’héritage 
Java, les fondamentaux alphorm.com™©
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™©
Appeler une méthode surchargée 
• Choisir les arguments à passer 
 Nombre d’arguments 
 Type des arguments 
• Le compilateur fait le bon appel 
Tout est figé à la compilation 
• • On parle parfois de polymorphisme de surcharge 
Java, les fondamentaux alphorm.com™©
La surcharge et l’héritage 
• La surcharge est résolue à travers l’héritage 
• Une classe fille peut enrichir l’interface en ajoutant une surcharge 
• Ne pas confondre 
 Surcharge 
 Redéfinition 
Java, les fondamentaux alphorm.com™©
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™©
Utiliser l’encapsulation et les 
constructeurs 
Créer des constructeurs 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciels 
Site : http://www.alphorm.com 
Blog : http://www.alphorm.com/blog 
Forum : http://www.alphorm.com/forum 
Java, les fondamentaux alphorm.com™©
Plan 
• L’initialisation des objets 
• Le rôle des constructeurs 
• Les blocs d’initialisation 
Java, les fondamentaux alphorm.com™©
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™©
Le rôle des constructeurs 
• Par défaut, le compilateur génère un constructeur sans paramètre 
• La réécriture de ce constructeur est possible 
• Il est possible de créer d’autres constructeurs, avec des signatures 
différentes 
• Le rôle du constructeur est d’initialiser les champs de l’objet 
• Afin que l’objet soit dans un bon état 
Java, les fondamentaux alphorm.com™©
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™©
Ce qu’on a couvert 
• L’initialisation des objets 
• Le rôle des constructeurs 
• Les blocs d’initialisation 
Java, les fondamentaux alphorm.com™©
Utiliser l’encapsulation et les 
constructeurs 
Implémenter l’encapsulation 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciels 
Site : http://www.alphorm.com 
Blog : http://www.alphorm.com/blog 
Forum : http://www.alphorm.com/forum 
Java, les fondamentaux alphorm.com™©
Plan 
• L’encapsulation par la visibilité des membres 
• L’encapsulation par la visibilité des classes 
Java, les fondamentaux alphorm.com™©
L’encapsulation par la visibilité des membres 
• Les membres dans une classe sont par défaut accessible des autres 
classes du package 
• Les visibilités « public », « protected » et « private » permettent de 
régler ces accès 
• Ces visibilités s’entendent par rapport à la classe 
• Cela n’a pas de rapport avec la portée 
Java, les fondamentaux alphorm.com™©
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™©
Ce qu’on a couvert 
• L’encapsulation par la visibilité des membres 
• L’encapsulation par la visibilité des classes 
Java, les fondamentaux alphorm.com™©
Concepts avancés 
Utiliser l’héritage 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciels 
Site : http://www.alphorm.com 
Blog : http://www.alphorm.com/blog 
Forum : http://www.alphorm.com/forum 
Java, les fondamentaux alphorm.com™©
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™©
La relation de généralisation-spécialisation 
• Une relation statique entre classe 
• Qui relie un concept général à un concept spécialisé 
 Chat-Félin 
• Qui évite les doublons 
 Les membres de Félin sont hérités par le Chat 
• Qui introduit des variations sur un thème 
 Le Chat parle d’une façon spécifique 
Java, les fondamentaux alphorm.com™©
Les conséquences en terme d’héritage 
• Les membres sont tous hérités 
• Les membres publiques de l’ancêtre restent publiques sur la classe fille 
• Seuls les membres privés de l’ancêtre sont inaccessibles de la fille 
• La classe fille peut compléter 
 Les méthodes en en ajoutant 
 Les champs de données en en ajoutant 
 Les méthodes en les redéfinissant 
Java, les fondamentaux alphorm.com™©
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™©
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™©
Concepts avancés 
Polymorphisme 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciels 
Site : http://www.alphorm.com 
Blog : http://www.alphorm.com/blog 
Forum : http://www.alphorm.com/forum 
Java, les fondamentaux alphorm.com™©
Plan 
• La redéfinition des méthodes 
• Mettre en oeuvre le polymorphisme 
• Savoir utiliser le polymorphisme 
Java, les fondamentaux alphorm.com™©
La redéfinition des méthodes 
• La relation de généralisation-spécialisation suppose l’héritage des 
membres de la classe mère par la classe fille 
• Cette relation est utile lorsque la sous-classe est une spécialisation de la 
super-classe 
• Cette spécialisation peut être due à une redéfinition de certains 
comportements 
 Redéclarer dans la sous-classe la même méthode que dans la super-classe, 
mais modifier le corps de la méthode 
Java, les fondamentaux alphorm.com™©
Mettre en oeuvre le polymorphisme 
• Il suffit de : 
 Disposer d’un héritage 
 Redéfinir une méthode 
 Pointer sur un objet en tant que super-classe 
 Appeler la méthode redéfinie 
Java, les fondamentaux alphorm.com™©
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™©
Ce qu’on a couvert 
• La redéfinition des méthodes 
• Mettre en oeuvre le polymorphisme 
• Savoir utiliser le polymorphisme 
Java, les fondamentaux alphorm.com™©
Concepts avancés 
Utiliser des super-classes et 
des sous-classes 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciels 
Site : http://www.alphorm.com 
Blog : http://www.alphorm.com/blog 
Forum : http://www.alphorm.com/forum 
Java, les fondamentaux alphorm.com™©
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™©
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™©
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™©
Spécialiser le comportement 
• Une sous-classe peut proposer des attributs et des méthodes en plus 
• Elle peut redéfinir une ou plusieurs méthodes 
 Même signature, mais corps différent 
• Le comportement différent repose sur le fait que la méthode s’exécute 
différemment 
• Pas de mot-clé spécifique, mais une annotation optionnelle 
Java, les fondamentaux alphorm.com™©
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™©
Concepts avancés 
Ajouter un niveau 
d’abstraction 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciels 
Site : http://www.alphorm.com 
Blog : http://www.alphorm.com/blog 
Forum : http://www.alphorm.com/forum 
Java, les fondamentaux alphorm.com™©
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™©
Les abstractions en Java 
• Une classe abstraite 
 Est une classe qui ne peut pas être instanciée 
 Peut contenir des méthodes abstraites 
 Contient en général des attributs et des méthodes implémentées 
• Une interface 
 Est un type non instanciable 
 Ne peut contenir aucune implémentation d’instance 
Java, les fondamentaux alphorm.com™©
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™©
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™©
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™©
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™©
Concepts avancés 
Les interfaces en Java 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciels 
Site : http://www.alphorm.com 
Blog : http://www.alphorm.com/blog 
Forum : http://www.alphorm.com/forum 
Java, les fondamentaux alphorm.com™©
Plan 
• Définition et syntaxe des interfaces 
• Définir une interface 
• Implémenter une interface 
• Cas d’usage connus 
Java, les fondamentaux alphorm.com™©
Définition et syntaxe d’une interface 
• Une interface est un type sans implémentation 
 Dans son propre fichier 
• Impossible d’implémenter les méthodes 
• Les méthodes sont forcément public 
• Si des attributs existent, ils sont « static », « final » et « public » 
Java, les fondamentaux alphorm.com™©
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™©
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™©
Cas d’usage connus 
• Interconnexions entre modules 
• Définition des services d’objets distribués 
 Sous-interface de Remote 
• Définition des webservices 
• Abstraction des conteneurs : List, Set, Map… 
Java, les fondamentaux alphorm.com™©
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™©
La gestion des erreurs 
Les différents types d’erreur 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciels 
Site : http://www.alphorm.com 
Blog : http://www.alphorm.com/blog 
Forum : http://www.alphorm.com/forum 
Java, les fondamentaux alphorm.com™©
Plan 
• Les erreurs de syntaxe 
• Les erreurs de logique, de programmation 
• Les erreurs exceptionnelles dues à l’environnement 
Java, les fondamentaux alphorm.com™©
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™©
Les erreurs de logique, de programmation 
• « Une bonne lecture élimine 80% des erreurs » 
• N’ont pas à être gérées 
• Doivent être corrigées par le développeur 
 Garder un code lisible 
 Réfléchir la conception avant d’écrire le code 
• Exemple : une variable référence n’est pas initialisée 
Java, les fondamentaux alphorm.com™©
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™©
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™©
La gestion des erreurs 
Présentation des types 
d’exceptions 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciels 
Site : http://www.alphorm.com 
Blog : http://www.alphorm.com/blog 
Forum : http://www.alphorm.com/forum 
Java, les fondamentaux alphorm.com™©
Plan 
• Nature de l’exception 
• Les exceptions runtime 
• Les exceptions gérées 
• Les exceptions de l’utilisateur 
Java, les fondamentaux alphorm.com™©
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™©
Les exceptions runtime 
• Exceptions qui correspondent à des erreurs de programmation 
• Ne sont pas gérées : non signalées par le compilateur 
• NullPointerException : accès à un membre via une référence null 
• IllegalArgumentException : l’argument ne correspond pas à l’attendu 
• ArrayIndexOutOfBoundException : débordement d’un tableau 
• ArithmeticException : exceptions comme la division entière par zéro 
Java, les fondamentaux alphorm.com™©
Les exceptions gérées 
• Ces exceptions correspondent à des erreurs dues à l’environnement 
 Ressources non disponibles, manque de droits d’accès,… 
• Spécifiées par les méthodes 
• Prise en compte par le compilateur qui oblige à gérer l’appel 
• FileNotFoundException : fichier non trouvé 
• IOException : problème d’accès aux entrées-sorties 
• SqlException : erreur remontée du SGBD 
Java, les fondamentaux alphorm.com™©
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™©
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™©
La gestion des erreurs 
Utiliser Javadocs pour 
rechercher des exceptions 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciels 
Site : http://www.alphorm.com 
Blog : http://www.alphorm.com/blog 
Forum : http://www.alphorm.com/forum 
Java, les fondamentaux alphorm.com™©
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™©
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™©
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™©
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™©
La gestion des erreurs 
Ecrire du code pour gérer 
les exceptions 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciels 
Site : http://www.alphorm.com 
Blog : http://www.alphorm.com/blog 
Forum : http://www.alphorm.com/forum 
Java, les fondamentaux alphorm.com™©
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™©
Gérer une exception 
• Le mot-clé « try » permet d’isoler le code nominal 
• Correspond à une méthode 
• Suivi de un ou plusieurs blocs « catch » qui sont typés par une classe 
d’exception 
• Soit le try s’exécute puis le code après les catch 
• Soit le try est interrompu et un catch est exécuté, puis le code après le 
catch 
• Possibilité de placer un bloc « finally », toujours exécuté 
Java, les fondamentaux alphorm.com™©
Lever une exception 
• Utiliser le mot-clé « throw » pour lever une exception 
• Cette exception est simplement un objet créé pour l’occasion 
• Branchement à l’exécution vers le plus proche « catch » 
 Remonte vers les appelants en cherchant un bloc catch qui accepte l’objet 
levé 
• Il faut spécifier la levée d’exception dans la signature de la méthode 
 Sauf pour une exception runtime 
Java, les fondamentaux alphorm.com™©
Alphorm.com Formation Java, les fondamentaux
Alphorm.com Formation Java, les fondamentaux
Alphorm.com Formation Java, les fondamentaux
Alphorm.com Formation Java, les fondamentaux
Alphorm.com Formation Java, les fondamentaux
Alphorm.com Formation Java, les fondamentaux
Alphorm.com Formation Java, les fondamentaux
Alphorm.com Formation Java, les fondamentaux
Alphorm.com Formation Java, les fondamentaux
Alphorm.com Formation Java, les fondamentaux
Alphorm.com Formation Java, les fondamentaux
Alphorm.com Formation Java, les fondamentaux
Alphorm.com Formation Java, les fondamentaux
Alphorm.com Formation Java, les fondamentaux
Alphorm.com Formation Java, les fondamentaux
Alphorm.com Formation Java, les fondamentaux
Alphorm.com Formation Java, les fondamentaux
Alphorm.com Formation Java, les fondamentaux
Alphorm.com Formation Java, les fondamentaux
Alphorm.com Formation Java, les fondamentaux
Alphorm.com Formation Java, les fondamentaux
Alphorm.com Formation Java, les fondamentaux
Alphorm.com Formation Java, les fondamentaux
Alphorm.com Formation Java, les fondamentaux
Alphorm.com Formation Java, les fondamentaux

Más contenido relacionado

La actualidad más candente

Alphorm.com Formation KVM
Alphorm.com Formation KVMAlphorm.com Formation KVM
Alphorm.com Formation KVMAlphorm
 
alphorm.com - Formation XenSources
alphorm.com - Formation XenSourcesalphorm.com - Formation XenSources
alphorm.com - Formation XenSourcesAlphorm
 
alphorm.com - Formation Veeam Backup & Replication 6.5
alphorm.com - Formation Veeam Backup & Replication 6.5alphorm.com - Formation Veeam Backup & Replication 6.5
alphorm.com - Formation Veeam Backup & Replication 6.5Alphorm
 
Alphorm.com Formation JavaFX
Alphorm.com Formation JavaFXAlphorm.com Formation JavaFX
Alphorm.com Formation JavaFXAlphorm
 
Alphorm.com - Formation programmer en Visual Basic .NET
Alphorm.com - Formation programmer en Visual Basic .NETAlphorm.com - Formation programmer en Visual Basic .NET
Alphorm.com - Formation programmer en Visual Basic .NETAlphorm
 
alphorm.com - Formation Windows 8.1 (70-687)
alphorm.com - Formation Windows 8.1 (70-687)alphorm.com - Formation Windows 8.1 (70-687)
alphorm.com - Formation Windows 8.1 (70-687)Alphorm
 
alphorm.com - Formation Microsoft Hyper-V 2012
alphorm.com - Formation Microsoft Hyper-V 2012alphorm.com - Formation Microsoft Hyper-V 2012
alphorm.com - Formation Microsoft Hyper-V 2012Alphorm
 
Alphorm.com Formation PL/SQL
Alphorm.com Formation PL/SQLAlphorm.com Formation PL/SQL
Alphorm.com Formation PL/SQLAlphorm
 
Alphorm.com Support de la Formation Oracle VM Administration
Alphorm.com Support de la Formation Oracle VM AdministrationAlphorm.com Support de la Formation Oracle VM Administration
Alphorm.com Support de la Formation Oracle VM AdministrationAlphorm
 
alphorm.com - Formation VMware PowerCLI 5.0
alphorm.com - Formation VMware PowerCLI 5.0alphorm.com - Formation VMware PowerCLI 5.0
alphorm.com - Formation VMware PowerCLI 5.0Alphorm
 
Alphorm.com Formation Implémenter une PKI avec ADCS 2012 R2
Alphorm.com Formation Implémenter une PKI avec ADCS 2012 R2 Alphorm.com Formation Implémenter une PKI avec ADCS 2012 R2
Alphorm.com Formation Implémenter une PKI avec ADCS 2012 R2 Alphorm
 
Alphorm.com Formation OS X 10.11 Server El Capitan, Les fondamentaux
Alphorm.com Formation OS X 10.11 Server El Capitan, Les fondamentauxAlphorm.com Formation OS X 10.11 Server El Capitan, Les fondamentaux
Alphorm.com Formation OS X 10.11 Server El Capitan, Les fondamentauxAlphorm
 
alphorm.com - Citrix XenServer 6 Administration (A20)
alphorm.com - Citrix XenServer 6 Administration (A20)alphorm.com - Citrix XenServer 6 Administration (A20)
alphorm.com - Citrix XenServer 6 Administration (A20)Alphorm
 
Alphorm.com Support de la formation Citrix NetScaler11
Alphorm.com Support de la formation Citrix NetScaler11Alphorm.com Support de la formation Citrix NetScaler11
Alphorm.com Support de la formation Citrix NetScaler11Alphorm
 
Alphorm.com Support de la Formation Azure Iaas avancé 2
Alphorm.com Support de la Formation Azure Iaas avancé 2Alphorm.com Support de la Formation Azure Iaas avancé 2
Alphorm.com Support de la Formation Azure Iaas avancé 2Alphorm
 
alphorm.com - Formation VMware vSphere 5
alphorm.com - Formation VMware vSphere 5alphorm.com - Formation VMware vSphere 5
alphorm.com - Formation VMware vSphere 5Alphorm
 
Alphorm.com-Formation MongoDB Administration
Alphorm.com-Formation MongoDB AdministrationAlphorm.com-Formation MongoDB Administration
Alphorm.com-Formation MongoDB AdministrationAlphorm
 
Alphorm.com Formation Veeam Backup & Replication 9.5
Alphorm.com Formation Veeam Backup & Replication 9.5Alphorm.com Formation Veeam Backup & Replication 9.5
Alphorm.com Formation Veeam Backup & Replication 9.5Alphorm
 
Alphorm.com Formation VMware Horizon View 5.2
Alphorm.com Formation VMware Horizon View 5.2Alphorm.com Formation VMware Horizon View 5.2
Alphorm.com Formation VMware Horizon View 5.2Alphorm
 
Alphorm.com-Formation Windows Server 2012 R2 (70-411)
Alphorm.com-Formation Windows Server 2012 R2 (70-411)Alphorm.com-Formation Windows Server 2012 R2 (70-411)
Alphorm.com-Formation Windows Server 2012 R2 (70-411)Alphorm
 

La actualidad más candente (20)

Alphorm.com Formation KVM
Alphorm.com Formation KVMAlphorm.com Formation KVM
Alphorm.com Formation KVM
 
alphorm.com - Formation XenSources
alphorm.com - Formation XenSourcesalphorm.com - Formation XenSources
alphorm.com - Formation XenSources
 
alphorm.com - Formation Veeam Backup & Replication 6.5
alphorm.com - Formation Veeam Backup & Replication 6.5alphorm.com - Formation Veeam Backup & Replication 6.5
alphorm.com - Formation Veeam Backup & Replication 6.5
 
Alphorm.com Formation JavaFX
Alphorm.com Formation JavaFXAlphorm.com Formation JavaFX
Alphorm.com Formation JavaFX
 
Alphorm.com - Formation programmer en Visual Basic .NET
Alphorm.com - Formation programmer en Visual Basic .NETAlphorm.com - Formation programmer en Visual Basic .NET
Alphorm.com - Formation programmer en Visual Basic .NET
 
alphorm.com - Formation Windows 8.1 (70-687)
alphorm.com - Formation Windows 8.1 (70-687)alphorm.com - Formation Windows 8.1 (70-687)
alphorm.com - Formation Windows 8.1 (70-687)
 
alphorm.com - Formation Microsoft Hyper-V 2012
alphorm.com - Formation Microsoft Hyper-V 2012alphorm.com - Formation Microsoft Hyper-V 2012
alphorm.com - Formation Microsoft Hyper-V 2012
 
Alphorm.com Formation PL/SQL
Alphorm.com Formation PL/SQLAlphorm.com Formation PL/SQL
Alphorm.com Formation PL/SQL
 
Alphorm.com Support de la Formation Oracle VM Administration
Alphorm.com Support de la Formation Oracle VM AdministrationAlphorm.com Support de la Formation Oracle VM Administration
Alphorm.com Support de la Formation Oracle VM Administration
 
alphorm.com - Formation VMware PowerCLI 5.0
alphorm.com - Formation VMware PowerCLI 5.0alphorm.com - Formation VMware PowerCLI 5.0
alphorm.com - Formation VMware PowerCLI 5.0
 
Alphorm.com Formation Implémenter une PKI avec ADCS 2012 R2
Alphorm.com Formation Implémenter une PKI avec ADCS 2012 R2 Alphorm.com Formation Implémenter une PKI avec ADCS 2012 R2
Alphorm.com Formation Implémenter une PKI avec ADCS 2012 R2
 
Alphorm.com Formation OS X 10.11 Server El Capitan, Les fondamentaux
Alphorm.com Formation OS X 10.11 Server El Capitan, Les fondamentauxAlphorm.com Formation OS X 10.11 Server El Capitan, Les fondamentaux
Alphorm.com Formation OS X 10.11 Server El Capitan, Les fondamentaux
 
alphorm.com - Citrix XenServer 6 Administration (A20)
alphorm.com - Citrix XenServer 6 Administration (A20)alphorm.com - Citrix XenServer 6 Administration (A20)
alphorm.com - Citrix XenServer 6 Administration (A20)
 
Alphorm.com Support de la formation Citrix NetScaler11
Alphorm.com Support de la formation Citrix NetScaler11Alphorm.com Support de la formation Citrix NetScaler11
Alphorm.com Support de la formation Citrix NetScaler11
 
Alphorm.com Support de la Formation Azure Iaas avancé 2
Alphorm.com Support de la Formation Azure Iaas avancé 2Alphorm.com Support de la Formation Azure Iaas avancé 2
Alphorm.com Support de la Formation Azure Iaas avancé 2
 
alphorm.com - Formation VMware vSphere 5
alphorm.com - Formation VMware vSphere 5alphorm.com - Formation VMware vSphere 5
alphorm.com - Formation VMware vSphere 5
 
Alphorm.com-Formation MongoDB Administration
Alphorm.com-Formation MongoDB AdministrationAlphorm.com-Formation MongoDB Administration
Alphorm.com-Formation MongoDB Administration
 
Alphorm.com Formation Veeam Backup & Replication 9.5
Alphorm.com Formation Veeam Backup & Replication 9.5Alphorm.com Formation Veeam Backup & Replication 9.5
Alphorm.com Formation Veeam Backup & Replication 9.5
 
Alphorm.com Formation VMware Horizon View 5.2
Alphorm.com Formation VMware Horizon View 5.2Alphorm.com Formation VMware Horizon View 5.2
Alphorm.com Formation VMware Horizon View 5.2
 
Alphorm.com-Formation Windows Server 2012 R2 (70-411)
Alphorm.com-Formation Windows Server 2012 R2 (70-411)Alphorm.com-Formation Windows Server 2012 R2 (70-411)
Alphorm.com-Formation Windows Server 2012 R2 (70-411)
 

Destacado

alphorm.com - Formation HTML5, CSS 3 et JavaScript (70-480)
alphorm.com - Formation HTML5, CSS 3 et JavaScript (70-480)alphorm.com - Formation HTML5, CSS 3 et JavaScript (70-480)
alphorm.com - Formation HTML5, CSS 3 et JavaScript (70-480)Alphorm
 
Alphorm.com Java 8: les nouveautés
Alphorm.com Java 8: les nouveautésAlphorm.com Java 8: les nouveautés
Alphorm.com Java 8: les nouveautésAlphorm
 
Alphorm.com Formation le langage SQL
Alphorm.com  Formation le langage SQLAlphorm.com  Formation le langage SQL
Alphorm.com Formation le langage SQLAlphorm
 
Alphorm.com Formation ETL Talend Open Studio (1/2) - Les fondamentaux
Alphorm.com Formation ETL Talend Open Studio (1/2) - Les fondamentauxAlphorm.com Formation ETL Talend Open Studio (1/2) - Les fondamentaux
Alphorm.com Formation ETL Talend Open Studio (1/2) - Les fondamentauxAlphorm
 
Spring par la pratique chap-7 - mvc
Spring par la pratique  chap-7 - mvcSpring par la pratique  chap-7 - mvc
Spring par la pratique chap-7 - mvcFlorent Breton
 
Presentation Spring, Spring MVC
Presentation Spring, Spring MVCPresentation Spring, Spring MVC
Presentation Spring, Spring MVCNathaniel Richand
 
Egalite de chances
Egalite de chancesEgalite de chances
Egalite de chancesiesboliches
 
ENIB cours CAI Web - Séance 4 - Frameworks/Spring - TD
ENIB cours CAI Web - Séance 4 - Frameworks/Spring - TDENIB cours CAI Web - Séance 4 - Frameworks/Spring - TD
ENIB cours CAI Web - Séance 4 - Frameworks/Spring - TDHoracio Gonzalez
 
Valtech - Du BI au Big Data, une révolution dans l’entreprise
Valtech - Du BI au Big Data, une révolution dans l’entrepriseValtech - Du BI au Big Data, une révolution dans l’entreprise
Valtech - Du BI au Big Data, une révolution dans l’entrepriseValtech
 
Alphorm.com Support de la Formation Symfony 3 , les fondamentaux-ss
Alphorm.com Support de la Formation Symfony 3 , les fondamentaux-ssAlphorm.com Support de la Formation Symfony 3 , les fondamentaux-ss
Alphorm.com Support de la Formation Symfony 3 , les fondamentaux-ssAlphorm
 
Alphorm.com Formation Dreamweaver CC pour les débutants
Alphorm.com Formation Dreamweaver CC pour les débutantsAlphorm.com Formation Dreamweaver CC pour les débutants
Alphorm.com Formation Dreamweaver CC pour les débutantsAlphorm
 
Alphorm.com Formation Lync Server 2013 (70-336)
Alphorm.com Formation Lync Server 2013 (70-336)Alphorm.com Formation Lync Server 2013 (70-336)
Alphorm.com Formation Lync Server 2013 (70-336)Alphorm
 
Alphorm.com Support de la Formation JavaScript , avancé
Alphorm.com Support de la Formation JavaScript , avancéAlphorm.com Support de la Formation JavaScript , avancé
Alphorm.com Support de la Formation JavaScript , avancéAlphorm
 
Alphorm.com Support de la formation Mac OS X Server 10.11 El Capitan les fonc...
Alphorm.com Support de la formation Mac OS X Server 10.11 El Capitan les fonc...Alphorm.com Support de la formation Mac OS X Server 10.11 El Capitan les fonc...
Alphorm.com Support de la formation Mac OS X Server 10.11 El Capitan les fonc...Alphorm
 
Alphorm.com Support de la Formation Windows 10 Troubleshootings partie 1
Alphorm.com Support de la Formation Windows 10 Troubleshootings partie 1Alphorm.com Support de la Formation Windows 10 Troubleshootings partie 1
Alphorm.com Support de la Formation Windows 10 Troubleshootings partie 1Alphorm
 
alphorm.com - Formation VMware Mirage 3.6
alphorm.com - Formation VMware Mirage 3.6alphorm.com - Formation VMware Mirage 3.6
alphorm.com - Formation VMware Mirage 3.6Alphorm
 
Alphorm.com Support de la formation Hacking & Sécurité, Expert - Vulnérabilit...
Alphorm.com Support de la formation Hacking & Sécurité, Expert - Vulnérabilit...Alphorm.com Support de la formation Hacking & Sécurité, Expert - Vulnérabilit...
Alphorm.com Support de la formation Hacking & Sécurité, Expert - Vulnérabilit...Alphorm
 
Alphorm.com Formation Red Hat RH124
Alphorm.com Formation Red Hat RH124Alphorm.com Formation Red Hat RH124
Alphorm.com Formation Red Hat RH124Alphorm
 
Alphorm.com Support Formation Red Hat Administration Système III RHCSE-(Rh254)
Alphorm.com Support Formation Red Hat Administration Système III RHCSE-(Rh254)Alphorm.com Support Formation Red Hat Administration Système III RHCSE-(Rh254)
Alphorm.com Support Formation Red Hat Administration Système III RHCSE-(Rh254)Alphorm
 

Destacado (20)

alphorm.com - Formation HTML5, CSS 3 et JavaScript (70-480)
alphorm.com - Formation HTML5, CSS 3 et JavaScript (70-480)alphorm.com - Formation HTML5, CSS 3 et JavaScript (70-480)
alphorm.com - Formation HTML5, CSS 3 et JavaScript (70-480)
 
Alphorm.com Java 8: les nouveautés
Alphorm.com Java 8: les nouveautésAlphorm.com Java 8: les nouveautés
Alphorm.com Java 8: les nouveautés
 
Alphorm.com Formation le langage SQL
Alphorm.com  Formation le langage SQLAlphorm.com  Formation le langage SQL
Alphorm.com Formation le langage SQL
 
Alphorm.com Formation ETL Talend Open Studio (1/2) - Les fondamentaux
Alphorm.com Formation ETL Talend Open Studio (1/2) - Les fondamentauxAlphorm.com Formation ETL Talend Open Studio (1/2) - Les fondamentaux
Alphorm.com Formation ETL Talend Open Studio (1/2) - Les fondamentaux
 
Spring par la pratique chap-7 - mvc
Spring par la pratique  chap-7 - mvcSpring par la pratique  chap-7 - mvc
Spring par la pratique chap-7 - mvc
 
Presentation Spring, Spring MVC
Presentation Spring, Spring MVCPresentation Spring, Spring MVC
Presentation Spring, Spring MVC
 
Egalite de chances
Egalite de chancesEgalite de chances
Egalite de chances
 
ENIB cours CAI Web - Séance 4 - Frameworks/Spring - TD
ENIB cours CAI Web - Séance 4 - Frameworks/Spring - TDENIB cours CAI Web - Séance 4 - Frameworks/Spring - TD
ENIB cours CAI Web - Séance 4 - Frameworks/Spring - TD
 
Tuto spring
Tuto springTuto spring
Tuto spring
 
Valtech - Du BI au Big Data, une révolution dans l’entreprise
Valtech - Du BI au Big Data, une révolution dans l’entrepriseValtech - Du BI au Big Data, une révolution dans l’entreprise
Valtech - Du BI au Big Data, une révolution dans l’entreprise
 
Alphorm.com Support de la Formation Symfony 3 , les fondamentaux-ss
Alphorm.com Support de la Formation Symfony 3 , les fondamentaux-ssAlphorm.com Support de la Formation Symfony 3 , les fondamentaux-ss
Alphorm.com Support de la Formation Symfony 3 , les fondamentaux-ss
 
Alphorm.com Formation Dreamweaver CC pour les débutants
Alphorm.com Formation Dreamweaver CC pour les débutantsAlphorm.com Formation Dreamweaver CC pour les débutants
Alphorm.com Formation Dreamweaver CC pour les débutants
 
Alphorm.com Formation Lync Server 2013 (70-336)
Alphorm.com Formation Lync Server 2013 (70-336)Alphorm.com Formation Lync Server 2013 (70-336)
Alphorm.com Formation Lync Server 2013 (70-336)
 
Alphorm.com Support de la Formation JavaScript , avancé
Alphorm.com Support de la Formation JavaScript , avancéAlphorm.com Support de la Formation JavaScript , avancé
Alphorm.com Support de la Formation JavaScript , avancé
 
Alphorm.com Support de la formation Mac OS X Server 10.11 El Capitan les fonc...
Alphorm.com Support de la formation Mac OS X Server 10.11 El Capitan les fonc...Alphorm.com Support de la formation Mac OS X Server 10.11 El Capitan les fonc...
Alphorm.com Support de la formation Mac OS X Server 10.11 El Capitan les fonc...
 
Alphorm.com Support de la Formation Windows 10 Troubleshootings partie 1
Alphorm.com Support de la Formation Windows 10 Troubleshootings partie 1Alphorm.com Support de la Formation Windows 10 Troubleshootings partie 1
Alphorm.com Support de la Formation Windows 10 Troubleshootings partie 1
 
alphorm.com - Formation VMware Mirage 3.6
alphorm.com - Formation VMware Mirage 3.6alphorm.com - Formation VMware Mirage 3.6
alphorm.com - Formation VMware Mirage 3.6
 
Alphorm.com Support de la formation Hacking & Sécurité, Expert - Vulnérabilit...
Alphorm.com Support de la formation Hacking & Sécurité, Expert - Vulnérabilit...Alphorm.com Support de la formation Hacking & Sécurité, Expert - Vulnérabilit...
Alphorm.com Support de la formation Hacking & Sécurité, Expert - Vulnérabilit...
 
Alphorm.com Formation Red Hat RH124
Alphorm.com Formation Red Hat RH124Alphorm.com Formation Red Hat RH124
Alphorm.com Formation Red Hat RH124
 
Alphorm.com Support Formation Red Hat Administration Système III RHCSE-(Rh254)
Alphorm.com Support Formation Red Hat Administration Système III RHCSE-(Rh254)Alphorm.com Support Formation Red Hat Administration Système III RHCSE-(Rh254)
Alphorm.com Support Formation Red Hat Administration Système III RHCSE-(Rh254)
 

Similar a Alphorm.com Formation Java, les fondamentaux

Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !VISEO
 
Play Framework
Play FrameworkPlay Framework
Play FrameworkArmaklan
 
Objet Direct Formation Java pour devenir autonome
Objet Direct Formation Java pour devenir autonomeObjet Direct Formation Java pour devenir autonome
Objet Direct Formation Java pour devenir autonomeformationobjetdirect
 
.Net pour le développeur Java - une source d'inspiration?
.Net pour le développeur Java - une source d'inspiration?.Net pour le développeur Java - une source d'inspiration?
.Net pour le développeur Java - une source d'inspiration?Rui Carvalho
 
Certification java oracle java se 7 programmer
Certification java oracle   java se 7 programmerCertification java oracle   java se 7 programmer
Certification java oracle java se 7 programmerEGILIA Learning
 
OBJIS Congo présente 10 reperes cle du developpeur java
OBJIS Congo présente 10 reperes cle du developpeur javaOBJIS Congo présente 10 reperes cle du developpeur java
OBJIS Congo présente 10 reperes cle du developpeur javaDouglas MBIANDOU
 
Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014Ippon
 
Vincent biret azure functions et flow (montreal)
Vincent biret azure functions et flow (montreal)Vincent biret azure functions et flow (montreal)
Vincent biret azure functions et flow (montreal)Vincent Biret
 
Alphorm.com Formation knockoutJS
Alphorm.com Formation knockoutJSAlphorm.com Formation knockoutJS
Alphorm.com Formation knockoutJSAlphorm
 
Alphorm.com Support de la Formation PHP MySQL
Alphorm.com Support de la Formation PHP MySQLAlphorm.com Support de la Formation PHP MySQL
Alphorm.com Support de la Formation PHP MySQLAlphorm
 
Les plateformes de développement des web services
Les plateformes de développement des web servicesLes plateformes de développement des web services
Les plateformes de développement des web servicesoussemos
 
Develop on Apache Ofbiz
Develop on Apache OfbizDevelop on Apache Ofbiz
Develop on Apache Ofbizbakhtout
 
Javascript & tools
Javascript & toolsJavascript & tools
Javascript & toolsSlim Soussi
 
Du JavaScript dans mon projet
Du JavaScript dans mon projetDu JavaScript dans mon projet
Du JavaScript dans mon projetjollivetc
 

Similar a Alphorm.com Formation Java, les fondamentaux (20)

Javaoop
JavaoopJavaoop
Javaoop
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !
 
Play Framework
Play FrameworkPlay Framework
Play Framework
 
Objet Direct Formation Java pour devenir autonome
Objet Direct Formation Java pour devenir autonomeObjet Direct Formation Java pour devenir autonome
Objet Direct Formation Java pour devenir autonome
 
Certification java oca
Certification java ocaCertification java oca
Certification java oca
 
.Net pour le développeur Java - une source d'inspiration?
.Net pour le développeur Java - une source d'inspiration?.Net pour le développeur Java - une source d'inspiration?
.Net pour le développeur Java - une source d'inspiration?
 
Certification java oracle java se 7 programmer
Certification java oracle   java se 7 programmerCertification java oracle   java se 7 programmer
Certification java oracle java se 7 programmer
 
OBJIS Congo présente 10 reperes cle du developpeur java
OBJIS Congo présente 10 reperes cle du developpeur javaOBJIS Congo présente 10 reperes cle du developpeur java
OBJIS Congo présente 10 reperes cle du developpeur java
 
Octo Maven.pdf
Octo Maven.pdfOcto Maven.pdf
Octo Maven.pdf
 
Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014
 
Vincent biret azure functions et flow (montreal)
Vincent biret azure functions et flow (montreal)Vincent biret azure functions et flow (montreal)
Vincent biret azure functions et flow (montreal)
 
Alphorm.com Formation knockoutJS
Alphorm.com Formation knockoutJSAlphorm.com Formation knockoutJS
Alphorm.com Formation knockoutJS
 
Rails 3 au Djangocong
Rails 3 au DjangocongRails 3 au Djangocong
Rails 3 au Djangocong
 
Usine Logicielle 2013
Usine Logicielle 2013Usine Logicielle 2013
Usine Logicielle 2013
 
Alphorm.com Support de la Formation PHP MySQL
Alphorm.com Support de la Formation PHP MySQLAlphorm.com Support de la Formation PHP MySQL
Alphorm.com Support de la Formation PHP MySQL
 
Les plateformes de développement des web services
Les plateformes de développement des web servicesLes plateformes de développement des web services
Les plateformes de développement des web services
 
Develop on Apache Ofbiz
Develop on Apache OfbizDevelop on Apache Ofbiz
Develop on Apache Ofbiz
 
Javascript & tools
Javascript & toolsJavascript & tools
Javascript & tools
 
Du JavaScript dans mon projet
Du JavaScript dans mon projetDu JavaScript dans mon projet
Du JavaScript dans mon projet
 
J platform
J platformJ platform
J platform
 

Más de Alphorm

Alphorm.com Formation Microsoft 365 (MS-500) : Administrateur Sécurité - Prot...
Alphorm.com Formation Microsoft 365 (MS-500) : Administrateur Sécurité - Prot...Alphorm.com Formation Microsoft 365 (MS-500) : Administrateur Sécurité - Prot...
Alphorm.com Formation Microsoft 365 (MS-500) : Administrateur Sécurité - Prot...Alphorm
 
Alphorm.com Formation Google Sheets : Créer un Tableau de Bord Collaboratif a...
Alphorm.com Formation Google Sheets : Créer un Tableau de Bord Collaboratif a...Alphorm.com Formation Google Sheets : Créer un Tableau de Bord Collaboratif a...
Alphorm.com Formation Google Sheets : Créer un Tableau de Bord Collaboratif a...Alphorm
 
Alphorm.com Formation CCNP ENCOR 350-401 (6of8) : Sécurité
Alphorm.com Formation CCNP ENCOR 350-401 (6of8) : SécuritéAlphorm.com Formation CCNP ENCOR 350-401 (6of8) : Sécurité
Alphorm.com Formation CCNP ENCOR 350-401 (6of8) : SécuritéAlphorm
 
Alphorm.com Formation Vue JS 3 : Créer une application de A à Z
Alphorm.com Formation Vue JS 3 : Créer une application de A à ZAlphorm.com Formation Vue JS 3 : Créer une application de A à Z
Alphorm.com Formation Vue JS 3 : Créer une application de A à ZAlphorm
 
Alphorm.com Formation Blockchain : Maîtriser la Conception d'Architectures
Alphorm.com Formation Blockchain : Maîtriser la Conception d'ArchitecturesAlphorm.com Formation Blockchain : Maîtriser la Conception d'Architectures
Alphorm.com Formation Blockchain : Maîtriser la Conception d'ArchitecturesAlphorm
 
Alphorm.com Formation Sage : Gestion Commerciale
Alphorm.com Formation Sage : Gestion CommercialeAlphorm.com Formation Sage : Gestion Commerciale
Alphorm.com Formation Sage : Gestion CommercialeAlphorm
 
Alphorm.com Formation PHP 8 (2/6) : L'héritage en orienté objet
Alphorm.com Formation PHP 8 (2/6) : L'héritage en orienté objetAlphorm.com Formation PHP 8 (2/6) : L'héritage en orienté objet
Alphorm.com Formation PHP 8 (2/6) : L'héritage en orienté objetAlphorm
 
Alphorm.com Formation Excel 2019 : Concevoir un Tableau de Bord Interactif
Alphorm.com Formation Excel 2019 : Concevoir un Tableau de Bord InteractifAlphorm.com Formation Excel 2019 : Concevoir un Tableau de Bord Interactif
Alphorm.com Formation Excel 2019 : Concevoir un Tableau de Bord InteractifAlphorm
 
Alphorm.com Formation Maya 3D : Créer un Design d'intérieur au Style Isométrique
Alphorm.com Formation Maya 3D : Créer un Design d'intérieur au Style IsométriqueAlphorm.com Formation Maya 3D : Créer un Design d'intérieur au Style Isométrique
Alphorm.com Formation Maya 3D : Créer un Design d'intérieur au Style IsométriqueAlphorm
 
Alphorm.com Formation VMware vSphere 7 : La Mise à Niveau
Alphorm.com Formation VMware vSphere 7 : La Mise à NiveauAlphorm.com Formation VMware vSphere 7 : La Mise à Niveau
Alphorm.com Formation VMware vSphere 7 : La Mise à NiveauAlphorm
 
Alphorm.com Formation Apprendre les bonnes pratiques de CSS avec BEM : OOCSS ...
Alphorm.com Formation Apprendre les bonnes pratiques de CSS avec BEM : OOCSS ...Alphorm.com Formation Apprendre les bonnes pratiques de CSS avec BEM : OOCSS ...
Alphorm.com Formation Apprendre les bonnes pratiques de CSS avec BEM : OOCSS ...Alphorm
 
Alphorm.com Formation Unity : Monétiser votre jeu 3D sur les plateformes Mobiles
Alphorm.com Formation Unity : Monétiser votre jeu 3D sur les plateformes MobilesAlphorm.com Formation Unity : Monétiser votre jeu 3D sur les plateformes Mobiles
Alphorm.com Formation Unity : Monétiser votre jeu 3D sur les plateformes MobilesAlphorm
 
Alphorm.com Formation PHP 8 : Les bases de la POO
Alphorm.com Formation PHP 8 : Les bases de la POOAlphorm.com Formation PHP 8 : Les bases de la POO
Alphorm.com Formation PHP 8 : Les bases de la POOAlphorm
 
Alphorm.com Formation Power BI : Transformation de Données avec DAX et Power ...
Alphorm.com Formation Power BI : Transformation de Données avec DAX et Power ...Alphorm.com Formation Power BI : Transformation de Données avec DAX et Power ...
Alphorm.com Formation Power BI : Transformation de Données avec DAX et Power ...Alphorm
 
Alphorm.com Formation Techniques de Blue Teaming : L'Essentiel pour l'Analyst...
Alphorm.com Formation Techniques de Blue Teaming : L'Essentiel pour l'Analyst...Alphorm.com Formation Techniques de Blue Teaming : L'Essentiel pour l'Analyst...
Alphorm.com Formation Techniques de Blue Teaming : L'Essentiel pour l'Analyst...Alphorm
 
Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Comp...
Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Comp...Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Comp...
Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Comp...Alphorm
 
Alphorm.com Formation Unity (6/7) : Maitriser l'Intelligence Artificielle de ...
Alphorm.com Formation Unity (6/7) : Maitriser l'Intelligence Artificielle de ...Alphorm.com Formation Unity (6/7) : Maitriser l'Intelligence Artificielle de ...
Alphorm.com Formation Unity (6/7) : Maitriser l'Intelligence Artificielle de ...Alphorm
 
Alphorm.com Formation Architecture Microservices : Jenkins et SpringBoot
Alphorm.com Formation Architecture Microservices : Jenkins et SpringBootAlphorm.com Formation Architecture Microservices : Jenkins et SpringBoot
Alphorm.com Formation Architecture Microservices : Jenkins et SpringBootAlphorm
 
Alphorm.com Formation Active Directory 2022 : Multi Sites et Services
Alphorm.com Formation Active Directory 2022 : Multi Sites et ServicesAlphorm.com Formation Active Directory 2022 : Multi Sites et Services
Alphorm.com Formation Active Directory 2022 : Multi Sites et ServicesAlphorm
 
Alphorm.com Formation Vue JS 3 : Exploiter la Composition API
Alphorm.com Formation Vue JS 3 : Exploiter la Composition APIAlphorm.com Formation Vue JS 3 : Exploiter la Composition API
Alphorm.com Formation Vue JS 3 : Exploiter la Composition APIAlphorm
 

Más de Alphorm (20)

Alphorm.com Formation Microsoft 365 (MS-500) : Administrateur Sécurité - Prot...
Alphorm.com Formation Microsoft 365 (MS-500) : Administrateur Sécurité - Prot...Alphorm.com Formation Microsoft 365 (MS-500) : Administrateur Sécurité - Prot...
Alphorm.com Formation Microsoft 365 (MS-500) : Administrateur Sécurité - Prot...
 
Alphorm.com Formation Google Sheets : Créer un Tableau de Bord Collaboratif a...
Alphorm.com Formation Google Sheets : Créer un Tableau de Bord Collaboratif a...Alphorm.com Formation Google Sheets : Créer un Tableau de Bord Collaboratif a...
Alphorm.com Formation Google Sheets : Créer un Tableau de Bord Collaboratif a...
 
Alphorm.com Formation CCNP ENCOR 350-401 (6of8) : Sécurité
Alphorm.com Formation CCNP ENCOR 350-401 (6of8) : SécuritéAlphorm.com Formation CCNP ENCOR 350-401 (6of8) : Sécurité
Alphorm.com Formation CCNP ENCOR 350-401 (6of8) : Sécurité
 
Alphorm.com Formation Vue JS 3 : Créer une application de A à Z
Alphorm.com Formation Vue JS 3 : Créer une application de A à ZAlphorm.com Formation Vue JS 3 : Créer une application de A à Z
Alphorm.com Formation Vue JS 3 : Créer une application de A à Z
 
Alphorm.com Formation Blockchain : Maîtriser la Conception d'Architectures
Alphorm.com Formation Blockchain : Maîtriser la Conception d'ArchitecturesAlphorm.com Formation Blockchain : Maîtriser la Conception d'Architectures
Alphorm.com Formation Blockchain : Maîtriser la Conception d'Architectures
 
Alphorm.com Formation Sage : Gestion Commerciale
Alphorm.com Formation Sage : Gestion CommercialeAlphorm.com Formation Sage : Gestion Commerciale
Alphorm.com Formation Sage : Gestion Commerciale
 
Alphorm.com Formation PHP 8 (2/6) : L'héritage en orienté objet
Alphorm.com Formation PHP 8 (2/6) : L'héritage en orienté objetAlphorm.com Formation PHP 8 (2/6) : L'héritage en orienté objet
Alphorm.com Formation PHP 8 (2/6) : L'héritage en orienté objet
 
Alphorm.com Formation Excel 2019 : Concevoir un Tableau de Bord Interactif
Alphorm.com Formation Excel 2019 : Concevoir un Tableau de Bord InteractifAlphorm.com Formation Excel 2019 : Concevoir un Tableau de Bord Interactif
Alphorm.com Formation Excel 2019 : Concevoir un Tableau de Bord Interactif
 
Alphorm.com Formation Maya 3D : Créer un Design d'intérieur au Style Isométrique
Alphorm.com Formation Maya 3D : Créer un Design d'intérieur au Style IsométriqueAlphorm.com Formation Maya 3D : Créer un Design d'intérieur au Style Isométrique
Alphorm.com Formation Maya 3D : Créer un Design d'intérieur au Style Isométrique
 
Alphorm.com Formation VMware vSphere 7 : La Mise à Niveau
Alphorm.com Formation VMware vSphere 7 : La Mise à NiveauAlphorm.com Formation VMware vSphere 7 : La Mise à Niveau
Alphorm.com Formation VMware vSphere 7 : La Mise à Niveau
 
Alphorm.com Formation Apprendre les bonnes pratiques de CSS avec BEM : OOCSS ...
Alphorm.com Formation Apprendre les bonnes pratiques de CSS avec BEM : OOCSS ...Alphorm.com Formation Apprendre les bonnes pratiques de CSS avec BEM : OOCSS ...
Alphorm.com Formation Apprendre les bonnes pratiques de CSS avec BEM : OOCSS ...
 
Alphorm.com Formation Unity : Monétiser votre jeu 3D sur les plateformes Mobiles
Alphorm.com Formation Unity : Monétiser votre jeu 3D sur les plateformes MobilesAlphorm.com Formation Unity : Monétiser votre jeu 3D sur les plateformes Mobiles
Alphorm.com Formation Unity : Monétiser votre jeu 3D sur les plateformes Mobiles
 
Alphorm.com Formation PHP 8 : Les bases de la POO
Alphorm.com Formation PHP 8 : Les bases de la POOAlphorm.com Formation PHP 8 : Les bases de la POO
Alphorm.com Formation PHP 8 : Les bases de la POO
 
Alphorm.com Formation Power BI : Transformation de Données avec DAX et Power ...
Alphorm.com Formation Power BI : Transformation de Données avec DAX et Power ...Alphorm.com Formation Power BI : Transformation de Données avec DAX et Power ...
Alphorm.com Formation Power BI : Transformation de Données avec DAX et Power ...
 
Alphorm.com Formation Techniques de Blue Teaming : L'Essentiel pour l'Analyst...
Alphorm.com Formation Techniques de Blue Teaming : L'Essentiel pour l'Analyst...Alphorm.com Formation Techniques de Blue Teaming : L'Essentiel pour l'Analyst...
Alphorm.com Formation Techniques de Blue Teaming : L'Essentiel pour l'Analyst...
 
Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Comp...
Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Comp...Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Comp...
Alphorm.com Formation Améliorer le développement avec CSS-in-JS _ Styled Comp...
 
Alphorm.com Formation Unity (6/7) : Maitriser l'Intelligence Artificielle de ...
Alphorm.com Formation Unity (6/7) : Maitriser l'Intelligence Artificielle de ...Alphorm.com Formation Unity (6/7) : Maitriser l'Intelligence Artificielle de ...
Alphorm.com Formation Unity (6/7) : Maitriser l'Intelligence Artificielle de ...
 
Alphorm.com Formation Architecture Microservices : Jenkins et SpringBoot
Alphorm.com Formation Architecture Microservices : Jenkins et SpringBootAlphorm.com Formation Architecture Microservices : Jenkins et SpringBoot
Alphorm.com Formation Architecture Microservices : Jenkins et SpringBoot
 
Alphorm.com Formation Active Directory 2022 : Multi Sites et Services
Alphorm.com Formation Active Directory 2022 : Multi Sites et ServicesAlphorm.com Formation Active Directory 2022 : Multi Sites et Services
Alphorm.com Formation Active Directory 2022 : Multi Sites et Services
 
Alphorm.com Formation Vue JS 3 : Exploiter la Composition API
Alphorm.com Formation Vue JS 3 : Exploiter la Composition APIAlphorm.com Formation Vue JS 3 : Exploiter la Composition API
Alphorm.com Formation Vue JS 3 : Exploiter la Composition API
 

Alphorm.com Formation Java, les fondamentaux

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