Présentation de la formation 
Java les fondamentaux 
(examen 1Z0-803) 
Fabien Brissonneau 
Consultant, concepteur et forma...
Plan 
• Présentation du formateur 
• Les autres formations sur Alphorm 
• Qu’est-ce que Java ? 
• Le plan de la formation ...
Présentation du formateur 
• Fabien Brissonneau 
• Email : fabien.brissonneau@gmail.com 
• Consultant Concepteur et Format...
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...
Le plan de la formation 
• Présentation de la technologie Java 
• Penser en termes objet 
• Présentation du langage Java 
...
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...
Les publics concernés 
• Cette formation est la première de 2 formations certifiantes 
• Java SE7 
• La formation suivante...
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 : ...
Plan 
• Historique 
• Caractéristiques essentielles du langage 
• Comparer Java à C++ 
• Comparer Java à C# 
• Comparer Ja...
Historique 
• Démarre en 1991, chez SUN, projet dirigé par James Gosling 
• Projet Oak, partant du C++ en éliminant les po...
Caractéristiques essentielles 
• Langage à la syntaxe simple 
• Langage généraliste 
• Langage indépendant de la plateform...
Comparer Java à C++ 
• Objectifs : C++ est proche du système, Java a une grande couche d’abstraction 
• Syntaxe : C++ a un...
Comparer Java à C# 
• Objectifs : C# est lié au monde Microsoft et Java n’est pas lié à un constructeur 
• Syntaxe : C# et...
Comparer Java à Python 
• Objectifs : Python est plus un langage de « glue », là où Java servirait à créer les 
composants...
Ce qu’on a couvert 
• Nous avons rappelé les caractéristiques essentielles de Java 
• Nous avons comparé Java à d’autres d...
Présentation 
Téléchargement et 
installation de Java 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Log...
Plan 
• Où trouver Java ? 
• Les téléchargements disponibles 
• Installation des outils Java 
• Configuration de l’environ...
Où trouver Java ? 
• Le nécessaire pour exécuter : www.java.com 
• Le kit de développement : Java Development Kit (JDK) 
•...
Les téléchargements disponibles 
• Les éditions Java : Java SE, Java EE, Java ME 
• Standard Edition : JRE complet + outil...
Installation des outils 
• JDK SE : téléchargement, installation sous différentes plateformes 
• Téléchargement et install...
Configuration des outils 
• Netbeans 
• Eclipse 
• Ligne de commande 
 PATH 
 CLASSPATH 
 JAVA_HOME / JRE_HOME 
Java, les ...
Ce qu’on a couvert 
• Où trouver Java ? 
• Les téléchargements disponibles 
• Installation des outils Java 
• Configuratio...
Présentation 
Les technologies Java 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciels 
Site : htt...
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 Runtim...
Java EE 
• Version entreprise de Java 
• Il existe 2 profils : EE SDK et EE Web Profile SDK 
• Les deux versions sont livr...
Embedded Java 
• Java pour environnements pauvres en ressources 
• 2 options proposées : Java ME Embedded et Java ME Embed...
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, conc...
Plan 
• Syntaxe du langage Java 
• Les bibliothèques Java 
• La machine virtuelle 
• La gestion de la ressource mémoire 
•...
La syntaxe du langage Java 
• Une syntaxe rappelant celle du C++ 
• Simple et productive 
• Pas de pièges, objectif de lis...
Les bibliothèques Java 
• Les bibliothèques standard sont très larges 
• Couvrent tous les aspects d’une aplication 
• Evi...
La machine virtuelle 
• A l’origine, une machine logicielle qui interprète du bytecode 
• Le code Java est compilé explici...
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 s...
L’ouverture des technologies 
• Le processus d’évolution du langage est ouvert 
• Les spécifications sont ouvertes (JVM) 
...
Ce qu’on a couvert 
• Syntaxe du langage Java 
• Les bibliothèques Java 
• La machine virtuelle 
• La gestion de la ressou...
Présentation 
Utiliser un environnement 
de développement intégré 
Fabien Brissonneau 
Consultant, concepteur et formateur...
Plan 
• L’IDE Netbeans 
• Créer un projet 
• Produire à partir du projet 
• L’IDE Eclipse 
Java, les fondamentaux alphorm....
Netbeans 
• Environnement d’origine Oracle/Sun 
• Fournit en bundle avec Java JDK 
• Plateforme sur laquelle on installe d...
Créer un projet 
• La notion de projet n’est pas Java 
• Il faut créer un projet Netbeans 
• Le source Java est créé/compi...
Produire à partir du projet 
• Production de .class, issus de la compilation 
• Génération de fichiers zippés comme les « ...
L’IDE Eclipse 
• Eclipse est une plateforme d’origine IBM 
• Largement utilisée 
• Indépendante de Java 
• Plateforme sur ...
Ce qu’on a couvert 
• L’IDE Netbeans 
• Créer un projet 
• Produire à partir du projet 
• L’IDE Eclipse 
Java, les fondame...
Penser en termes d’objets 
Définir le domaine du 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciel...
Plan 
• Domaine/métier/analyse/conception/code 
• Rôle du modèle du domaine 
• Rôle du modèle de conception 
• Traduction ...
Domaine - conception - code 
• Le modèle du domaine est la première vue orientée objets 
• La trace entre métier et code e...
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 ...
Le modèle de conception 
• A partir du modèle du domaine 
• Prenant en compte l’architecture technique 
• Le modèle de con...
Traduction en Java 
• Le type d’objet est une classe - Java 
• Les attributs sont les données 
• Les méthodes sont les fon...
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 ...
Penser en termes d’objets 
Identifier les objets 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciel...
Plan 
• Définition d’un objet 
• Pourquoi parler de classes 
• Définir un bon objet métier 
• Les classes applicatives 
• ...
Définition d’un objet 
• Une entité vivante, qui réagit aux messages reçus 
• Un objet contient les données et les traitem...
Pourquoi parler des classes 
• Une classe est un type d’objet 
• Parler des types au lieu des exemples occurrents permet s...
Définir un bon objet métier 
• Souvent repéré comme un groupe nominal dans un énoncé 
• Un bon objet métier est manipulé p...
Les classes applicatives 
• Une classe applicative correspond aux couches techniques 
• Elle apparaît dans le modèle de co...
Vocabulaire 
• Les classes contiennent toutes les données et traitements 
• Rien ne peut être en dehors des classes 
• Les...
Ce qu’on a couvert 
• Définition d’un objet 
• Pourquoi parler de classes 
• Définir un bon objet métier 
• Les classes ap...
Présentation du langage Java 
Définir les classes 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logicie...
Plan 
• Une classe définit les attributs et les méthodes 
• Les visibilités autorisent ou interdisent les accès aux membre...
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...
Les visibilités 
• Pour implémenter l’encapsulation 
• Visibilités : par défaut, private, protected, public 
• Limitent l’...
Les constructeurs 
• Les constructeurs sont des méthodes 
 Qui portent le nom de la classe 
 N’ont pas de type de retour 
...
La définition de classe a des modificateurs 
• Classe publique ou non 
• Classe extension d’une autre 
• Classe implémenta...
Ce qu’on a couvert 
• Une classe définit les attributs et les méthodes 
• Les visibilités autorisent ou interdisent les ac...
Présentation du langage Java 
Identifier les composants 
d’une classe 
Fabien Brissonneau 
Consultant, concepteur et forma...
Plan 
• Les composants possibles 
• Créer des attributs 
• Créer des constructeurs 
• Créer des méthodes 
Java, les fondam...
Les composants d’une classe 
• Une classe définit des attributs, ou champs de données 
• Une classe définit des constructe...
Créer des attributs 
• Un champ de donnée est typé 
• Son nom suit la convention : commence par une minuscule et ensuite 
...
Créer des constructeurs 
• Un constructeur est une fonction membre spéciale 
• Le nom d’un constructeur est le nom de la c...
Créer des méthodes 
• Une méthode est un traitement effectué sur un objet 
• Son nom suit la même convention que les attri...
Ce qu’on a couvert 
• Les composants possibles 
• Créer des attributs 
• Créer des constructeurs 
• Créer des méthodes 
Ja...
Présentation du langage Java 
Créer et utiliser une classe 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objet...
Plan 
• Définition d’une classe de test 
• Construction d’une classe de test 
• Utilisation simple d’une classe de test 
•...
Définition d’une classe de test 
• Une classe qui ne sert qu’à tester une autre classe 
• Une classe est l’unité de test p...
Construction d’une classe de test 
• Pour chaque classe du modèle, créer une classe de test 
• Dans cette nouvelle classe,...
Utilisation simple d’une classe de test 
• Dans un main 
• Appeler les méthodes de la classe de test 
• On voit qu’il est ...
Utilisation d’un framework de test 
• JUnit s’est imposé comme un framework de test 
• Appels statiques 
• Les classes et ...
Ce qu’on a couvert 
• Définition d’une classe de test 
• Construction d’une classe de test 
• Utilisation simple d’une cla...
Présentation du langage Java 
Compiler et exécuter un 
programme de test 
Fabien Brissonneau 
Consultant, concepteur et fo...
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...
Programme de test JUnit 
• Avec un framework de test comme JUnit, construction des classes de 
test simplifié 
• Lancement...
Ce qu’on a couvert 
• Création d’un programme de test 
• Lancement d’un programme de test 
Java, les fondamentaux alphorm....
Utiliser des primitives 
Déclarer et initialiser des 
variables de champs 
Fabien Brissonneau 
Consultant, concepteur et f...
Plan 
• Qu’est-ce qu’une primitive ? 
• Déclaration d’un champ de donnée 
• Initialiser un champ de donnée 
Java, les fond...
Qu’est-ce qu’une primitive ? 
• Les types primitifs sont les types fondamentaux de Java 
• Les données primitives sont pla...
Déclaration d’un champ de donnée 
• La forme générale est : Type nomDeLaVariable; 
• On peut rajouter la visibilité 
• Et ...
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éra...
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 
...
Utiliser des primitives 
Décrire les types primitifs 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logi...
Plan 
• Les types entiers 
• Les types flottants 
• Le type caractère 
• Le type booléen 
Java, les fondamentaux alphorm.c...
Les types entiers 
• Un octet signé : byte 
• Deux octets signés : short 
• Quatre octets signés : int 
• Huit octets sign...
Les types flottants 
• 32-bit IEEE 754 : float 
• 64-bit IEEE 754 : double 
• Ne pas utiliser ces types pour des monétaire...
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...
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 ...
Ce qu’on a couvert 
• Les types entiers 
• Les types flottants 
• Le type caractère 
• Le type booléen 
Java, les fondamen...
Utiliser des primitives 
Déclarer des variables et 
leur affecter des valeurs 
Fabien Brissonneau 
Consultant, concepteur ...
Plan 
• Les variables en Java 
• Comportement des variables locales 
• L’affectation d’une valeur à une variable locale 
J...
Les variables en Java 
• Les variables sont déclarées et typées 
• Les variables attributs, ou champ de donnée 
• Les vari...
Comportement des variables locales 
• Une variable locale est déclarée à l’intérieur d’une méthode 
• Elle disparaît à la ...
L’affectation d’une variable locale 
• Pour être utilisée, une variable doit avoir une valeur : 
 À l’initialisation 
 Plu...
Ce qu’on a couvert 
• Les variables en Java 
• Comportement des variables locales 
• L’affectation d’une valeur à une vari...
Utiliser des primitives 
Utiliser des constantes 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciel...
Plan 
• Un mot clé pour créer une constante 
• Une constante en attribut, publique ou non 
• Une constante en variable loc...
Un mot clé pour créer une constante 
• En utilisant le mot-clé « final » 
• Il faut donner une valeur à la variable 
• Il ...
Une constante en attribut 
• Une constante en attribut peut-être : 
 Une information constante pour le code de la classe -...
Une constante en variable locale 
• Une variable locale constante ne peut pas être modifiée dans sa portée 
• Elle interdi...
Ce qu’on a couvert 
• Un mot clé pour créer une constante 
• Une constante en attribut, publique ou non 
• Une constante e...
Utiliser des primitives 
Utiliser des opérateurs 
arithmétiques 
Fabien Brissonneau 
Consultant, concepteur et formateur 
...
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 +=, -=, /=,*= 
• O...
Le comportement des types 
• Pour garder la précision des calculs, on promeut les short et byte en int 
• Il vaut mieux do...
Ce qu’on a couvert 
• Les opérateurs arithmétiques en Java 
• Le comportement des types 
Java, les fondamentaux alphorm.co...
Utiliser des objets 
Déclarer et initialiser des 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciel...
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...
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 ...
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’in...
Ce qu’on a couvert 
• Référence vs objet 
• Référence locale, paramètre 
• Référence en attribut 
Java, les fondamentaux a...
Utiliser des objets 
Stocker des objets en 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciels 
Sit...
Plan 
• Un objet peut référencer d’autres objets 
• Règles d’accès aux objets en mémoire 
Java, les fondamentaux alphorm.c...
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 
...
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ègl...
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 fondamen...
Utiliser des objets 
Utiliser des références 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciels 
S...
Plan 
• Référence et objets 
• Accéder à un champ d’un objet 
• Accéder à une méthode d’un objet 
Java, les fondamentaux a...
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émoi...
Accéder à un champ 
• Via une référence, on obtient un accès aux membres 
• Si le champ est accessible (champ « public » p...
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 attri...
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 ...
Utiliser des objets 
Utiliser les javadocs 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciels 
Sit...
Plan 
• Qu’est-ce que javadoc ? 
• Visiter la documentation de jse 
• Appliquer la documentation dans son code 
Java, les ...
Qu’est-ce que javadoc ? 
• Javadoc est un outil pour produire de la documentation technique 
• Il peut être appliqué sur s...
Visiter la documentation jse 
• Accéder au site Oracle, ou bien en utiliser un téléchargement 
• Trouver le package, la cl...
Appliquer la documentation au code 
• Avec la classe Date, créer une Date now et today 
 Un constructeur par défaut qui cr...
Ce qu’on a couvert 
• Qu’est-ce que javadoc ? 
• Visiter la documentation de jse 
• Appliquer la documentation dans son co...
Utiliser des objets 
Utiliser des objets String et 
StringBuilder 
Fabien Brissonneau 
Consultant, concepteur et formateur...
Plan 
• La chaîne de caractères String 
• Les limites de la classe String 
• L’intérêt de StringBuilder 
Java, les fondame...
La chaîne de caractères String 
• Une classe, avec des comportements 
• Une création exceptionnelle, rappelant les types p...
Les limites de la classe String 
• Une String est « immutable value » 
• Toutes les méthodes qui semblent modifier l’objet...
L’intérêt de StringBuilder 
• La classe StringBuilder n’a pas de relation de type avec String 
• Dédiée à la gestion de bu...
Ce qu’on a couvert 
• La chaîne de caractères String 
• Les limites de la classe String 
• L’intérêt de StringBuilder 
Jav...
Utiliser des opérateurs et des 
structures décisionnelles 
Opérateurs relationnels et 
conditionnels 
Fabien Brissonneau 
...
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 ...
Les opérateurs conditionnels 
• Les opérateurs , || sont court-circuit 
• Les opérateurs ,|,^ s’appliquent comme sur les b...
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,...
Plan 
• L’égalité physique ou sémantique des objets 
• La classe String et ses méthodes 
• == ou bien equals(…) ? 
Java, l...
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’appliqu...
La classe String et ses méthodes 
• Méthode equals : test d’égalité de 2 objets String 
 String str1 … String str2 … 
 Tes...
== ou bien equals(…) 
• == est un test physique 
• Les méthodes equals ou equalsIgnoreCase testent le contenu 
• == peut s...
Ce qu’on a couvert 
• L’égalité physique ou sémantique des objets 
• La classe String et ses méthodes 
• == ou bien equals...
Utiliser des opérateurs et des 
structures décisionnelles 
Evaluer différentes 
conditions et coder 
Fabien Brissonneau 
C...
Plan 
• Les expressions booléennes 
• Tester une seule condition, simple ou complexe 
• Tester une suite de condition 
• U...
Les expressions booléennes 
• Un expression booléenne est une expression dont l’évaluation donne 
true ou false 
• Un numé...
Tester une seule condition 
• Pour tester une seule condition : « if » avec ou sans accolades 
• Il est courant de rajoute...
Tester une suite de condition 
• Il faut enchaîner les « if » et les « else » 
• La logique conditionnelle pose rapidement...
Un branchement complexe 
• Lorsqu’une seule variable est tester, pour un ensemble de valeurs 
• En utilisant « switch / ca...
Ce qu’on a couvert 
• Les expressions booléennes 
• Tester une seule condition, simple ou complexe 
• Tester une suite de ...
Utiliser des opérateurs et des 
structures décisionnelles 
Créer des if et if/else 
Fabien Brissonneau 
Consultant, concep...
Plan 
• L’instruction « if » 
• Le couple « if / else » 
• L’intense « if / else / if /else / … » 
Java, les fondamentaux ...
L’instruction « if » 
• L’instruction « if » est suivie d’une condition entre parenthèses 
• Il y a une seule instruction ...
Le couple « if / else » 
• Un « if » sans « else » a t-il du sens ? 
• Une seule instruction après un « else », ou bien de...
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...
Utiliser des opérateurs et des 
structures décisionnelles 
Enchaîner les conditions 
Fabien Brissonneau 
Consultant, conce...
Plan 
• L’instruction « if / else » 
• Le cas de la création des objets 
• Que testent réellement les conditions ? 
Java, ...
L’instruction « if / else » 
• Une instruction conditionnelle est rapidement inévitable 
• Ne pas la rendre trop complexe ...
Le cas de la création des objets 
• Pour créer un objet, il faut connaître sa classe 
• La logique conditionnelle est donc...
Que testent réellement les conditions ? 
• Il faut éviter de tester le type des objets 
 Par instanceof 
 Par un autre moy...
Ce qu’on a couvert 
• L’instruction « if / else » 
• Le cas de la création des objets 
• Que testent réellement les condit...
Utiliser des opérateurs et des 
structures décisionnelles 
L’instruction switch 
Fabien Brissonneau 
Consultant, concepteu...
Plan 
• Forme générale du switch 
• Quand utiliser switch 
• Quand ne pas utiliser switch 
Java, les fondamentaux alphorm....
Forme générale du switch 
• Il faut une variable, entière jusqu’à Java7, String compris depuis 
• Le cas par défaut est op...
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 
• Ou...
Ce qu’on a couvert 
• Forme générale du switch 
• Quand utiliser switch 
• Quand ne pas utiliser switch 
Java, les fondame...
Créer et utiliser des tableaux 
Déclarer et instancier un 
tableau à 1 dimension 
Fabien Brissonneau 
Consultant, concepte...
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 au...
Tableau de primitives 
• Un tableau de type primitifs contient les valeurs 
• Les valeurs sont mises à 0 (en fonction du t...
Tableau d’objets 
• Le tableau d’objets n’existe pas 
• Le tableau est un tableau de références 
• Les références sont mis...
Ce qu’on a couvert 
• Qu’est-ce qu’un tableau ? 
• Tableau de primitives 
• Tableau d’objets 
Java, les fondamentaux alpho...
Créer et utiliser des tableaux 
Déclarer et instancier un 
tableau à 2 dimensions 
Fabien Brissonneau 
Consultant, concept...
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 i...
Les services de ce tableau 
• L’attribut en lecture seule « length » est disponible pour les 2 
dimensions 
Java, les fond...
Ce qu’on a couvert 
• Qu’est-ce qu’un tableau à deux dimensions? 
• Les services de ce tableau 
Java, les fondamentaux alp...
Créer et utiliser des tableaux 
Utiliser une boucle for dans 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Obj...
Plan 
• Les boucles for, while, do-while, for(each) 
• Le parcours du tableau à une dimension 
• Le parcours du tableau à ...
Les boucles 
• La boucle while(cond) { } 
• La boucle do { … } while(cond) ; 
• La boucle for( int i =0; icond; i++) { } 
...
Parcourir un tableau à une dimension 
• Avec une boucle for basé sur une variable 
 La variable de boucle est indice d’acc...
Parcourir un tableau à deux dimensions 
• Avec une double boucle 
• Les variables de boucles sont les indices d’accès aux ...
Ce qu’on a couvert 
• Les boucles for, while, do-while, for(each) 
• Le parcours du tableau à une dimension 
• Le parcours...
Créer et utiliser des tableaux 
Créer et initialiser une 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets ...
Plan 
• Qu’est-ce que java.util.ArrayList ? 
• Comment initialiser une ArrayList 
• Parcourir une ArrayList 
Java, les fon...
Qu’est-ce qu’une ArrayList ? 
• Un objet de java.util 
• Tableau dynamique, se redimensionne seule 
• Offre des services s...
Comment initialiser une ArrayList 
• En la remplissant au fur et au mesure, avec « add » 
• En lui donnant une taille init...
Parcourir une ArrayList 
• En utilisant un indice jusqu’à « size » 
• En utilisant le for « each » 
Java, les fondamentaux...
Ce qu’on a couvert 
• Qu’est-ce que java.util.ArrayList ? 
• Comment initialiser une ArrayList 
• Parcourir une ArrayList ...
Créer et utiliser des tableaux 
Utiliser l’instruction import 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Ob...
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 uti...
L’instruction import 
• Arbitrage entre utiliser le nom complet de la classe 
• Ou bien faire un « import » de la classe, ...
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...
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 que...
Accéder aux valeur d’une ArrayList 
• Ce tableau peut se redimensionner seul 
• Avec get(int), on obtient la ième valeur 
...
Ce qu’on a couvert 
• Accéder aux valeurs dans un tableau 
• Accéder aux valeurs dans une ArrayList 
Java, les fondamentau...
Créer et utiliser des tableaux 
Utiliser le tableau args 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets ...
Plan 
• Les arguments de la ligne de commande 
• Parcourir le tableau 
• Convertir les éléments de ce tableau 
Java, les f...
Les arguments de la ligne de commande 
• Les arguments fournit après « java app » sur le ligne de commande 
• Séparés par ...
Parcourir le tableau 
• Soit utiliser length, soit for « each » 
• La capacité du tableau est sa taille utile 
• Permet ty...
Convertir les éléments du tableau 
• Pour être exploitable, il faut souvent convertir en … entiers ? 
 Integer.parseInt(st...
Ce qu’on a couvert 
• Les arguments de la ligne de commande 
• Parcourir le tableau 
• Convertir les éléments de ce tablea...
Utiliser des boucles 
Coder une do/while 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciels 
Site ...
Plan 
• Les composants de la boucle do /while 
• Les composants de la boucle while 
• Les erreurs à ne pas faire 
Java, le...
Les composants de la boucle do/while 
• Un bloc de code à exécuter 
• Une condition à respecter 
• Une condition d’arrêt 
...
Les composants de la boucle while 
• Une ou plusieurs instructions dans un bloc 
• Une condition pour arrêter la boucle 
J...
Les erreurs à ne pas faire 
• Pour le « while », ne pas oublier les accolades si besoin 
• Que la condition permette de so...
Ce qu’on a couvert 
• Les composants de la boucle do /while 
• Les composants de la boucle while 
• Les erreurs à ne pas f...
Utiliser des boucles 
Développer une boucle for 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciels...
Plan 
• Les composants d’une boucle « for » 
• Les avantages du for sur le while 
• Les écritures limites du « for » 
Java...
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 variab...
Les écritures limites du for 
• Utiliser un « for » pour une boucle infinie 
• Oublier volontairement une partie du « for ...
Ce qu’on a couvert 
• Les composants d’une boucle « for » 
• Les avantages du for sur le while 
• Les écritures limites du...
Utiliser des boucles 
Utiliser des ArrayList dans 
une boucle for 
Fabien Brissonneau 
Consultant, concepteur et formateur...
Plan 
• Remarques sur le contenu d’une ArrayList 
• Parcourir une ArrayList en utilisant « get » 
• Parcourir une ArrayLis...
Remarques sur le contenu d’une ArrayList 
• ArrayList est une implémentation tableau 
• Depuis Java5, ArrayList peut être ...
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...
Parcourir une ArrayList avec des itérateurs 
• Un itérateur est une sorte de « curseur » sur l’ArrayList 
• Il peut avance...
Ce qu’on a couvert 
• Remarques sur le contenu d’une ArrayList 
• Parcourir une ArrayList en utilisant « get » 
• Parcouri...
Utiliser des boucles 
Comprendre la portée des 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciels ...
Plan 
• Définir la portée d’une variable 
• Les variables locales et les paramètres 
• Les variables champ de donnée 
• Po...
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, p...
Les variables locales et paramètres 
• Une variable locale ne peut pas être utilisée en dehors de la méthode 
dans laquell...
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’o...
Pas de variables globales en Java 
• La portée ultime serait la variable globale 
• Mais ce type de portée pose des problè...
Ce qu’on a couvert 
• Définir la portée d’une variable 
• Les variables locales et les paramètres 
• Les variables champ d...
Utiliser des méthodes 
Créer et appeler des 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciels 
Si...
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 pro...
Appeler une méthode 
• Il faut accéder à un objet de ce type 
• Utiliser l’opérateur « . » pour sélectionner la méthode 
•...
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 Logiciel...
Plan 
• Le passage des arguments à l’appel 
• Le passage de primitives 
• Le passage d’objets 
Java, les fondamentaux alph...
Le passage des arguments à l’appel 
• Lors de l’appel de la méthode, utiliser les parenthèses 
 Les parenthèses seules si ...
Le passage de primitives 
• Les primitives sont toujours recopiées dans la méthode 
• Les paramètres sont donc en IN 
• Il...
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 c...
Ce qu’on a couvert 
• Le passage des arguments à l’appel 
• Le passage de primitives 
• Le passage d’objets 
Java, les fon...
Utiliser des méthodes 
Créer des méthodes et des 
variables statiques 
Fabien Brissonneau 
Consultant, concepteur et forma...
Plan 
• Créer des variables statiques et les utiliser 
• Créer des méthodes statiques et les utiliser 
Java, les fondament...
Créer des variables statiques et les utiliser 
• Définition d’une variable statique 
 Une variable qui est allouée en deho...
Créer des méthodes statiques et les utiliser 
• Syntaxe de la méthode statique : « static » 
• Utilisation de la méthode s...
Ce qu’on a couvert 
• Créer des variables statiques et les utiliser 
• Créer des méthodes statiques et les utiliser 
Java,...
Utiliser des méthodes 
Utiliser des modificateurs 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logicie...
Plan 
• Les modificateurs : public, protected, private 
• Visibilité par défaut, sans modificateur 
• Visibilité « private...
Les modificateurs 
• Un mot-clé que l’on place avant la déclaration du membre 
• Les modificateurs de visibilité 
 Pour ré...
La visibilité par défaut 
• Un membre sans visibilité 
• Toutes les classes du même package peuvent y accéder 
• Intéressa...
La visibilité private 
• Pour protéger les données internes à l’objet 
• Accessible uniquement par le code de la classe el...
La visibilité protected 
• Un accès intermédiaire 
• Toutes les classes du package y accèdent 
• Et aussi toutes les class...
La visibilité public 
• La visibilité la plus large 
• Expose les accès à tout le code 
• Intéressant surtout pour des mét...
Ce qu’on a couvert 
• Les modificateurs : public, protected, private 
• Visibilité par défaut, sans modificateur 
• Visibi...
Utiliser des méthodes 
Utiliser la surcharge des 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciel...
Plan 
• La syntaxe de la surcharge 
• Appeler une méthode surchargée 
• La surcharge et l’héritage 
Java, les fondamentaux...
La syntaxe de la surcharge 
• Plusieurs méthodes peuvent 
 avoir le même nom, 
 avec des paramètres différents 
• La signa...
Appeler une méthode surchargée 
• Choisir les arguments à passer 
 Nombre d’arguments 
 Type des arguments 
• Le compilate...
La surcharge et l’héritage 
• La surcharge est résolue à travers l’héritage 
• Une classe fille peut enrichir l’interface ...
Ce qu’on a couvert 
• La syntaxe de la surcharge 
• Appeler une méthode surchargée 
• La surcharge et l’héritage 
Java, le...
Utiliser l’encapsulation et les 
constructeurs 
Créer des constructeurs 
Fabien Brissonneau 
Consultant, concepteur et for...
Plan 
• L’initialisation des objets 
• Le rôle des constructeurs 
• Les blocs d’initialisation 
Java, les fondamentaux alp...
L’initialisation des objets 
• Les champs de donnée sont mis à « 0 » 
 0 pour les entiers, 0.0 pour les flottants, u0000 p...
Le rôle des constructeurs 
• Par défaut, le compilateur génère un constructeur sans paramètre 
• La réécriture de ce const...
Les blocs d’initialisation 
• On peut simplement écrire un bloc {…} dans lequel on initialise les 
champs 
• Ce bloc peut ...
Ce qu’on a couvert 
• L’initialisation des objets 
• Le rôle des constructeurs 
• Les blocs d’initialisation 
Java, les fo...
Utiliser l’encapsulation et les 
constructeurs 
Implémenter l’encapsulation 
Fabien Brissonneau 
Consultant, concepteur et...
Plan 
• L’encapsulation par la visibilité des membres 
• L’encapsulation par la visibilité des classes 
Java, les fondamen...
L’encapsulation par la visibilité des membres 
• Les membres dans une classe sont par défaut accessible des autres 
classe...
L’encapsulation par la visibilité des classes 
• Une classe par défaut n’est accessible que depuis son package 
• Une clas...
Ce qu’on a couvert 
• L’encapsulation par la visibilité des membres 
• L’encapsulation par la visibilité des classes 
Java...
Concepts avancés 
Utiliser l’héritage 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciels 
Site : h...
Plan 
• La relation de généralisation-spécialisation 
• Les conséquences en termes d’héritage 
• Le mot-clé « extends » 
J...
La relation de généralisation-spécialisation 
• Une relation statique entre classe 
• Qui relie un concept général à un co...
Les conséquences en terme d’héritage 
• Les membres sont tous hérités 
• Les membres publiques de l’ancêtre restent publiq...
Le mot clé extends 
• La relation de généralisation-spécialisation correspond à une extension 
 De type 
 De comportement ...
Ce qu’on a couvert 
• La relation de généralisation-spécialisation 
• Les conséquences en termes d’héritage 
• Le mot-clé ...
Concepts avancés 
Polymorphisme 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciels 
Site : http://...
Plan 
• La redéfinition des méthodes 
• Mettre en oeuvre le polymorphisme 
• Savoir utiliser le polymorphisme 
Java, les f...
La redéfinition des méthodes 
• La relation de généralisation-spécialisation suppose l’héritage des 
membres de la classe ...
Mettre en oeuvre le polymorphisme 
• Il suffit de : 
 Disposer d’un héritage 
 Redéfinir une méthode 
 Pointer sur un obje...
Savoir utiliser le polymorphisme 
• Utiliser le polymorphisme lorsqu’on identifie une comportement qui 
dépend du type de ...
Ce qu’on a couvert 
• La redéfinition des méthodes 
• Mettre en oeuvre le polymorphisme 
• Savoir utiliser le polymorphism...
Concepts avancés 
Utiliser des super-classes et 
des sous-classes 
Fabien Brissonneau 
Consultant, concepteur et formateur...
Plan 
• Des super-classes pour factoriser les membres 
• Substituer des sous-classes aux super-classes 
• Spécialiser les ...
Des super-classes pour factoriser 
• Lorsque des classes contiennent des membres communs 
• Faire apparaître une super-cla...
Substituer des sous-classes 
• Une sous-classe doit être conforme à l’interface de la super-classe 
• Elle contient 100% d...
Spécialiser le comportement 
• Une sous-classe peut proposer des attributs et des méthodes en plus 
• Elle peut redéfinir ...
Ce qu’on a couvert 
• Des super-classes pour factoriser les membres 
• Substituer des sous-classes aux super-classes 
• Sp...
Concepts avancés 
Ajouter un niveau 
d’abstraction 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logici...
Plan 
• Les abstractions en Java : classes et interfaces 
• Intérêts d’utiliser des abstractions 
• Les abstractions dans ...
Les abstractions en Java 
• Une classe abstraite 
 Est une classe qui ne peut pas être instanciée 
 Peut contenir des méth...
Intérêts des abstractions 
• Une abstraction est stable 
• Le code qui utilise une abstraction ne bouge pas 
• Une abstrac...
Les abstractions dans le framework 
• Exemple d’une classe abstraite : AbstractList 
 On hérite d’une classe abstraite pou...
Analyse et conception 
• Une abstraction en analyse 
 Une classe abstraite pour factoriser des données et des traitements ...
Ce qu’on a couvert 
• Les abstractions en Java : classes et interfaces 
• Intérêts d’utiliser des abstractions 
• Les abst...
Concepts avancés 
Les interfaces en Java 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Logiciels 
Site ...
Plan 
• Définition et syntaxe des interfaces 
• Définir une interface 
• Implémenter une interface 
• Cas d’usage connus 
...
Définition et syntaxe d’une interface 
• Une interface est un type sans implémentation 
 Dans son propre fichier 
• Imposs...
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 s...
Implémenter une interface 
• S’engager à fournir une implémentation pour chaque méthode prévue 
par l’interface 
• Le comp...
Cas d’usage connus 
• Interconnexions entre modules 
• Définition des services d’objets distribués 
 Sous-interface de Rem...
Ce qu’on a couvert 
• Définition et syntaxe des interfaces 
• Définir une interface 
• Implémenter une interface 
• Cas d’...
La gestion des erreurs 
Les différents types d’erreur 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Objets Log...
Plan 
• Les erreurs de syntaxe 
• Les erreurs de logique, de programmation 
• Les erreurs exceptionnelles dues à l’environ...
Les erreurs de syntaxe 
• Empêchent la compilation 
• Seront corrigées pour livrer 
• Attention, en Java la compilation de...
Les erreurs de logique, de programmation 
• « Une bonne lecture élimine 80% des erreurs » 
• N’ont pas à être gérées 
• Do...
Les erreurs exceptionnelles 
• Dues à l’environnement d’exécution, difficiles à prévoir 
• Sont souvent « gérées » : le co...
Ce qu’on a couvert 
• Les erreurs de syntaxe 
• Les erreurs de logique, de programmation 
• Les erreurs exceptionnelles du...
La gestion des erreurs 
Présentation des types 
d’exceptions 
Fabien Brissonneau 
Consultant, concepteur et formateur 
Obj...
Plan 
• Nature de l’exception 
• Les exceptions runtime 
• Les exceptions gérées 
• Les exceptions de l’utilisateur 
Java,...
Nature de l’exception 
• Une exception est un objet 
• D’une classe qui hérite de java.lang.Exception 
• Cet objet est cré...
Les exceptions runtime 
• Exceptions qui correspondent à des erreurs de programmation 
• Ne sont pas gérées : non signalée...
Les exceptions gérées 
• Ces exceptions correspondent à des erreurs dues à l’environnement 
 Ressources non disponibles, m...
Les exceptions de l’utilisateur 
• Créer une classe qui hérite de java.lang.Exception 
 Attributs, méthodes, constructeurs...
Ce qu’on a couvert 
• Nature de l’exception 
• Les exceptions runtime 
• Les exceptions gérées 
• Les exceptions de l’util...
La gestion des erreurs 
Utiliser Javadocs pour 
rechercher des exceptions 
Fabien Brissonneau 
Consultant, concepteur et f...
Plan 
• Le rôle du compilateur pour les exceptions gérées 
• La spécification des exceptions par les méthodes 
Java, les f...
Le rôle du compilateur 
• Le compilateur lit la spécification des exceptions 
• Il engage le développeur à gérer les excep...
La spécification des exceptions 
• La documentation référence les exceptions levées par les méthodes 
 Trouver la classe q...
Ce qu’on a couvert 
• Le rôle du compilateur pour les exceptions gérées 
• La spécification des exceptions par les méthode...
La gestion des erreurs 
Ecrire du code pour gérer 
les exceptions 
Fabien Brissonneau 
Consultant, concepteur et formateur...
Plan 
• Gérer une exception détectée par le compilateur 
• Lever une exception 
• Créer son propre type d’exception 
• Réi...
Gérer une exception 
• Le mot-clé « try » permet d’isoler le code nominal 
• Correspond à une méthode 
• Suivi de un ou pl...
Lever une exception 
• Utiliser le mot-clé « throw » pour lever une exception 
• Cette exception est simplement un objet c...
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
Prochain SlideShare
Chargement dans…5
×

Alphorm.com Formation Java, les fondamentaux

16 859 vues

Publié le

La formation complète est disponible ici:
http://www.alphorm.com/tutoriel/formation-en-ligne-java-1z0-803

Le langage Java est certainement le plus répandu et le plus utilisé dans les entreprises aujourd’hui. Langage généraliste, il est adapté à de nombreuses situations de développement, du poste client au serveur. Sa bibliothèque de base est immense et de nombreux tiers proposent des compléments.
Cette formation vous permet d’assimiler les concepts du langage et d’acquérir rapidement la maîtrise de la programmation Java.
Aussi elle vous prépare à l’examen 1Z0-803 afin de gagner votre certification OCA (Oracle CertifiedAssociate).
Grâce à l’expertise technique et pédagogique de votre expert objet, Fabien Brissonneau, vous allez aborder en douceur la programmation Java. Ce premier module est volontairement assez simple, pour découvir les concepts, que vous approfondirez dans la formation Java avancée OCP.

Publié dans : Technologie
0 commentaire
5 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
16 859
Sur SlideShare
0
Issues des intégrations
0
Intégrations
11 086
Actions
Partages
0
Téléchargements
574
Commentaires
0
J’aime
5
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Alphorm.com Formation Java, les fondamentaux

  1. 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. 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. 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. 4. Mes formations sur alphorm Java, les fondamentaux alphorm.com™©
  5. 5. Les autres formations dév sur Alphorm Java, les fondamentaux alphorm.com™©
  6. 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. 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. 8. Certification OCA suite à l’examen 1Z0-803 Java, les fondamentaux alphorm.com™©
  9. 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. 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. 11. Scoop • Formation à apparaitre prochainement sur alphorm Java, les fondamentaux alphorm.com™©
  12. 12. Allons-y !… • Nous pouvons démarrer !! Java, les fondamentaux alphorm.com™©
  13. 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. 14. Plan • Historique • Caractéristiques essentielles du langage • Comparer Java à C++ • Comparer Java à C# • Comparer Java à Python Java, les fondamentaux alphorm.com™©
  15. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 26. Configuration des outils • Netbeans • Eclipse • Ligne de commande PATH CLASSPATH JAVA_HOME / JRE_HOME Java, les fondamentaux alphorm.com™©
  27. 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. 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. 29. Plan • Java SE • Java EE • Embedded Java Java, les fondamentaux alphorm.com™©
  30. 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. 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. 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. 33. Ce qu’on a couvert • Java SE • Java EE • Embedded Java Java, les fondamentaux alphorm.com™©
  34. 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. 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. 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. 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. 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. 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. 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. 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. 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. 43. Plan • L’IDE Netbeans • Créer un projet • Produire à partir du projet • L’IDE Eclipse Java, les fondamentaux alphorm.com™©
  44. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 72. Plan • Les composants possibles • Créer des attributs • Créer des constructeurs • Créer des méthodes Java, les fondamentaux alphorm.com™©
  73. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 86. Plan • Création d’un programme de test • Lancement d’un programme de test JUnit Java, les fondamentaux alphorm.com™©
  87. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 97. Plan • Les types entiers • Les types flottants • Le type caractère • Le type booléen Java, les fondamentaux alphorm.com™©
  98. 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. 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. 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. 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. 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. 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. 104. Plan • Les variables en Java • Comportement des variables locales • L’affectation d’une valeur à une variable locale Java, les fondamentaux alphorm.com™©
  105. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 116. Plan • Les opérateurs arithmétiques en Java • Le comportement des types Java, les fondamentaux alphorm.com™©
  117. 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. 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. 119. Ce qu’on a couvert • Les opérateurs arithmétiques en Java • Le comportement des types Java, les fondamentaux alphorm.com™©
  120. 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. 121. Plan • Référence vs objet • Référence locale, paramètre • Référence en attribut Java, les fondamentaux alphorm.com™©
  122. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 138. Plan • Qu’est-ce que javadoc ? • Visiter la documentation de jse • Appliquer la documentation dans son code Java, les fondamentaux alphorm.com™©
  139. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 150. Plan • Les opérateurs relationnels • Les opérateurs conditionnels Java, les fondamentaux alphorm.com™©
  151. 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. 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. 153. Ce qu’on a couvert • Les opérateurs relationnels • Les opérateurs conditionnels Java, les fondamentaux alphorm.com™©
  154. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 168. Plan • L’instruction « if » • Le couple « if / else » • L’intense « if / else / if /else / … » Java, les fondamentaux alphorm.com™©
  169. 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. 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. 171. L’intense … • Enchaîner des « if / else if / … » est rarement une bonne idée Java, les fondamentaux alphorm.com™©
  172. 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. 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. 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. 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. 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. 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. 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. 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. 180. Plan • Forme générale du switch • Quand utiliser switch • Quand ne pas utiliser switch Java, les fondamentaux alphorm.com™©
  181. 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. 182. Quand utiliser le switch • Reste simple et inévitable Java, les fondamentaux alphorm.com™©
  183. 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. 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. 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. 186. Plan • Qu’est-ce qu’un tableau ? • Tableau de primitives • Tableau d’objets Java, les fondamentaux alphorm.com™©
  187. 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. 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. 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. 190. Ce qu’on a couvert • Qu’est-ce qu’un tableau ? • Tableau de primitives • Tableau d’objets Java, les fondamentaux alphorm.com™©
  191. 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. 192. Plan • Qu’est-ce qu’un tableau à deux dimensions? • Les services de ce tableau Java, les fondamentaux alphorm.com™©
  193. 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. 194. Les services de ce tableau • L’attribut en lecture seule « length » est disponible pour les 2 dimensions Java, les fondamentaux alphorm.com™©
  195. 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. 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. 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. 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. 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. 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. 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. 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. 203. Plan • Qu’est-ce que java.util.ArrayList ? • Comment initialiser une ArrayList • Parcourir une ArrayList Java, les fondamentaux alphorm.com™©
  204. 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. 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. 206. Parcourir une ArrayList • En utilisant un indice jusqu’à « size » • En utilisant le for « each » Java, les fondamentaux alphorm.com™©
  207. 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. 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. 209. Plan • Le package java.util • Utiliser import Java, les fondamentaux alphorm.com™©
  210. 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. 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. 212. Ce qu’on a couvert • Le package java.util • Utiliser import Java, les fondamentaux alphorm.com™©
  213. 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. 214. Plan • Accéder aux valeurs dans un tableau • Accéder aux valeurs dans une ArrayList Java, les fondamentaux alphorm.com™©
  215. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 232. Les composants d’une boucle for • Initialisation • Tant que • Incrément Java, les fondamentaux alphorm.com™©
  233. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 250. Plan • Créer une méthode dans une classe • Appeler une méthode Java, les fondamentaux alphorm.com™©
  251. 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. 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. 253. Ce qu’on a couvert • Créer une méthode dans une classe • Appeler une méthode Java, les fondamentaux alphorm.com™©
  254. 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. 255. Plan • Le passage des arguments à l’appel • Le passage de primitives • Le passage d’objets Java, les fondamentaux alphorm.com™©
  256. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 280. Plan • L’initialisation des objets • Le rôle des constructeurs • Les blocs d’initialisation Java, les fondamentaux alphorm.com™©
  281. 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. 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. 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. 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. 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. 286. Plan • L’encapsulation par la visibilité des membres • L’encapsulation par la visibilité des classes Java, les fondamentaux alphorm.com™©
  287. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 297. Plan • La redéfinition des méthodes • Mettre en oeuvre le polymorphisme • Savoir utiliser le polymorphisme Java, les fondamentaux alphorm.com™©
  298. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 323. Plan • Les erreurs de syntaxe • Les erreurs de logique, de programmation • Les erreurs exceptionnelles dues à l’environnement Java, les fondamentaux alphorm.com™©
  324. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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™©

×