368
Présentation de la formation Java les fondamentaux Java, les fondamentaux alphorm.com™© 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 (examen 1Z0-803)

Alphorm.com Formation Java, les fondamentaux

Embed Size (px)

Citation preview

Page 1: Alphorm.com Formation Java, les fondamentaux

Présentation de la formation

Java les fondamentaux

Java, les fondamentaux alphorm.com™©

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Java les fondamentaux (examen 1Z0-803)

Page 2: Alphorm.com Formation Java, les fondamentaux

Plan• Présentation du formateur

• Les autres formations sur Alphorm

• Qu’est-ce que Java ?

• Le plan de la formation

• Présentation des outils

Java, les fondamentaux alphorm.com™©

• Présentation des outils

• Les publics concernés

Page 3: Alphorm.com Formation Java, les fondamentaux

Présentation du formateur• Fabien Brissonneau

• Email : [email protected]

• Consultant Concepteur et Formateur

• Missions d’architecture, de conception , de réalisation logicielles

• Fondateur de eiXa6

• Actuellement en mission sur un projet de gestion

Java, les fondamentaux alphorm.com™©

• Actuellement en mission sur un projet de gestion

• Mes références :

� Mon profil Viadeo : http://fr.viadeo.com/fr/profile/fabien.brissonneau

� Mon profil LinkedIn : http://fr.linkedin.com/pub/fabien-brissonneau/65/902/92a/

Page 4: Alphorm.com Formation Java, les fondamentaux

Mes formations sur alphorm

Java, les fondamentaux alphorm.com™©

Page 5: Alphorm.com Formation Java, les fondamentaux

Les autres formations dév sur Alphorm

Java, les fondamentaux alphorm.com™©

Page 6: Alphorm.com Formation Java, les fondamentaux

Qu’est-ce que Java ?• Langage de programmation généraliste

• Créé en 1995 par Sun, héritant du C++

• Géré en communauté

• Langage de programmation objet

Java, les fondamentaux alphorm.com™©

• Avec un très grande bibliothèque de classes

Page 7: Alphorm.com Formation Java, les fondamentaux

Le plan de la formation• Présentation de la technologie Java

• Penser en termes objet

• Présentation du langage Java

• Utiliser des variables primitives

• Utiliser des objets

• Utiliser des méthodes et la surcharge

• Utiliser l’encapsulation et les constructeurs

• Concepts avancés de l’objet

• Gestion des erreurs

Java, les fondamentaux alphorm.com™©

• Utiliser des objets

• Utiliser des opérateurs et des décisions

• Créer et utiliser des tableaux

• Utiliser des structures en boucles

• Gestion des erreurs

• Vue d’ensemble

Page 8: Alphorm.com Formation Java, les fondamentaux

Certification OCA suite à l’examen 1Z0-803

Java, les fondamentaux alphorm.com™©

Page 9: Alphorm.com Formation Java, les fondamentaux

Présentation des outils• Le site de Oracle sera utilisé pour télécharger

� Les outils en ligne de commande

� La bibliothèque de base

� Un IDE, Netbeans

• Nous utiliserons aussi Eclipse

Java, les fondamentaux alphorm.com™©

• Nous utiliserons aussi Eclipse

• La présentation sera faite sous Windows 7

Page 10: Alphorm.com Formation Java, les fondamentaux

Les publics concernés• Cette formation est la première de 2 formations certifiantes

• Java SE7

• La formation suivante est Java avancé !

Java, les fondamentaux alphorm.com™©

Page 11: Alphorm.com Formation Java, les fondamentaux

Scoop • Formation à apparaitre prochainement sur alphorm

Java, les fondamentaux alphorm.com™©

Page 12: Alphorm.com Formation Java, les fondamentaux

Allons-y !…• Nous pouvons démarrer !!

Java, les fondamentaux alphorm.com™©

Page 13: Alphorm.com Formation Java, les fondamentaux

Présentation

Associer Java à d’autres

Java, les fondamentaux alphorm.com™©

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Associer Java à d’autres langages

Page 14: Alphorm.com Formation Java, les fondamentaux

Plan• Historique

• Caractéristiques essentielles du langage

• Comparer Java à C++

• Comparer Java à C#

• Comparer Java à Python

Java, les fondamentaux alphorm.com™©

• Comparer Java à Python

Page 15: Alphorm.com Formation Java, les fondamentaux

Historique• Démarre en 1991, chez SUN, projet dirigé par James Gosling

• Projet Oak, partant du C++ en éliminant les points dangereux

• Version alpha de Java en 1995

• Version 1.0 en 1996

Java, les fondamentaux alphorm.com™©

Page 16: Alphorm.com Formation Java, les fondamentaux

Caractéristiques essentielles• Langage à la syntaxe simple

• Langage généraliste

• Langage indépendant de la plateforme

• Langage orienté objet

Java, les fondamentaux alphorm.com™©

• Langage prévu pour le support du réseau

Page 17: Alphorm.com Formation Java, les fondamentaux

Comparer Java à C++• Objectifs : C++ est proche du système, Java a une grande couche d’abstraction

• Syntaxe : C++ a une syntaxe complexe et pleine de surprises, Java a une syntaxe simple

• Bibliothèque standard : la bibliothèque du C++ est le plus petit commun à toute application, Java a une bibliothèque très large

• Exécution : C++ est natif, Java tourne sur une machine virtuelle

• Paradigme de programmation : C++ favorise un mélange des façons de programmer, Java

Java, les fondamentaux alphorm.com™©

• Paradigme de programmation : C++ favorise un mélange des façons de programmer, Java est fortement orienté objet

• Mémoire : en C++, la gestion de la mémoire est manuelle, Java utilise un ramasse-miette

• Origine et évolution : C++ est un standard ISO, Java a été créé par Sun, maintenant Oracle

Page 18: Alphorm.com Formation Java, les fondamentaux

Comparer Java à C#• Objectifs : C# est lié au monde Microsoft et Java n’est pas lié à un constructeur

• Syntaxe : C# et Java ont une syntaxe simple. C# ajoute quelques éléments, qui rapellent le C++

• Bibliothèque standard : les bibliothèques Java et DotNet sont très larges

• Exécution : C# et Java tournent sur une machine virtuelle, avec compilation JIT

Java, les fondamentaux alphorm.com™©

• Paradigme de programmation : C# et Java sont fortement orientés objet

• Mémoire : C# et Java utilisent un ramasse-miette

• Origine et évolution : C# est un langage d’origine Microsoft

Page 19: Alphorm.com Formation Java, les fondamentaux

Comparer Java à Python• Objectifs : Python est plus un langage de « glue », là où Java servirait à créer les

composants liés

• Syntaxe : Python utilise les indentations, limite la verbosité. Java comme Python ont peu de types de base

• Bibliothèque standard : les bibliothèques Java et Python sont très larges

• Exécution : Python est interprété, son bytecode est invisible. La phase de

Java, les fondamentaux alphorm.com™©

• Exécution : Python est interprété, son bytecode est invisible. La phase de compilation du source Java en bytecode est clairement identifiée

• Paradigme de programmation : Python et Java sont orientés objet, mais Python s’utilise souvent comme un langage de script

• Mémoire : Python et Java utilisent un ramasse-miette

• Origine et évolution : Python est d’origine associative, PSF

Page 20: Alphorm.com Formation Java, les fondamentaux

Ce qu’on a couvert• Nous avons rappelé les caractéristiques essentielles de Java

• Nous avons comparé Java à d’autres de langages comparables

• Par rapport à ces langages, Java apparaît comme :

� Un langage à la syntaxe simple

Java, les fondamentaux alphorm.com™©

� Un langage qui permet une bonne productivité

� Un langage fortement typé, qui guide le développeur

� Fortement orienté objet

� Avec une grande bibliothèque standard

� Ouvert sur le monde

Page 21: Alphorm.com Formation Java, les fondamentaux

Présentation

Téléchargement et

Java, les fondamentaux alphorm.com™©

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Téléchargement et installation de Java

Page 22: Alphorm.com Formation Java, les fondamentaux

Plan• Où trouver Java ?

• Les téléchargements disponibles

• Installation des outils Java

• Configuration de l’environnement de travail Java

Java, les fondamentaux alphorm.com™©

Page 23: Alphorm.com Formation Java, les fondamentaux

Où trouver Java ?• Le nécessaire pour exécuter : www.java.com

• Le kit de développement : Java Development Kit (JDK)

• Le runtime en 2 versions :

� Le Java Rutime Environment (JRE)

Java, les fondamentaux alphorm.com™©

� Le JRE pour serveur

• Sur le site : www.oracle.com/technetwork/java

• Oracle participe au Java Community Process, les nouveautés Java sont émises sous la forme de Java Specification Request : www.jcp.org

• Oracle participe aussi à OpenJDK

Page 24: Alphorm.com Formation Java, les fondamentaux

Les téléchargements disponibles• Les éditions Java : Java SE, Java EE, Java ME

• Standard Edition : JRE complet + outils pour développer (compilateur, débuggeur, moniteur)

• Enterprise Edition : concerne les applications serveur (multi-tier, sécurisées,…)

Java, les fondamentaux alphorm.com™©

� Glassfish

� API supplémentaire, documentation et exemples

• EE Web Profile : sous-ensemble ne concernant que les applis Web

• Micro Edition : pour des applications embarquées, mémoire limitées, accès permanent au réseau, etc

Page 25: Alphorm.com Formation Java, les fondamentaux

Installation des outils• JDK SE : téléchargement, installation sous différentes plateformes

• Téléchargement et installation avec ou sans NetBeans (netbeans.org)

• Le JRE sera installé dans : <program files>/Java/jre8

• Il faut avoir les droits d’administration

Java, les fondamentaux alphorm.com™©

• NetBeans 8 utilise n’importe quel jdk 7 ou 8, il le référence par jdkhome

Page 26: Alphorm.com Formation Java, les fondamentaux

Configuration des outils• Netbeans

• Eclipse

• Ligne de commande

� PATH

Java, les fondamentaux alphorm.com™©

� CLASSPATH

� JAVA_HOME / JRE_HOME

Page 27: Alphorm.com Formation Java, les fondamentaux

Ce qu’on a couvert• Où trouver Java ?

• Les téléchargements disponibles

• Installation des outils Java

• Configuration de l’environnement de travail Java

Java, les fondamentaux alphorm.com™©

Page 28: Alphorm.com Formation Java, les fondamentaux

Présentation

Les technologies Java

Java, les fondamentaux alphorm.com™©

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Les technologies Java

Page 29: Alphorm.com Formation Java, les fondamentaux

Plan• Java SE

• Java EE

• Embedded Java

Java, les fondamentaux alphorm.com™©

Page 30: Alphorm.com Formation Java, les fondamentaux

Java SE• Version standard de la livraison Java

• Le Java Development Kit (JDK) incluant le SDK JavaFX

• Le Java Runtime Environment (JRE) permettant d’exécuter les applications

• Le runtime JavaFX

Java, les fondamentaux alphorm.com™©

• Le runtime JavaFX

• La machine virtuelle Oracle JRockit

Page 31: Alphorm.com Formation Java, les fondamentaux

Java EE• Version entreprise de Java

• Il existe 2 profils : EE SDK et EE Web Profile SDK

• Les deux versions sont livrées avec Glassfish

• Exemples de code, documentation et tutoriel

Java, les fondamentaux alphorm.com™©

• Une plateforme pour déployer des applications d’entreprise (robustesse, Web services, déploiement facilité)

Page 32: Alphorm.com Formation Java, les fondamentaux

Embedded Java• Java pour environnements pauvres en ressources

• 2 options proposées : Java ME Embedded et Java ME Embedded Client

Java, les fondamentaux alphorm.com™©

Page 33: Alphorm.com Formation Java, les fondamentaux

Ce qu’on a couvert• Java SE

• Java EE

• Embedded Java

Java, les fondamentaux alphorm.com™©

Page 34: Alphorm.com Formation Java, les fondamentaux

Présentation

Caractéristiques principales

Java, les fondamentaux alphorm.com™©

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Caractéristiques principales et les avantages de la

technologie Java

Page 35: Alphorm.com Formation Java, les fondamentaux

Plan• Syntaxe du langage Java

• Les bibliothèques Java

• La machine virtuelle

• La gestion de la ressource mémoire

• L’ouverture des technologies

Java, les fondamentaux alphorm.com™©

• L’ouverture des technologies

Page 36: Alphorm.com Formation Java, les fondamentaux

La syntaxe du langage Java• Une syntaxe rappelant celle du C++

• Simple et productive

• Pas de pièges, objectif de lisibilité maximale

Java, les fondamentaux alphorm.com™©

Page 37: Alphorm.com Formation Java, les fondamentaux

Les bibliothèques Java• Les bibliothèques standard sont très larges

• Couvrent tous les aspects d’une aplication

• Evitent le besoin de réinventer l’existant

• De nombreuses bibliothèques de tiers

Java, les fondamentaux alphorm.com™©

Page 38: Alphorm.com Formation Java, les fondamentaux

La machine virtuelle• A l’origine, une machine logicielle qui interprète du bytecode

• Le code Java est compilé explicitement en bytecode

• Les machines virtuelles compilent Just In Time

• Un bytecode et une machine très optimisés

Java, les fondamentaux alphorm.com™©

Page 39: Alphorm.com Formation Java, les fondamentaux

La gestion de le ressource mémoire• La mémoire n’est pas gérée explicitement par le développeur

• Un thread de la JVM se charge de la gestion

• Les zones mémoire plus utilisées sont récupérées

• La responsabilité du développeur est de rendre la main

Java, les fondamentaux alphorm.com™©

Page 40: Alphorm.com Formation Java, les fondamentaux

L’ouverture des technologies• Le processus d’évolution du langage est ouvert

• Les spécifications sont ouvertes (JVM)

• De nombreux intervenants proposent des composants

• Certains on tendance à tirer à eux les standards

Java, les fondamentaux alphorm.com™©

Page 41: Alphorm.com Formation Java, les fondamentaux

Ce qu’on a couvert• Syntaxe du langage Java

• Les bibliothèques Java

• La machine virtuelle

• La gestion de la ressource mémoire

• L’ouverture des technologies

Java, les fondamentaux alphorm.com™©

• L’ouverture des technologies

Page 42: Alphorm.com Formation Java, les fondamentaux

Présentation

Utiliser un environnement

Java, les fondamentaux alphorm.com™©

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Utiliser un environnement de développement intégré

Page 43: Alphorm.com Formation Java, les fondamentaux

Plan• L’IDE Netbeans

• Créer un projet

• Produire à partir du projet

• L’IDE Eclipse

Java, les fondamentaux alphorm.com™©

Page 44: Alphorm.com Formation Java, les fondamentaux

Netbeans• Environnement d’origine Oracle/Sun

• Fournit en bundle avec Java JDK

• Plateforme sur laquelle on installe des plugs-in

• Supporte plusieurs langages et plusieurs utilisations

Java, les fondamentaux alphorm.com™©

Page 45: Alphorm.com Formation Java, les fondamentaux

Créer un projet• La notion de projet n’est pas Java

• Il faut créer un projet Netbeans

• Le source Java est créé/compilé à partir de ce projet

• Le projet peut aussi référencer des éléments extérieurs

Java, les fondamentaux alphorm.com™©

• Le projet est « typé », les répertoires sont différemment organisés

Page 46: Alphorm.com Formation Java, les fondamentaux

Produire à partir du projet• Production de .class, issus de la compilation

• Génération de fichiers zippés comme les « jar »

• Génération de la documentation technique

Java, les fondamentaux alphorm.com™©

Page 47: Alphorm.com Formation Java, les fondamentaux

L’IDE Eclipse• Eclipse est une plateforme d’origine IBM

• Largement utilisée

• Indépendante de Java

• Plateforme sur laquelle on installe des plugs in

Java, les fondamentaux alphorm.com™©

• Multilangages, multi-utilisations

Page 48: Alphorm.com Formation Java, les fondamentaux

Ce qu’on a couvert• L’IDE Netbeans

• Créer un projet

• Produire à partir du projet

• L’IDE Eclipse

Java, les fondamentaux alphorm.com™©

Page 49: Alphorm.com Formation Java, les fondamentaux

Penser en termes d’objets

Définir le domaine du

Java, les fondamentaux alphorm.com™©

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Définir le domaine du problème

Page 50: Alphorm.com Formation Java, les fondamentaux

Plan• Domaine/métier/analyse/conception/code

• Rôle du modèle du domaine

• Rôle du modèle de conception

• Traduction en Java

Java, les fondamentaux alphorm.com™©

Page 51: Alphorm.com Formation Java, les fondamentaux

Domaine -> conception -> code• Le modèle du domaine est la première vue orientée objets

• La trace entre métier et code est assurée

• Le code est une autre vue du métier

• Le code n’est là que pour répondre à un besoin métier

Java, les fondamentaux alphorm.com™©

Page 52: Alphorm.com Formation Java, les fondamentaux

Rôle du modèle du domaine• Le modèle du domaine est une vue orientée objet

� On peut le traduire en code (à travers des étapes nombreuses)

� Il est compris par le métier

� Il est stable (contrairement au code)

• Le modèle du domaine est quasiment hors informatique

Java, les fondamentaux alphorm.com™©

• Le modèle du domaine est quasiment hors informatique

Page 53: Alphorm.com Formation Java, les fondamentaux

Le modèle de conception• A partir du modèle du domaine

• Prenant en compte l’architecture technique

• Le modèle de conception est efficace, performant, et fidèle

• Il sera traduit en code

Java, les fondamentaux alphorm.com™©

Page 54: Alphorm.com Formation Java, les fondamentaux

Traduction en Java• Le type d’objet est une classe -> Java

• Les attributs sont les données

• Les méthodes sont les fonctions membres

• Les associations sont des attributs références

Java, les fondamentaux alphorm.com™©

• Le code n’invente quasi rien

• Le corps des méthodes n’est pas spécifié par un modèle de classes

Page 55: Alphorm.com Formation Java, les fondamentaux

Ce qu’on a couvert• Domaine/métier/analyse/conception/code

• Rôle du modèle du domaine

• Rôle du modèle de conception

• Traduction en Java

Java, les fondamentaux alphorm.com™©

Page 56: Alphorm.com Formation Java, les fondamentaux

Penser en termes d’objets

Identifier les objets

Java, les fondamentaux alphorm.com™©

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Identifier les objets

Page 57: Alphorm.com Formation Java, les fondamentaux

Plan• Définition d’un objet

• Pourquoi parler de classes

• Définir un bon objet métier

• Les classes applicatives

• Vocabulaire

Java, les fondamentaux alphorm.com™©

• Vocabulaire

Page 58: Alphorm.com Formation Java, les fondamentaux

Définition d’un objet• Une entité vivante, qui réagit aux messages reçus

• Un objet contient les données et les traitements qui permettent d’agir dessus

• Un objet a des frontières bien définies, des états et des comportements

Java, les fondamentaux alphorm.com™©

Page 59: Alphorm.com Formation Java, les fondamentaux

Pourquoi parler des classes• Une classe est un type d’objet

• Parler des types au lieu des exemples occurrents permet simplifier la description du problème

• Une classe est aussi le descripteur d’objets

• Il y a plusieurs sortes de classes (métier, applicatives…)

Java, les fondamentaux alphorm.com™©

• Il y a plusieurs sortes de classes (métier, applicatives…)

• Une classe est lisible dans les services qu’elle rend

Page 60: Alphorm.com Formation Java, les fondamentaux

Définir un bon objet métier• Souvent repéré comme un groupe nominal dans un énoncé

• Un bon objet métier est manipulé par le métier

• Il contient des données importantes

• Il est cohérent dans un traitement

Java, les fondamentaux alphorm.com™©

Page 61: Alphorm.com Formation Java, les fondamentaux

Les classes applicatives• Une classe applicative correspond aux couches techniques

• Elle apparaît dans le modèle de conception

• N’est pas le reflet des objets métier

• Peuvent ne contenir que des traitements

Java, les fondamentaux alphorm.com™©

Page 62: Alphorm.com Formation Java, les fondamentaux

Vocabulaire• Les classes contiennent toutes les données et traitements

• Rien ne peut être en dehors des classes

• Les objets masquent leur implémentation : c’est l’encapsulation

• Les classes définissent :

Java, les fondamentaux alphorm.com™©

� des attributs (données)

� des méthodes (traitements)

Page 63: Alphorm.com Formation Java, les fondamentaux

Ce qu’on a couvert• Définition d’un objet

• Pourquoi parler de classes

• Définir un bon objet métier

• Les classes applicatives

• Vocabulaire

Java, les fondamentaux alphorm.com™©

• Vocabulaire

Page 64: Alphorm.com Formation Java, les fondamentaux

Présentation du langage Java

Définir les classes

Java, les fondamentaux alphorm.com™©

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Définir les classes

Page 65: Alphorm.com Formation Java, les fondamentaux

Plan• Une classe définit les attributs et les méthodes

• Les visibilités autorisent ou interdisent les accès aux membres

• Les constructeurs sont remarquables

• La définition de la classe peut supporter des modificateurs

Java, les fondamentaux alphorm.com™©

Page 66: Alphorm.com Formation Java, les fondamentaux

Une classe définit attributs et méthodes• Les attributs sont typés, ce sont les données

• Les méthodes sont décrits par un nom, un type de retour et des paramètres, eux-mêmes typés

• Il n’y a pas d’ordre dans les déclarations

• Le corps des méthodes peut utiliser les attributs, les paramètres et les

Java, les fondamentaux alphorm.com™©

• Le corps des méthodes peut utiliser les attributs, les paramètres et les variables locales éventuelles

• Par convention, une classe commencent par une majuscule, un attribut et une méthode par une minuscule

Page 67: Alphorm.com Formation Java, les fondamentaux

Les visibilités • Pour implémenter l’encapsulation

• Visibilités : par défaut, private, protected, public

• Limitent l’accès aux membres par d’autres morceaux de code

Java, les fondamentaux alphorm.com™©

Page 68: Alphorm.com Formation Java, les fondamentaux

Les constructeurs• Les constructeurs sont des méthodes

� Qui portent le nom de la classe

� N’ont pas de type de retour

� Initialisent les attributs

• L’appel d’un constructeur est implicite

Java, les fondamentaux alphorm.com™©

• L’appel d’un constructeur est implicite

Page 69: Alphorm.com Formation Java, les fondamentaux

La définition de classe a des modificateurs• Classe publique ou non

• Classe extension d’une autre

• Classe implémentation d’une interface

Java, les fondamentaux alphorm.com™©

Page 70: Alphorm.com Formation Java, les fondamentaux

Ce qu’on a couvert• Une classe définit les attributs et les méthodes

• Les visibilités autorisent ou interdisent les accès aux membres

• Les constructeurs sont remarquables

• La définition de la classe peut supporter des modificateurs

Java, les fondamentaux alphorm.com™©

Page 71: Alphorm.com Formation Java, les fondamentaux

Présentation du langage Java

Identifier les composants

Java, les fondamentaux alphorm.com™©

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Identifier les composants d’une classe

Page 72: Alphorm.com Formation Java, les fondamentaux

Plan• Les composants possibles

• Créer des attributs

• Créer des constructeurs

• Créer des méthodes

Java, les fondamentaux alphorm.com™©

Page 73: Alphorm.com Formation Java, les fondamentaux

Les composants d’une classe• Une classe définit des attributs, ou champs de données

• Une classe définit des constructeurs, qui initialisent ces champs

• Une classe définit des méthodes, ou fonctions membres

• Les membres sont affectés d’une visibilité

Java, les fondamentaux alphorm.com™©

• L’ordre de leurs déclarations n’est pas significatif

Page 74: Alphorm.com Formation Java, les fondamentaux

Créer des attributs• Un champ de donnée est typé

• Son nom suit la convention : commence par une minuscule et ensuite capitalisation

• En général, la visibilité est privée

• Le type de ce champ de donnée est :

Java, les fondamentaux alphorm.com™©

• Le type de ce champ de donnée est :

� Un type fondamental (int, …)

� Une chaîne de caractères (String)

� Une référence vers un autre type, standard ou utilisateur

Page 75: Alphorm.com Formation Java, les fondamentaux

Créer des constructeurs• Un constructeur est une fonction membre spéciale

• Le nom d’un constructeur est le nom de la classe

• Il peut avoir des paramètres, mais pas de retour

• Dans le corps du constructeur, on doit initialiser les champs de donnée

Java, les fondamentaux alphorm.com™©

Page 76: Alphorm.com Formation Java, les fondamentaux

Créer des méthodes• Une méthode est un traitement effectué sur un objet

• Son nom suit la même convention que les attributs

• Elle déclare une liste de paramètres (type nom)

• Elle peut ne pas avoir de paramètres

Java, les fondamentaux alphorm.com™©

• Elle a un retour, sinon, elle déclare « void »

• Une méthode correspond à un message que l’on peut envoyer à l’objet de ce type

Page 77: Alphorm.com Formation Java, les fondamentaux

Ce qu’on a couvert• Les composants possibles

• Créer des attributs

• Créer des constructeurs

• Créer des méthodes

Java, les fondamentaux alphorm.com™©

Page 78: Alphorm.com Formation Java, les fondamentaux

Présentation du langage Java

Créer et utiliser une classe

Java, les fondamentaux alphorm.com™©

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Créer et utiliser une classe de test

Page 79: Alphorm.com Formation Java, les fondamentaux

Plan• Définition d’une classe de test

• Construction d’une classe de test

• Utilisation simple d’une classe de test

• Utilisation d’une classe de test via un framework

Java, les fondamentaux alphorm.com™©

Page 80: Alphorm.com Formation Java, les fondamentaux

Définition d’une classe de test• Une classe qui ne sert qu’à tester une autre classe

• Une classe est l’unité de test par excellence

• La classe de test propose une méthode par traitement à tester

• Les méthodes de tests sont déclenchés par l’extérieur

Java, les fondamentaux alphorm.com™©

Page 81: Alphorm.com Formation Java, les fondamentaux

Construction d’une classe de test• Pour chaque classe du modèle, créer une classe de test

• Dans cette nouvelle classe, créer une méthode par test à réaliser

• Dans une méthode de test : mettre en place le jeu de test, lancer

Java, les fondamentaux alphorm.com™©

Page 82: Alphorm.com Formation Java, les fondamentaux

Utilisation simple d’une classe de test• Dans un main

• Appeler les méthodes de la classe de test

• On voit qu’il est plus simple de faire des appels « statiques »

• Remarquer la visualisation des résultats dans la console

Java, les fondamentaux alphorm.com™©

Page 83: Alphorm.com Formation Java, les fondamentaux

Utilisation d’un framework de test• JUnit s’est imposé comme un framework de test

• Appels statiques

• Les classes et les méthodes de tests sont annotés

• Une ihm simple permet d’identifier les réussites et les échecs

Java, les fondamentaux alphorm.com™©

Page 84: Alphorm.com Formation Java, les fondamentaux

Ce qu’on a couvert• Définition d’une classe de test

• Construction d’une classe de test

• Utilisation simple d’une classe de test

• Utilisation d’une classe de test via un framework

Java, les fondamentaux alphorm.com™©

Page 85: Alphorm.com Formation Java, les fondamentaux

Présentation du langage Java

Compiler et exécuter un

Java, les fondamentaux alphorm.com™©

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Compiler et exécuter un programme de test

Page 86: Alphorm.com Formation Java, les fondamentaux

Plan• Création d’un programme de test

• Lancement d’un programme de test JUnit

Java, les fondamentaux alphorm.com™©

Page 87: Alphorm.com Formation Java, les fondamentaux

Création d’un programme de test• Il faut disposer des classes à tester

• Créer un programme avec un main

• Compiler et exécuter le programme

• Vérifier les sorties

Java, les fondamentaux alphorm.com™©

Page 88: Alphorm.com Formation Java, les fondamentaux

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

test simplifié

• Lancement d’un ihm spécifique

Java, les fondamentaux alphorm.com™©

Page 89: Alphorm.com Formation Java, les fondamentaux

Ce qu’on a couvert• Création d’un programme de test

• Lancement d’un programme de test

Java, les fondamentaux alphorm.com™©

Page 90: Alphorm.com Formation Java, les fondamentaux

Utiliser des primitives

Déclarer et initialiser des

Java, les fondamentaux alphorm.com™©

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Déclarer et initialiser des variables de champs

Page 91: Alphorm.com Formation Java, les fondamentaux

Plan• Qu’est-ce qu’une primitive ?

• Déclaration d’un champ de donnée

• Initialiser un champ de donnée

Java, les fondamentaux alphorm.com™©

Page 92: Alphorm.com Formation Java, les fondamentaux

Qu’est-ce qu’une primitive ?• Les types primitifs sont les types fondamentaux de Java

• Les données primitives sont placées sur la pile

• Les valeurs possibles sont déterminées par le type

• Il n’est pas possible de créer de nouveaux types primitifs

Java, les fondamentaux alphorm.com™©

Page 93: Alphorm.com Formation Java, les fondamentaux

Déclaration d’un champ de donnée• La forme générale est : Type nomDeLaVariable;

• On peut rajouter la visibilité

• Et une valeur par défaut

Java, les fondamentaux alphorm.com™©

Page 94: Alphorm.com Formation Java, les fondamentaux

Initialiser un champ de donnée• Par défaut la valeur est 0, 0.0, null ou false suivant le type

• Il faut donc en général donner une valeur à ce champ

• Initialiser par défaut, lors de la déclaration

• Ecrire le code d’initialisation dans un constructeur

Java, les fondamentaux alphorm.com™©

Page 95: Alphorm.com Formation Java, les fondamentaux

Ce qu’on a couvert• Qu’est-ce qu’une primitive ?

• Déclaration d’un champ de donnée

• Initialiser un champ de donnée

Java, les fondamentaux alphorm.com™©

Page 96: Alphorm.com Formation Java, les fondamentaux

Utiliser des primitives

Décrire les types primitifs

Java, les fondamentaux alphorm.com™©

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Décrire les types primitifs

Page 97: Alphorm.com Formation Java, les fondamentaux

Plan• Les types entiers

• Les types flottants

• Le type caractère

• Le type booléen

Java, les fondamentaux alphorm.com™©

Page 98: Alphorm.com Formation Java, les fondamentaux

Les types entiers• Un octet signé : byte

• Deux octets signés : short

• Quatre octets signés : int

• Huit octets signés : long

Java, les fondamentaux alphorm.com™©

• Pas de types non signés, mais des méthodes sur les types Integer et Long pour gérer l’arithmétique non signée

• Les littéraux sont typés : 4 est un int, 4L est un long

Page 99: Alphorm.com Formation Java, les fondamentaux

Les types flottants• 32-bit IEEE 754 : float

• 64-bit IEEE 754 : double

• Ne pas utiliser ces types pour des monétaires, mais plutôt BigDecimal

• Les littéraux sont typés : 5.6 est un double, 5.6F est un float

Java, les fondamentaux alphorm.com™©

Page 100: Alphorm.com Formation Java, les fondamentaux

Le type caractère• Représenté par char

• 16-bit Unicode, soit de \u0000 à \uFFFF

• Le type chaîne de caractère n’est pas un type primitif (String)

Java, les fondamentaux alphorm.com™©

Page 101: Alphorm.com Formation Java, les fondamentaux

Le type booléen• Une valeur soit true, soit false

• La taille en mémoire n’est pas précisée

• Les booléens ne peuvent être confondus ni avec des entiers, ni avec des référence (null)

Java, les fondamentaux alphorm.com™©

Page 102: Alphorm.com Formation Java, les fondamentaux

Ce qu’on a couvert• Les types entiers

• Les types flottants

• Le type caractère

• Le type booléen

Java, les fondamentaux alphorm.com™©

Page 103: Alphorm.com Formation Java, les fondamentaux

Utiliser des primitives

Déclarer des variables et

Java, les fondamentaux alphorm.com™©

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Déclarer des variables et leur affecter des valeurs

Page 104: Alphorm.com Formation Java, les fondamentaux

Plan• Les variables en Java

• Comportement des variables locales

• L’affectation d’une valeur à une variable locale

Java, les fondamentaux alphorm.com™©

Page 105: Alphorm.com Formation Java, les fondamentaux

Les variables en Java• Les variables sont déclarées et typées

• Les variables attributs, ou champ de donnée

• Les variables paramètres

• Les variables locales à une méthode

Java, les fondamentaux alphorm.com™©

• Notez l’absence de variable globale

Page 106: Alphorm.com Formation Java, les fondamentaux

Comportement des variables locales• Une variable locale est déclarée à l’intérieur d’une méthode

• Elle disparaît à la fin du bloc { } dans lequel elle est déclarée

• Elle doit être initialisée avant d’être utilisée

Java, les fondamentaux alphorm.com™©

Page 107: Alphorm.com Formation Java, les fondamentaux

L’affectation d’une variable locale• Pour être utilisée, une variable doit avoir une valeur :

� À l’initialisation

� Plus tard, en affectant une valeur calculée

• Le compilateur identifie les chemins dans la méthode

Tous les chemins doivent donner une valeur à la variable

Java, les fondamentaux alphorm.com™©

• Tous les chemins doivent donner une valeur à la variable

• Certaines variables sont utilisées en retour de fonctions

Page 108: Alphorm.com Formation Java, les fondamentaux

Ce qu’on a couvert• Les variables en Java

• Comportement des variables locales

• L’affectation d’une valeur à une variable locale

Java, les fondamentaux alphorm.com™©

Page 109: Alphorm.com Formation Java, les fondamentaux

Utiliser des primitives

Utiliser des constantes

Java, les fondamentaux alphorm.com™©

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Utiliser des constantes

Page 110: Alphorm.com Formation Java, les fondamentaux

Plan• Un mot clé pour créer une constante

• Une constante en attribut, publique ou non

• Une constante en variable locale

Java, les fondamentaux alphorm.com™©

Page 111: Alphorm.com Formation Java, les fondamentaux

Un mot clé pour créer une constante• En utilisant le mot-clé « final »

• Il faut donner une valeur à la variable

• Il est impossible de modifier la valeur donnée

• Le type de la variable est quelconque

Java, les fondamentaux alphorm.com™©

• Par convention, le nom de la variable est en majuscules

Page 112: Alphorm.com Formation Java, les fondamentaux

Une constante en attribut• Une constante en attribut peut-être :

� Une information constante pour le code de la classe -> private

� Une information constante pour le reste du monde -> public

• Un attribut publique et constant n’est pas dangereux

Exemple : Math.PI

Java, les fondamentaux alphorm.com™©

• Exemple : Math.PI

Page 113: Alphorm.com Formation Java, les fondamentaux

Une constante en variable locale• Une variable locale constante ne peut pas être modifiée dans sa portée

• Elle interdit simplement toute modification

• Elle est utilisable dans une classe anonyme de la même portée

• Dans le cas du paramètre, attention à ne pas confondre avec les « const » du C++

Java, les fondamentaux alphorm.com™©

« const » du C++

Page 114: Alphorm.com Formation Java, les fondamentaux

Ce qu’on a couvert• Un mot clé pour créer une constante

• Une constante en attribut, publique ou non

• Une constante en variable locale

Java, les fondamentaux alphorm.com™©

Page 115: Alphorm.com Formation Java, les fondamentaux

Utiliser des primitives

Utiliser des opérateurs

Java, les fondamentaux alphorm.com™©

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Utiliser des opérateurs arithmétiques

Page 116: Alphorm.com Formation Java, les fondamentaux

Plan• Les opérateurs arithmétiques en Java

• Le comportement des types

Java, les fondamentaux alphorm.com™©

Page 117: Alphorm.com Formation Java, les fondamentaux

Les opérateurs arithmétiques• Opérateurs +, -, / , *

• Opérateurs combinant affectation et opération +=, -=, /=,*=

• Opérateurs unaires ++, --

• L’opérateur % (modulo)

Java, les fondamentaux alphorm.com™©

• Pas de surcharge possible des opérateurs

• Il existe des opérateurs au niveau des bits : &, ~ ,… décalage <<, >>, …

Page 118: Alphorm.com Formation Java, les fondamentaux

Le comportement des types• Pour garder la précision des calculs, on promeut les short et byte en int

• Il vaut mieux donc utiliser des int

• Les débordements sur entiers ne sont pas gérés comme sur les réels

• Les littéraux ont des types :

Java, les fondamentaux alphorm.com™©

� 1 est un int

� 1.0 est un double

Page 119: Alphorm.com Formation Java, les fondamentaux

Ce qu’on a couvert• Les opérateurs arithmétiques en Java

• Le comportement des types

Java, les fondamentaux alphorm.com™©

Page 120: Alphorm.com Formation Java, les fondamentaux

Utiliser des objets

Déclarer et initialiser des

Java, les fondamentaux alphorm.com™©

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Déclarer et initialiser des objets

Page 121: Alphorm.com Formation Java, les fondamentaux

Plan• Référence vs objet

• Référence locale, paramètre

• Référence en attribut

Java, les fondamentaux alphorm.com™©

Page 122: Alphorm.com Formation Java, les fondamentaux

Référence vs objet• Un objet est une zone mémoire allouée avec un « new »

• Pour garder un lien vers cette zone mémoire, on utilise une référence

• Un objet ne peut pas être manipulé sans référence

• Lors qu’un objet n’est plus référencé, il est finalisé

Java, les fondamentaux alphorm.com™©

• Voiture titine = new Voiture()

Page 123: Alphorm.com Formation Java, les fondamentaux

Référence locale, paramètre• Une référence vers un objet peut apparaître en paramètre

� L’appelant doit fournir l’objet en question

• Une référence peut être une variable locale

� Il faut initialiser cette variable :

À partir d’une autre référence

Java, les fondamentaux alphorm.com™©

• À partir d’une autre référence

• En créant un objet

Page 124: Alphorm.com Formation Java, les fondamentaux

Référence en attribut• Une référence peut être un attribut

• Il s’agit d’un lien vers un autre objet

• Les règles d’initialisation des types primitifs s’appliquent

� Valeur null par défaut

Java, les fondamentaux alphorm.com™©

� Initialisation lors de la déclaration ou dans un constructeur

Page 125: Alphorm.com Formation Java, les fondamentaux

Ce qu’on a couvert• Référence vs objet

• Référence locale, paramètre

• Référence en attribut

Java, les fondamentaux alphorm.com™©

Page 126: Alphorm.com Formation Java, les fondamentaux

Utiliser des objets

Stocker des objets en

Java, les fondamentaux alphorm.com™©

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Stocker des objets en mémoire

Page 127: Alphorm.com Formation Java, les fondamentaux

Plan• Un objet peut référencer d’autres objets

• Règles d’accès aux objets en mémoire

Java, les fondamentaux alphorm.com™©

Page 128: Alphorm.com Formation Java, les fondamentaux

Un objet peut référencer d’autres objets• Via des attributs en mémoire

• Des graphes d’objets sont stockés en mémoire

• Exemple :

� Le gobelet référence des dés

Java, les fondamentaux alphorm.com™©

� Tant que le gobelet existe en mémoire, les dés aussi

• La règle d’encapsulation s’applique, le gobelet ne peut accéder aux membres privés des dés

Page 129: Alphorm.com Formation Java, les fondamentaux

Règles d’accès aux objets• Les objets ne sont finalisés (ramassés) que lorsqu’ils ne sont plus

référencés

• Cette règle s’applique aux graphes d’objets

• Suppose que les références sur objet sont comptées

• Il faut que le développeur pense à mettre ses références à « null »

Java, les fondamentaux alphorm.com™©

• Il faut que le développeur pense à mettre ses références à « null »

Page 130: Alphorm.com Formation Java, les fondamentaux

Ce qu’on a couvert• Un objet peut référencer d’autres objets

• Règles d’accès aux objets en mémoire

Java, les fondamentaux alphorm.com™©

Page 131: Alphorm.com Formation Java, les fondamentaux

Utiliser des objets

Utiliser des références

Java, les fondamentaux alphorm.com™©

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Utiliser des références d’objets

Page 132: Alphorm.com Formation Java, les fondamentaux

Plan• Référence et objets

• Accéder à un champ d’un objet

• Accéder à une méthode d’un objet

Java, les fondamentaux alphorm.com™©

Page 133: Alphorm.com Formation Java, les fondamentaux

Référence et objet• Un objet est accessible via les références qui pointent vers lui

• Une référence est un accès mémoire, mais non explicite

• La sélection des membres se fait avec l’opérateur « . »

• Obtenir une référence à un objet se fait :

Java, les fondamentaux alphorm.com™©

� En créant soi-même l’objet

� En invoquant une méthode qui crée l’objet et nous le retourne

� En récupérant la référence en paramètre

Page 134: Alphorm.com Formation Java, les fondamentaux

Accéder à un champ• Via une référence, on obtient un accès aux membres

• Si le champ est accessible (champ « public » par exemple)

� Avec un code genre : ref . attribut

� Je peux lire, modifier l’attribut de l’objet pointé par ref

Un accès direct à un champ est rare, car cela ne respecte pas

Java, les fondamentaux alphorm.com™©

• Un accès direct à un champ est rare, car cela ne respecte pas l’encapsulation

Page 135: Alphorm.com Formation Java, les fondamentaux

Accéder à une méthode• Via une référence, on accède aux traitements de l’objet

• L’appel se réalise comme pour un attribut, mais avec des parenthèses, même s’il n’y a pas de paramètres à passer

• Le déclenchement de la méthode suppose un effet sur l’objet :

� La méthode nous retourne le résultat d’un calcul

Java, les fondamentaux alphorm.com™©

� La méthode nous retourne le résultat d’un calcul

� La méthode modifie l’état de l’objet

• En général, l’objet peut garder le résultat du calcul lui-même

Page 136: Alphorm.com Formation Java, les fondamentaux

Ce qu’on a couvert• Référence et objets

• Accéder à un champ d’un objet

• Accéder à une méthode d’un objet

Java, les fondamentaux alphorm.com™©

Page 137: Alphorm.com Formation Java, les fondamentaux

Utiliser des objets

Utiliser les javadocs

Java, les fondamentaux alphorm.com™©

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Utiliser les javadocs

Page 138: Alphorm.com Formation Java, les fondamentaux

Plan• Qu’est-ce que javadoc ?

• Visiter la documentation de jse

• Appliquer la documentation dans son code

Java, les fondamentaux alphorm.com™©

Page 139: Alphorm.com Formation Java, les fondamentaux

Qu’est-ce que javadoc ?• Javadoc est un outil pour produire de la documentation technique

• Il peut être appliqué sur son propre projet

• La structure de la documentation suit celle du projet

• Les textes qui apparaissent sont des compléments que l’on peut ajouter

Java, les fondamentaux alphorm.com™©

Page 140: Alphorm.com Formation Java, les fondamentaux

Visiter la documentation jse• Accéder au site Oracle, ou bien en utiliser un téléchargement

• Trouver le package, la classe, la méthode

• La description contient des généralités, des exemples

• Voyons la classe Date, la classe Math

Java, les fondamentaux alphorm.com™©

Page 141: Alphorm.com Formation Java, les fondamentaux

Appliquer la documentation au code• Avec la classe Date, créer une Date now et today

� Un constructeur par défaut qui créer un Date maintenant

• Avec la classe Math, comprendre la description des champs

� Voir le lien avec d’autres classes, StrictMath

Java, les fondamentaux alphorm.com™©

Page 142: Alphorm.com Formation Java, les fondamentaux

Ce qu’on a couvert• Qu’est-ce que javadoc ?

• Visiter la documentation de jse

• Appliquer la documentation dans son code

Java, les fondamentaux alphorm.com™©

Page 143: Alphorm.com Formation Java, les fondamentaux

Utiliser des objets

Utiliser des objets String et

Java, les fondamentaux alphorm.com™©

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Utiliser des objets String et StringBuilder

Page 144: Alphorm.com Formation Java, les fondamentaux

Plan• La chaîne de caractères String

• Les limites de la classe String

• L’intérêt de StringBuilder

Java, les fondamentaux alphorm.com™©

Page 145: Alphorm.com Formation Java, les fondamentaux

La chaîne de caractères String• Une classe, avec des comportements

• Une création exceptionnelle, rappelant les types primitifs

• L’application de l’opérateur +, y compris pour concaténer des primitives

• Méthode de manipulation de chaîne

Java, les fondamentaux alphorm.com™©

• Voir la documentation pour les détails

Page 146: Alphorm.com Formation Java, les fondamentaux

Les limites de la classe String• Une String est « immutable value »

• Toutes les méthodes qui semblent modifier l’objet String en crée un autre

• Très peu efficace pour créer un buffer

Java, les fondamentaux alphorm.com™©

Page 147: Alphorm.com Formation Java, les fondamentaux

L’intérêt de StringBuilder• La classe StringBuilder n’a pas de relation de type avec String

• Dédiée à la gestion de buffer

� Ajout de morceaux de chaînes…

� Troncature aléatoire

On obtient à tout moment le buffer via toString()

Java, les fondamentaux alphorm.com™©

• On obtient à tout moment le buffer via toString()

Page 148: Alphorm.com Formation Java, les fondamentaux

Ce qu’on a couvert• La chaîne de caractères String

• Les limites de la classe String

• L’intérêt de StringBuilder

Java, les fondamentaux alphorm.com™©

Page 149: Alphorm.com Formation Java, les fondamentaux

Utiliser des opérateurs et des structures décisionnelles

Opérateurs relationnels et

Java, les fondamentaux alphorm.com™©

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Opérateurs relationnels et conditionnels

Page 150: Alphorm.com Formation Java, les fondamentaux

Plan• Les opérateurs relationnels

• Les opérateurs conditionnels

Java, les fondamentaux alphorm.com™©

Page 151: Alphorm.com Formation Java, les fondamentaux

Les opérateurs relationnels• Opérateur ==, !=, <,>,<=,>=

• Evalués à un booléen

• S’appliquent à tous les types primitifs

• S’appliquent aussi aux références, mais attention pas aux objets

Java, les fondamentaux alphorm.com™©

Page 152: Alphorm.com Formation Java, les fondamentaux

Les opérateurs conditionnels• Les opérateurs &&, || sont court-circuit

• Les opérateurs &,|,^ s’appliquent comme sur les bits d’un entier

• L’opérateur ! est NOT

• L’opérateur ternaire :

Java, les fondamentaux alphorm.com™©

� (a > b )? A : b

� Si a est supérieur à b alors a sinon b

Page 153: Alphorm.com Formation Java, les fondamentaux

Ce qu’on a couvert• Les opérateurs relationnels

• Les opérateurs conditionnels

Java, les fondamentaux alphorm.com™©

Page 154: Alphorm.com Formation Java, les fondamentaux

Utiliser des opérateurs et des structures décisionnelles

Tester l’égalité entre chaînes

Java, les fondamentaux alphorm.com™©

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Tester l’égalité entre chaînes

Page 155: Alphorm.com Formation Java, les fondamentaux

Plan• L’égalité physique ou sémantique des objets

• La classe String et ses méthodes

• == ou bien equals(…) ?

Java, les fondamentaux alphorm.com™©

Page 156: Alphorm.com Formation Java, les fondamentaux

L’égalité sémantique ou physique• Un objet est sur le tas et est référencé via une référence

• L’opérateur == s’applique sur la référence, test physique

• Comparer deux objets en prenant en compte ce qu’ils contiennent est le test sémantique

• Le test sémantique se fait PAR les objets eux-mêmes

Java, les fondamentaux alphorm.com™©

• Le test sémantique se fait PAR les objets eux-mêmes

• Il n’y a pas de test sémantique par défaut en Java

Page 157: Alphorm.com Formation Java, les fondamentaux

La classe String et ses méthodes• Méthode equals : test d’égalité de 2 objets String

� String str1 … String str2 …

� Test : str1.equals(str2)

• Méthode equalsIgnoreCase : test d’égalité sans prendre en compte la casse

Java, les fondamentaux alphorm.com™©

casse

Page 158: Alphorm.com Formation Java, les fondamentaux

== ou bien equals(…)• == est un test physique

• Les méthodes equals ou equalsIgnoreCase testent le contenu

• == peut servir à identifier le contenu CAR String est une « immutable value »

Java, les fondamentaux alphorm.com™©

Page 159: Alphorm.com Formation Java, les fondamentaux

Ce qu’on a couvert• L’égalité physique ou sémantique des objets

• La classe String et ses méthodes

• == ou bien equals(…) ?

Java, les fondamentaux alphorm.com™©

Page 160: Alphorm.com Formation Java, les fondamentaux

Utiliser des opérateurs et des structures décisionnelles

Evaluer différentes

Java, les fondamentaux alphorm.com™©

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Evaluer différentes conditions et coder

Page 161: Alphorm.com Formation Java, les fondamentaux

Plan• Les expressions booléennes

• Tester une seule condition, simple ou complexe

• Tester une suite de condition

• Un branchement complexe

Java, les fondamentaux alphorm.com™©

Page 162: Alphorm.com Formation Java, les fondamentaux

Les expressions booléennes• Un expression booléenne est une expression dont l’évaluation donne

true ou false

• Un numérique ou une référence ne sont pas des booléens

• Le type « boolean » représente une variable booléenne

Java, les fondamentaux alphorm.com™©

Page 163: Alphorm.com Formation Java, les fondamentaux

Tester une seule condition• Pour tester une seule condition : « if » avec ou sans accolades

• Il est courant de rajouter systématiquement les accolades pour éviter une erreur future : les indentations ne comptent pas

• Il est courant de rajouter un « else » car un « if » seul est peu lisible

• La condition est mise entre parenthèses

Java, les fondamentaux alphorm.com™©

• La condition est mise entre parenthèses

• La condition peut être complexe, utilisant les opérateurs booléens

Page 164: Alphorm.com Formation Java, les fondamentaux

Tester une suite de condition• Il faut enchaîner les « if » et les « else »

• La logique conditionnelle pose rapidement des problèmes :

� De lecture, le code est long à lire

� De fragilité, difficile de modifier une condition sans impact

Facile à boguer, la logique est compliquée

Java, les fondamentaux alphorm.com™©

� Facile à boguer, la logique est compliquée

• Les conditions elles-mêmes sont rapidement trop complexes

Page 165: Alphorm.com Formation Java, les fondamentaux

Un branchement complexe• Lorsqu’une seule variable est tester, pour un ensemble de valeurs

• En utilisant « switch / case », on simplifie un peu

• Mais la variable est forcément primitive

• Peu être le signe d’un manque de conception objet

Java, les fondamentaux alphorm.com™©

Page 166: Alphorm.com Formation Java, les fondamentaux

Ce qu’on a couvert• Les expressions booléennes

• Tester une seule condition, simple ou complexe

• Tester une suite de condition

• Un branchement complexe

Java, les fondamentaux alphorm.com™©

Page 167: Alphorm.com Formation Java, les fondamentaux

Utiliser des opérateurs et des structures décisionnelles

Créer des if et if/else

Java, les fondamentaux alphorm.com™©

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Créer des if et if/else

Page 168: Alphorm.com Formation Java, les fondamentaux

Plan• L’instruction « if »

• Le couple « if / else »

• L’intense « if / else / if /else / … »

Java, les fondamentaux alphorm.com™©

Page 169: Alphorm.com Formation Java, les fondamentaux

L’instruction « if »• L’instruction « if » est suivie d’une condition entre parenthèses

• Il y a une seule instruction derrière un « if »

Java, les fondamentaux alphorm.com™©

• Mais on va placer plusieurs instructions grâce aux accolades

Page 170: Alphorm.com Formation Java, les fondamentaux

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

• Une seule instruction après un « else », ou bien des accolades

Java, les fondamentaux alphorm.com™©

Page 171: Alphorm.com Formation Java, les fondamentaux

L’intense …• Enchaîner des « if / else if / … » est rarement une bonne idée

Java, les fondamentaux alphorm.com™©

Page 172: Alphorm.com Formation Java, les fondamentaux

Ce qu’on a couvert• L’instruction « if »

• Le couple « if / else »

• L’intense « if / else / if /else / … »

Java, les fondamentaux alphorm.com™©

Page 173: Alphorm.com Formation Java, les fondamentaux

Utiliser des opérateurs et des structures décisionnelles

Enchaîner les conditions

Java, les fondamentaux alphorm.com™©

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Enchaîner les conditions

Page 174: Alphorm.com Formation Java, les fondamentaux

Plan• L’instruction « if / else »

• Le cas de la création des objets

• Que testent réellement les conditions ?

Java, les fondamentaux alphorm.com™©

Page 175: Alphorm.com Formation Java, les fondamentaux

L’instruction « if / else »• Une instruction conditionnelle est rapidement inévitable

• Ne pas la rendre trop complexe

• Eventuellement réduire la complexité

Java, les fondamentaux alphorm.com™©

Page 176: Alphorm.com Formation Java, les fondamentaux

Le cas de la création des objets• Pour créer un objet, il faut connaître sa classe

• La logique conditionnelle est donc quasi-imparable

Java, les fondamentaux alphorm.com™©

Page 177: Alphorm.com Formation Java, les fondamentaux

Que testent réellement les conditions ?• Il faut éviter de tester le type des objets

� Par instanceof

� Par un autre moyen

• Pour déclencher des méthodes sur des objets en fonctions des types, il faut penser polymorphisme

Java, les fondamentaux alphorm.com™©

faut penser polymorphisme

• Les conditions sont souvent des primitives

• La combinaison des variables de conditions reflète le résultat d’une méthode

Page 178: Alphorm.com Formation Java, les fondamentaux

Ce qu’on a couvert• L’instruction « if / else »

• Le cas de la création des objets

• Que testent réellement les conditions ?

Java, les fondamentaux alphorm.com™©

Page 179: Alphorm.com Formation Java, les fondamentaux

Utiliser des opérateurs et des structures décisionnelles

L’instruction switch

Java, les fondamentaux alphorm.com™©

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

L’instruction switch

Page 180: Alphorm.com Formation Java, les fondamentaux

Plan• Forme générale du switch

• Quand utiliser switch

• Quand ne pas utiliser switch

Java, les fondamentaux alphorm.com™©

Page 181: Alphorm.com Formation Java, les fondamentaux

Forme générale du switch• Il faut une variable, entière jusqu’à Java7, String compris depuis

• Le cas par défaut est optionnel

Java, les fondamentaux alphorm.com™©

Page 182: Alphorm.com Formation Java, les fondamentaux

Quand utiliser le switch• Reste simple et inévitable

Java, les fondamentaux alphorm.com™©

Page 183: Alphorm.com Formation Java, les fondamentaux

Quand ne pas utiliser le switch• Expression complexe, qui pourrait être remplacée par une conception

plus poussée

• Oublier le « default »

Java, les fondamentaux alphorm.com™©

Page 184: Alphorm.com Formation Java, les fondamentaux

Ce qu’on a couvert• Forme générale du switch

• Quand utiliser switch

• Quand ne pas utiliser switch

Java, les fondamentaux alphorm.com™©

Page 185: Alphorm.com Formation Java, les fondamentaux

Créer et utiliser des tableaux

Déclarer et instancier un

Java, les fondamentaux alphorm.com™©

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Déclarer et instancier un tableau à 1 dimension

Page 186: Alphorm.com Formation Java, les fondamentaux

Plan• Qu’est-ce qu’un tableau ?

• Tableau de primitives

• Tableau d’objets

Java, les fondamentaux alphorm.com™©

Page 187: Alphorm.com Formation Java, les fondamentaux

Qu’est-ce qu’un tableau ?• Le tableau est un objet

• Il s’instancie avec un new

• Son type et T[ ]

• Il ne fournit aucune information, n’a aucune intelligence

Java, les fondamentaux alphorm.com™©

Page 188: Alphorm.com Formation Java, les fondamentaux

Tableau de primitives• Un tableau de type primitifs contient les valeurs

• Les valeurs sont mises à 0 (en fonction du type)

• Une seul « new » suffit à disposer des données

Java, les fondamentaux alphorm.com™©

Page 189: Alphorm.com Formation Java, les fondamentaux

Tableau d’objets• Le tableau d’objets n’existe pas

• Le tableau est un tableau de références

• Les références sont mises à null

• Il faut donc un autre new pour chaque objet dont on veut disposer

Java, les fondamentaux alphorm.com™©

Page 190: Alphorm.com Formation Java, les fondamentaux

Ce qu’on a couvert• Qu’est-ce qu’un tableau ?

• Tableau de primitives

• Tableau d’objets

Java, les fondamentaux alphorm.com™©

Page 191: Alphorm.com Formation Java, les fondamentaux

Créer et utiliser des tableaux

Déclarer et instancier un

Java, les fondamentaux alphorm.com™©

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Déclarer et instancier un tableau à 2 dimensions

Page 192: Alphorm.com Formation Java, les fondamentaux

Plan• Qu’est-ce qu’un tableau à deux dimensions?

• Les services de ce tableau

Java, les fondamentaux alphorm.com™©

Page 193: Alphorm.com Formation Java, les fondamentaux

Qu’est-ce qu’un tableau à deux dimensions ?• On spécifie 2 dimensions, le tableau est donc une matrice

• Il faut deux indices pour ranger un élément dans le tableau

• On peut aussi l’initialiser de façon statique

Java, les fondamentaux alphorm.com™©

Page 194: Alphorm.com Formation Java, les fondamentaux

Les services de ce tableau• L’attribut en lecture seule « length » est disponible pour les 2

dimensions

Java, les fondamentaux alphorm.com™©

Page 195: Alphorm.com Formation Java, les fondamentaux

Ce qu’on a couvert• Qu’est-ce qu’un tableau à deux dimensions?

• Les services de ce tableau

Java, les fondamentaux alphorm.com™©

Page 196: Alphorm.com Formation Java, les fondamentaux

Créer et utiliser des tableaux

Utiliser une boucle for dans

Java, les fondamentaux alphorm.com™©

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Utiliser une boucle for dans le tableau

Page 197: Alphorm.com Formation Java, les fondamentaux

Plan• Les boucles for, while, do-while, for(each)

• Le parcours du tableau à une dimension

• Le parcours du tableau à 2 dimensions

Java, les fondamentaux alphorm.com™©

Page 198: Alphorm.com Formation Java, les fondamentaux

Les boucles• La boucle while(cond) { }

• La boucle do { … } while(cond) ;

• La boucle for( int i =0; i<cond; i++) { }

• La boucle for ( E e: tab) { }

Java, les fondamentaux alphorm.com™©

Page 199: Alphorm.com Formation Java, les fondamentaux

Parcourir un tableau à une dimension• Avec une boucle for basé sur une variable

� La variable de boucle est indice d’accès dans le tableau

• Avec une boucle for « each »

� On ressort l’élement contenu dans le tableau

Java, les fondamentaux alphorm.com™©

Page 200: Alphorm.com Formation Java, les fondamentaux

Parcourir un tableau à deux dimensions• Avec une double boucle

• Les variables de boucles sont les indices d’accès aux éléments du tableau

• La capacité du tableau « length » est utilisée

Java, les fondamentaux alphorm.com™©

Page 201: Alphorm.com Formation Java, les fondamentaux

Ce qu’on a couvert• Les boucles for, while, do-while, for(each)

• Le parcours du tableau à une dimension

• Le parcours du tableau à 2 dimensions

Java, les fondamentaux alphorm.com™©

Page 202: Alphorm.com Formation Java, les fondamentaux

Créer et utiliser des tableaux

Créer et initialiser une

Java, les fondamentaux alphorm.com™©

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Créer et initialiser une ArrayList

Page 203: Alphorm.com Formation Java, les fondamentaux

Plan• Qu’est-ce que java.util.ArrayList ?

• Comment initialiser une ArrayList

• Parcourir une ArrayList

Java, les fondamentaux alphorm.com™©

Page 204: Alphorm.com Formation Java, les fondamentaux

Qu’est-ce qu’une ArrayList ?• Un objet de java.util

• Tableau dynamique, se redimensionne seule

• Offre des services supplémentaires

Java, les fondamentaux alphorm.com™©

Page 205: Alphorm.com Formation Java, les fondamentaux

Comment initialiser une ArrayList• En la remplissant au fur et au mesure, avec « add »

• En lui donnant une taille initiale

Java, les fondamentaux alphorm.com™©

Page 206: Alphorm.com Formation Java, les fondamentaux

Parcourir une ArrayList• En utilisant un indice jusqu’à « size »

• En utilisant le for « each »

Java, les fondamentaux alphorm.com™©

Page 207: Alphorm.com Formation Java, les fondamentaux

Ce qu’on a couvert• Qu’est-ce que java.util.ArrayList ?

• Comment initialiser une ArrayList

• Parcourir une ArrayList

Java, les fondamentaux alphorm.com™©

Page 208: Alphorm.com Formation Java, les fondamentaux

Créer et utiliser des tableaux

Utiliser l’instruction import

Java, les fondamentaux alphorm.com™©

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Utiliser l’instruction import

Page 209: Alphorm.com Formation Java, les fondamentaux

Plan• Le package java.util

• Utiliser import

Java, les fondamentaux alphorm.com™©

Page 210: Alphorm.com Formation Java, les fondamentaux

Le package java.util• Les classes de collection se trouvent dans java.util

� Voir la documentation

• On ne peut pas utiliser le nom simple de la classe ArrayList, sans son nom de package

• Cela garantit l’absence de collision entre les noms de classes

Java, les fondamentaux alphorm.com™©

• Cela garantit l’absence de collision entre les noms de classes

Page 211: Alphorm.com Formation Java, les fondamentaux

L’instruction import• Arbitrage entre utiliser le nom complet de la classe

• Ou bien faire un « import » de la classe, et utiliser son nom court

• Aucun impact sur le code généré

• Confort de codage et de lecture

Java, les fondamentaux alphorm.com™©

• Pas d’import du package lui-même

• On importe des classes d’un package

• On peut importer toutes les classes d’un package

Page 212: Alphorm.com Formation Java, les fondamentaux

Ce qu’on a couvert• Le package java.util

• Utiliser import

Java, les fondamentaux alphorm.com™©

Page 213: Alphorm.com Formation Java, les fondamentaux

Créer et utiliser des tableaux

Accéder à une valeur d’un

Java, les fondamentaux alphorm.com™©

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Accéder à une valeur d’un tableau

Page 214: Alphorm.com Formation Java, les fondamentaux

Plan• Accéder aux valeurs dans un tableau

• Accéder aux valeurs dans une ArrayList

Java, les fondamentaux alphorm.com™©

Page 215: Alphorm.com Formation Java, les fondamentaux

Accéder aux valeurs dans un tableau• Le tableau supporte l’accès aléatoire

• Avec l’opérateur [ ], on lit n’importe quelle valeur

• Les débordements sont repérés

• Le même opérateur permet d’écrire

Java, les fondamentaux alphorm.com™©

• Le tableau ne se redimensionne pas

Page 216: Alphorm.com Formation Java, les fondamentaux

Accéder aux valeur d’une ArrayList• Ce tableau peut se redimensionner seul

• Avec get(int), on obtient la ième valeur

• Mais pour modifier le ième élément, utiliser add(int, E)

Java, les fondamentaux alphorm.com™©

Page 217: Alphorm.com Formation Java, les fondamentaux

Ce qu’on a couvert• Accéder aux valeurs dans un tableau

• Accéder aux valeurs dans une ArrayList

Java, les fondamentaux alphorm.com™©

Page 218: Alphorm.com Formation Java, les fondamentaux

Créer et utiliser des tableaux

Utiliser le tableau args

Java, les fondamentaux alphorm.com™©

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Utiliser le tableau args

Page 219: Alphorm.com Formation Java, les fondamentaux

Plan• Les arguments de la ligne de commande

• Parcourir le tableau

• Convertir les éléments de ce tableau

Java, les fondamentaux alphorm.com™©

Page 220: Alphorm.com Formation Java, les fondamentaux

Les arguments de la ligne de commande• Les arguments fournit après « java app » sur le ligne de commande

• Séparés par des blancs

• Ce sont des chaînes de caractères dans le main

Java, les fondamentaux alphorm.com™©

Page 221: Alphorm.com Formation Java, les fondamentaux

Parcourir le tableau• Soit utiliser length, soit for « each »

• La capacité du tableau est sa taille utile

• Permet typiquement de passer des options à l’application

• Utilisable même avec netbeans ou eclipse

Java, les fondamentaux alphorm.com™©

Page 222: Alphorm.com Formation Java, les fondamentaux

Convertir les éléments du tableau• Pour être exploitable, il faut souvent convertir en … entiers ?

� Integer.parseInt(str)

• Attention à prendre en compte des erreurs de type

� Gérer les exceptions

Rechercher le type

Java, les fondamentaux alphorm.com™©

� Rechercher le type

Page 223: Alphorm.com Formation Java, les fondamentaux

Ce qu’on a couvert• Les arguments de la ligne de commande

• Parcourir le tableau

• Convertir les éléments de ce tableau

Java, les fondamentaux alphorm.com™©

Page 224: Alphorm.com Formation Java, les fondamentaux

Utiliser des boucles

Coder une do/while

Java, les fondamentaux alphorm.com™©

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Coder une do/while

Page 225: Alphorm.com Formation Java, les fondamentaux

Plan• Les composants de la boucle do /while

• Les composants de la boucle while

• Les erreurs à ne pas faire

Java, les fondamentaux alphorm.com™©

Page 226: Alphorm.com Formation Java, les fondamentaux

Les composants de la boucle do/while• Un bloc de code à exécuter

• Une condition à respecter

• Une condition d’arrêt

Java, les fondamentaux alphorm.com™©

Page 227: Alphorm.com Formation Java, les fondamentaux

Les composants de la boucle while• Une ou plusieurs instructions dans un bloc

• Une condition pour arrêter la boucle

Java, les fondamentaux alphorm.com™©

Page 228: Alphorm.com Formation Java, les fondamentaux

Les erreurs à ne pas faire• Pour le « while », ne pas oublier les accolades si besoin

• Que la condition permette de sortir de la boucle

Java, les fondamentaux alphorm.com™©

Page 229: Alphorm.com Formation Java, les fondamentaux

Ce qu’on a couvert• Les composants de la boucle do /while

• Les composants de la boucle while

• Les erreurs à ne pas faire

Java, les fondamentaux alphorm.com™©

Page 230: Alphorm.com Formation Java, les fondamentaux

Utiliser des boucles

Développer une boucle for

Java, les fondamentaux alphorm.com™©

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Développer une boucle for

Page 231: Alphorm.com Formation Java, les fondamentaux

Plan• Les composants d’une boucle « for »

• Les avantages du for sur le while

• Les écritures limites du « for »

Java, les fondamentaux alphorm.com™©

Page 232: Alphorm.com Formation Java, les fondamentaux

Les composants d’une boucle for• Initialisation

• Tant que

• Incrément

Java, les fondamentaux alphorm.com™©

Page 233: Alphorm.com Formation Java, les fondamentaux

Les avantages du for sur le while• Le « for » possède toujours 3 parties

• On oublie moins la modification de la variable de boucle

• L’initialisation est plus évidente

Java, les fondamentaux alphorm.com™©

Page 234: Alphorm.com Formation Java, les fondamentaux

Les écritures limites du for• Utiliser un « for » pour une boucle infinie

• Oublier volontairement une partie du « for »

• Mettre des listes d’initialisation

• Mettre des listes d’incréments

Java, les fondamentaux alphorm.com™©

• Utiliser des conditions d’arrêt compliquées

Page 235: Alphorm.com Formation Java, les fondamentaux

Ce qu’on a couvert• Les composants d’une boucle « for »

• Les avantages du for sur le while

• Les écritures limites du « for »

Java, les fondamentaux alphorm.com™©

Page 236: Alphorm.com Formation Java, les fondamentaux

Utiliser des boucles

Utiliser des ArrayList dans

Java, les fondamentaux alphorm.com™©

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Utiliser des ArrayList dans une boucle for

Page 237: Alphorm.com Formation Java, les fondamentaux

Plan• Remarques sur le contenu d’une ArrayList

• Parcourir une ArrayList en utilisant « get »

• Parcourir une ArrayList en utilisant un itérateur

Java, les fondamentaux alphorm.com™©

Page 238: Alphorm.com Formation Java, les fondamentaux

Remarques sur le contenu d’une ArrayList• ArrayList est une implémentation tableau

• Depuis Java5, ArrayList peut être typé : ArrayList<String>

• Avant, ArrayList contient des Object

• Il est possible de récupérer le ième élément du tableau

Java, les fondamentaux alphorm.com™©

• L’ordre est conservé !

Page 239: Alphorm.com Formation Java, les fondamentaux

Parcourir une ArrayList avec get• Avec la méthode « get », on peut passer un indice

• Récupérer le ième élément

• La méthode « size » donne le nombre d’éléments présents

Java, les fondamentaux alphorm.com™©

Page 240: Alphorm.com Formation Java, les fondamentaux

Parcourir une ArrayList avec des itérateurs• Un itérateur est une sorte de « curseur » sur l’ArrayList

• Il peut avancer et donner l’élément courant

• L’indice auquel on accède n’est plus important

• Pratique si on veut juste parcourir du premier au dernier

Java, les fondamentaux alphorm.com™©

Page 241: Alphorm.com Formation Java, les fondamentaux

Ce qu’on a couvert• Remarques sur le contenu d’une ArrayList

• Parcourir une ArrayList en utilisant « get »

• Parcourir une ArrayList en utilisant un itérateur

Java, les fondamentaux alphorm.com™©

Page 242: Alphorm.com Formation Java, les fondamentaux

Utiliser des boucles

Comprendre la portée des

Java, les fondamentaux alphorm.com™©

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Comprendre la portée des variables

Page 243: Alphorm.com Formation Java, les fondamentaux

Plan• Définir la portée d’une variable

• Les variables locales et les paramètres

• Les variables champ de donnée

• Pourquoi n’y a t-il pas en Java de variable de portée globale ?

Java, les fondamentaux alphorm.com™©

Page 244: Alphorm.com Formation Java, les fondamentaux

Définir la portée d’une variable• La zone de code où l’accès à la variable est possible

• Plus la portée est réduite, plus la gestion de la ressource est simple

• La donnée disparaît elle-même dans certains cas

• Lorsqu’on sort de la portée d’une référence, on n’accède PLUS à l’objet

Java, les fondamentaux alphorm.com™©

• En Java, les blocs { … } limite la portée d’une variable

Page 245: Alphorm.com Formation Java, les fondamentaux

Les variables locales et paramètres• Une variable locale ne peut pas être utilisée en dehors de la méthode

dans laquelle elle est déclarée

• Pour garder la donnée, il faut la recopier dans une autre variable

� Retour de fonction

� Variable attribut

Java, les fondamentaux alphorm.com™©

� Variable attribut

• Les paramètres sont des sortes de variables locales

� La valeur est fournie par l’appelant

Page 246: Alphorm.com Formation Java, les fondamentaux

Les variables champ de donnée• Un attribut, ou champ de donnée a une portée limitée par la classe

• Il appartient à l’objet ou à la classe (cf static)

• L’attribut a donc une portée supérieure à celle d’une variable locale

Java, les fondamentaux alphorm.com™©

Page 247: Alphorm.com Formation Java, les fondamentaux

Pas de variables globales en Java• La portée ultime serait la variable globale

• Mais ce type de portée pose des problèmes

� Difficile de maîtriser qui utilise la variable

� Etat de la variable cahotique

Avec le « static », certains essaient de recréer la situation d’une portée

Java, les fondamentaux alphorm.com™©

• Avec le « static », certains essaient de recréer la situation d’une portée globale

Page 248: Alphorm.com Formation Java, les fondamentaux

Ce qu’on a couvert• Définir la portée d’une variable

• Les variables locales et les paramètres

• Les variables champ de donnée

• Pourquoi n’y a t-il pas en Java de variable de portée globale ?

Java, les fondamentaux alphorm.com™©

Page 249: Alphorm.com Formation Java, les fondamentaux

Utiliser des méthodes

Créer et appeler des

Java, les fondamentaux alphorm.com™©

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Créer et appeler des méthodes

Page 250: Alphorm.com Formation Java, les fondamentaux

Plan• Créer une méthode dans une classe

• Appeler une méthode

Java, les fondamentaux alphorm.com™©

Page 251: Alphorm.com Formation Java, les fondamentaux

Créer une méthode• Pour réaliser un traitement sur les données de l’objet

� Une méthode a une implémentation

• Pour proposer un service à l’extérieur

� Une méthode a une signature

Les variables : locale, paramètre, champ

Java, les fondamentaux alphorm.com™©

• Les variables : locale, paramètre, champ

• Le retour n’est pas obligatoire

Page 252: Alphorm.com Formation Java, les fondamentaux

Appeler une méthode• Il faut accéder à un objet de ce type

• Utiliser l’opérateur « . » pour sélectionner la méthode

• Passer des arguments

• Utiliser ou non le retour

Java, les fondamentaux alphorm.com™©

Page 253: Alphorm.com Formation Java, les fondamentaux

Ce qu’on a couvert• Créer une méthode dans une classe

• Appeler une méthode

Java, les fondamentaux alphorm.com™©

Page 254: Alphorm.com Formation Java, les fondamentaux

Utiliser des méthodes

Transmettre des arguments

Java, les fondamentaux alphorm.com™©

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Transmettre des arguments

Page 255: Alphorm.com Formation Java, les fondamentaux

Plan• Le passage des arguments à l’appel

• Le passage de primitives

• Le passage d’objets

Java, les fondamentaux alphorm.com™©

Page 256: Alphorm.com Formation Java, les fondamentaux

Le passage des arguments à l’appel• Lors de l’appel de la méthode, utiliser les parenthèses

� Les parenthèses seules si pas d’argument

� La liste des arguments sans leurs types

• Les arguments doivent correspondre aux types attendus

Il n’est pas possible d’omettre des arguments

Java, les fondamentaux alphorm.com™©

• Il n’est pas possible d’omettre des arguments

• Pas de valeurs par défaut sur les paramètres

Page 257: Alphorm.com Formation Java, les fondamentaux

Le passage de primitives• Les primitives sont toujours recopiées dans la méthode

• Les paramètres sont donc en IN

• Il n’y a aucun mot clé pour changer ce comportement

• On dit que les primitives sont passées par valeur

Java, les fondamentaux alphorm.com™©

Page 258: Alphorm.com Formation Java, les fondamentaux

Le passage des objets• Les objets sont référencés

• La copie entière des objets n’existe pas en Java

• Le passage ne concerne que les références des objets

• On dit que les objets sont passés par références

Java, les fondamentaux alphorm.com™©

Page 259: Alphorm.com Formation Java, les fondamentaux

Ce qu’on a couvert• Le passage des arguments à l’appel

• Le passage de primitives

• Le passage d’objets

Java, les fondamentaux alphorm.com™©

Page 260: Alphorm.com Formation Java, les fondamentaux

Utiliser des méthodes

Créer des méthodes et des

Java, les fondamentaux alphorm.com™©

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Créer des méthodes et des variables statiques

Page 261: Alphorm.com Formation Java, les fondamentaux

Plan• Créer des variables statiques et les utiliser

• Créer des méthodes statiques et les utiliser

Java, les fondamentaux alphorm.com™©

Page 262: Alphorm.com Formation Java, les fondamentaux

Créer des variables statiques et les utiliser• Définition d’une variable statique

� Une variable qui est allouée en dehors des objets

• La syntaxe pour déclarer un champ statique : « static »

• L’intérêt des champs statiques

Java, les fondamentaux alphorm.com™©

� Unicité de l’information pour tous les objets

� Accès aux données sans objet

• Utilisation dénoncée : une variable globale en Java !!

Page 263: Alphorm.com Formation Java, les fondamentaux

Créer des méthodes statiques et les utiliser• Syntaxe de la méthode statique : « static »

• Utilisation de la méthode statique : appel sur LA CLASSE

� D’où le nom : méthode de classe

• Intérêt : appeler une méthode sans créer un objet

Java, les fondamentaux alphorm.com™©

� Parce qu’aucun objet n’existe

� Parce que la création d’un objet coûte cher

� Parce qu’on n’a pas accès à l’objet

� …

Page 264: Alphorm.com Formation Java, les fondamentaux

Ce qu’on a couvert• Créer des variables statiques et les utiliser

• Créer des méthodes statiques et les utiliser

Java, les fondamentaux alphorm.com™©

Page 265: Alphorm.com Formation Java, les fondamentaux

Utiliser des méthodes

Utiliser des modificateurs

Java, les fondamentaux alphorm.com™©

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Utiliser des modificateurs

Page 266: Alphorm.com Formation Java, les fondamentaux

Plan• Les modificateurs : public, protected, private

• Visibilité par défaut, sans modificateur

• Visibilité « private »

• Visibilité « protected »

• Visibilité « public »

Java, les fondamentaux alphorm.com™©

• Visibilité « public »

Page 267: Alphorm.com Formation Java, les fondamentaux

Les modificateurs• Un mot-clé que l’on place avant la déclaration du membre

• Les modificateurs de visibilité

� Pour régler l’encapsulation

• Les mots-clés « static », « final », …

Java, les fondamentaux alphorm.com™©

Page 268: Alphorm.com Formation Java, les fondamentaux

La visibilité par défaut• Un membre sans visibilité

• Toutes les classes du même package peuvent y accéder

• Intéressant pour les infos/traitements partagés par le package

Java, les fondamentaux alphorm.com™©

Page 269: Alphorm.com Formation Java, les fondamentaux

La visibilité private• Pour protéger les données internes à l’objet

• Accessible uniquement par le code de la classe elle-même

• Les membres « private » font partie de l’implémentation

Java, les fondamentaux alphorm.com™©

Page 270: Alphorm.com Formation Java, les fondamentaux

La visibilité protected• Un accès intermédiaire

• Toutes les classes du package y accèdent

• Et aussi toutes les classes ‘filles’ … cf héritage…

• Permet d’ouvrir un accès en direction des futures classes étendues

Java, les fondamentaux alphorm.com™©

• Intéressant surtout pour les méthodes

Page 271: Alphorm.com Formation Java, les fondamentaux

La visibilité public• La visibilité la plus large

• Expose les accès à tout le code

• Intéressant surtout pour des méthodes

� Des champs de données « public » devraient être « final »

Java, les fondamentaux alphorm.com™©

• Correspond à des offres de services pour l’extérieur, qui appelle

• Attention à ne pas confondre visibilité et portée…

Page 272: Alphorm.com Formation Java, les fondamentaux

Ce qu’on a couvert• Les modificateurs : public, protected, private

• Visibilité par défaut, sans modificateur

• Visibilité « private »

• Visibilité « protected »

• Visibilité « public »

Java, les fondamentaux alphorm.com™©

• Visibilité « public »

Page 273: Alphorm.com Formation Java, les fondamentaux

Utiliser des méthodes

Utiliser la surcharge des

Java, les fondamentaux alphorm.com™©

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Utiliser la surcharge des méthodes

Page 274: Alphorm.com Formation Java, les fondamentaux

Plan• La syntaxe de la surcharge

• Appeler une méthode surchargée

• La surcharge et l’héritage

Java, les fondamentaux alphorm.com™©

Page 275: Alphorm.com Formation Java, les fondamentaux

La syntaxe de la surcharge• Plusieurs méthodes peuvent

� avoir le même nom,

� avec des paramètres différents

• La signature d’une méthode comprend son nom ET ses arguments

Java, les fondamentaux alphorm.com™©

Page 276: Alphorm.com Formation Java, les fondamentaux

Appeler une méthode surchargée• Choisir les arguments à passer

� Nombre d’arguments

� Type des arguments

• Le compilateur fait le bon appel

Tout est figé à la compilation

Java, les fondamentaux alphorm.com™©

• Tout est figé à la compilation

• On parle parfois de polymorphisme de surcharge

Page 277: Alphorm.com Formation Java, les fondamentaux

La surcharge et l’héritage• La surcharge est résolue à travers l’héritage

• Une classe fille peut enrichir l’interface en ajoutant une surcharge

• Ne pas confondre

� Surcharge

Java, les fondamentaux alphorm.com™©

� Redéfinition

Page 278: Alphorm.com Formation Java, les fondamentaux

Ce qu’on a couvert• La syntaxe de la surcharge

• Appeler une méthode surchargée

• La surcharge et l’héritage

Java, les fondamentaux alphorm.com™©

Page 279: Alphorm.com Formation Java, les fondamentaux

Utiliser l’encapsulation et les constructeurs

Créer des constructeurs

Java, les fondamentaux alphorm.com™©

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Créer des constructeurs

Page 280: Alphorm.com Formation Java, les fondamentaux

Plan• L’initialisation des objets

• Le rôle des constructeurs

• Les blocs d’initialisation

Java, les fondamentaux alphorm.com™©

Page 281: Alphorm.com Formation Java, les fondamentaux

L’initialisation des objets• Les champs de donnée sont mis à « 0 »

� 0 pour les entiers, 0.0 pour les flottants, \u0000 pour char

� Pour les références, null et false pour les booléens

• Cette initialisation par défaut est rarement suffisante

Il est possible de donner une valeur à la déclaration du champ

Java, les fondamentaux alphorm.com™©

• Il est possible de donner une valeur à la déclaration du champ

Page 282: Alphorm.com Formation Java, les fondamentaux

Le rôle des constructeurs• Par défaut, le compilateur génère un constructeur sans paramètre

• La réécriture de ce constructeur est possible

• Il est possible de créer d’autres constructeurs, avec des signatures différentes

• Le rôle du constructeur est d’initialiser les champs de l’objet

Java, les fondamentaux alphorm.com™©

• Le rôle du constructeur est d’initialiser les champs de l’objet

• Afin que l’objet soit dans un bon état

Page 283: Alphorm.com Formation Java, les fondamentaux

Les blocs d’initialisation• On peut simplement écrire un bloc {…} dans lequel on initialise les

champs

• Ce bloc peut être marqué « static », dans ce cas ce bloc sert à initialiser les champs « static »

Java, les fondamentaux alphorm.com™©

Page 284: Alphorm.com Formation Java, les fondamentaux

Ce qu’on a couvert• L’initialisation des objets

• Le rôle des constructeurs

• Les blocs d’initialisation

Java, les fondamentaux alphorm.com™©

Page 285: Alphorm.com Formation Java, les fondamentaux

Utiliser l’encapsulation et les constructeurs

Implémenter l’encapsulation

Java, les fondamentaux alphorm.com™©

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Implémenter l’encapsulation

Page 286: Alphorm.com Formation Java, les fondamentaux

Plan• L’encapsulation par la visibilité des membres

• L’encapsulation par la visibilité des classes

Java, les fondamentaux alphorm.com™©

Page 287: Alphorm.com Formation Java, les fondamentaux

L’encapsulation par la visibilité des membres• Les membres dans une classe sont par défaut accessible des autres

classes du package

• Les visibilités « public », « protected » et « private » permettent de régler ces accès

• Ces visibilités s’entendent par rapport à la classe

Java, les fondamentaux alphorm.com™©

• Cela n’a pas de rapport avec la portée

Page 288: Alphorm.com Formation Java, les fondamentaux

L’encapsulation par la visibilité des classes• Une classe par défaut n’est accessible que depuis son package

• Une classe peut être « public », et elle devient accessible de l’extérieur

• Cela n’a pas de rapport avec la portée

• Un package bien construite propose un ou plusieurs points d’entrée, mais ne montre pas toutes les classes qu’il contient

Java, les fondamentaux alphorm.com™©

mais ne montre pas toutes les classes qu’il contient

Page 289: Alphorm.com Formation Java, les fondamentaux

Ce qu’on a couvert• L’encapsulation par la visibilité des membres

• L’encapsulation par la visibilité des classes

Java, les fondamentaux alphorm.com™©

Page 290: Alphorm.com Formation Java, les fondamentaux

Concepts avancés

Utiliser l’héritage

Java, les fondamentaux alphorm.com™©

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Utiliser l’héritage

Page 291: Alphorm.com Formation Java, les fondamentaux

Plan• La relation de généralisation-spécialisation

• Les conséquences en termes d’héritage

• Le mot-clé « extends »

Java, les fondamentaux alphorm.com™©

Page 292: Alphorm.com Formation Java, les fondamentaux

La relation de généralisation-spécialisation• Une relation statique entre classe

• Qui relie un concept général à un concept spécialisé

� Chat->Félin

• Qui évite les doublons

Java, les fondamentaux alphorm.com™©

� Les membres de Félin sont hérités par le Chat

• Qui introduit des variations sur un thème

� Le Chat parle d’une façon spécifique

Page 293: Alphorm.com Formation Java, les fondamentaux

Les conséquences en terme d’héritage• Les membres sont tous hérités

• Les membres publiques de l’ancêtre restent publiques sur la classe fille

• Seuls les membres privés de l’ancêtre sont inaccessibles de la fille

• La classe fille peut compléter

Java, les fondamentaux alphorm.com™©

� Les méthodes en en ajoutant

� Les champs de données en en ajoutant

� Les méthodes en les redéfinissant

Page 294: Alphorm.com Formation Java, les fondamentaux

Le mot clé extends• La relation de généralisation-spécialisation correspond à une extension

� De type

� De comportement

• Le mot clé « extends » suffit à établir la relation

La classe fille se substitue alors à a sa mère

Java, les fondamentaux alphorm.com™©

• La classe fille se substitue alors à a sa mère

Page 295: Alphorm.com Formation Java, les fondamentaux

Ce qu’on a couvert• La relation de généralisation-spécialisation

• Les conséquences en termes d’héritage

• Le mot-clé « extends »

Java, les fondamentaux alphorm.com™©

Page 296: Alphorm.com Formation Java, les fondamentaux

Concepts avancés

Polymorphisme

Java, les fondamentaux alphorm.com™©

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Polymorphisme

Page 297: Alphorm.com Formation Java, les fondamentaux

Plan• La redéfinition des méthodes

• Mettre en œuvre le polymorphisme

• Savoir utiliser le polymorphisme

Java, les fondamentaux alphorm.com™©

Page 298: Alphorm.com Formation Java, les fondamentaux

La redéfinition des méthodes• La relation de généralisation-spécialisation suppose l’héritage des

membres de la classe mère par la classe fille

• Cette relation est utile lorsque la sous-classe est une spécialisation de la super-classe

• Cette spécialisation peut être due à une redéfinition de certains comportements

Java, les fondamentaux alphorm.com™©

comportements

� Redéclarer dans la sous-classe la même méthode que dans la super-classe, mais modifier le corps de la méthode

Page 299: Alphorm.com Formation Java, les fondamentaux

Mettre en œuvre le polymorphisme• Il suffit de :

� Disposer d’un héritage

� Redéfinir une méthode

� Pointer sur un objet en tant que super-classe

� Appeler la méthode redéfinie

Java, les fondamentaux alphorm.com™©

� Appeler la méthode redéfinie

Page 300: Alphorm.com Formation Java, les fondamentaux

Savoir utiliser le polymorphisme• Utiliser le polymorphisme lorsqu’on identifie une comportement qui

dépend du type de l’objet

� Ne pas tester le type des objets

• Moindre usage de la logique conditionnelle

• Arbitrage entre simplicité et sécurité des appels

Java, les fondamentaux alphorm.com™©

• Arbitrage entre simplicité et sécurité des appels

Page 301: Alphorm.com Formation Java, les fondamentaux

Ce qu’on a couvert• La redéfinition des méthodes

• Mettre en œuvre le polymorphisme

• Savoir utiliser le polymorphisme

Java, les fondamentaux alphorm.com™©

Page 302: Alphorm.com Formation Java, les fondamentaux

Concepts avancés

Utiliser des super-classes et

Java, les fondamentaux alphorm.com™©

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Utiliser des super-classes et des sous-classes

Page 303: Alphorm.com Formation Java, les fondamentaux

Plan• Des super-classes pour factoriser les membres

• Substituer des sous-classes aux super-classes

• Spécialiser les comportements des sous-classes

Java, les fondamentaux alphorm.com™©

Page 304: Alphorm.com Formation Java, les fondamentaux

Des super-classes pour factoriser• Lorsque des classes contiennent des membres communs

• Faire apparaître une super-classe qui regroupe ces membres communs

• Cette super-classe peut être abstraite

• Elle peut contenir une ou plusieurs méthodes abstraites

Java, les fondamentaux alphorm.com™©

Page 305: Alphorm.com Formation Java, les fondamentaux

Substituer des sous-classes • Une sous-classe doit être conforme à l’interface de la super-classe

• Elle contient 100% des données

• Elle répond à 100% des méthodes

� La signification des méthodes doit être conforme

Java, les fondamentaux alphorm.com™©

Page 306: Alphorm.com Formation Java, les fondamentaux

Spécialiser le comportement• Une sous-classe peut proposer des attributs et des méthodes en plus

• Elle peut redéfinir une ou plusieurs méthodes

� Même signature, mais corps différent

• Le comportement différent repose sur le fait que la méthode s’exécute différemment

Java, les fondamentaux alphorm.com™©

différemment

• Pas de mot-clé spécifique, mais une annotation optionnelle

Page 307: Alphorm.com Formation Java, les fondamentaux

Ce qu’on a couvert• Des super-classes pour factoriser les membres

• Substituer des sous-classes aux super-classes

• Spécialiser les comportements des sous-classes

Java, les fondamentaux alphorm.com™©

Page 308: Alphorm.com Formation Java, les fondamentaux

Concepts avancés

Ajouter un niveau

Java, les fondamentaux alphorm.com™©

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Ajouter un niveau d’abstraction

Page 309: Alphorm.com Formation Java, les fondamentaux

Plan• Les abstractions en Java : classes et interfaces

• Intérêts d’utiliser des abstractions

• Les abstractions dans le framework

• Analyse et conception

Java, les fondamentaux alphorm.com™©

Page 310: Alphorm.com Formation Java, les fondamentaux

Les abstractions en Java • Une classe abstraite

� Est une classe qui ne peut pas être instanciée

� Peut contenir des méthodes abstraites

� Contient en général des attributs et des méthodes implémentées

• Une interface

Java, les fondamentaux alphorm.com™©

• Une interface

� Est un type non instanciable

� Ne peut contenir aucune implémentation d’instance

Page 311: Alphorm.com Formation Java, les fondamentaux

Intérêts des abstractions• Une abstraction est stable

• Le code qui utilise une abstraction ne bouge pas

• Une abstraction sert de point de stabilité entre modules

Java, les fondamentaux alphorm.com™©

Page 312: Alphorm.com Formation Java, les fondamentaux

Les abstractions dans le framework• Exemple d’une classe abstraite : AbstractList

� On hérite d’une classe abstraite pour profiter d’une partie d’implémentation

• Exemple d’une interface : ActionListener

� Pour introduire une fonction de rappel en face d’un bouton

Java, les fondamentaux alphorm.com™©

Page 313: Alphorm.com Formation Java, les fondamentaux

Analyse et conception• Une abstraction en analyse

� Une classe abstraite pour factoriser des données et des traitements

� Exemple de la bibliothèque

• Une abstraction en conception

Indépendance des modules via une interface

Java, les fondamentaux alphorm.com™©

� Indépendance des modules via une interface

Page 314: Alphorm.com Formation Java, les fondamentaux

Ce qu’on a couvert• Les abstractions en Java : classes et interfaces

• Intérêts d’utiliser des abstractions

• Les abstractions dans le framework

• Analyse et conception

Java, les fondamentaux alphorm.com™©

Page 315: Alphorm.com Formation Java, les fondamentaux

Concepts avancés

Les interfaces en Java

Java, les fondamentaux alphorm.com™©

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Les interfaces en Java

Page 316: Alphorm.com Formation Java, les fondamentaux

Plan• Définition et syntaxe des interfaces

• Définir une interface

• Implémenter une interface

• Cas d’usage connus

Java, les fondamentaux alphorm.com™©

Page 317: Alphorm.com Formation Java, les fondamentaux

Définition et syntaxe d’une interface• Une interface est un type sans implémentation

� Dans son propre fichier

• Impossible d’implémenter les méthodes

• Les méthodes sont forcément public

Java, les fondamentaux alphorm.com™©

• Si des attributs existent, ils sont « static », « final » et « public »

Page 318: Alphorm.com Formation Java, les fondamentaux

Définir une interface• En tant que code client

� J’ai besoin de telles et telles méthodes

� Mais je n’ai pas besoin de savoir comment elles sont implémentées

Java, les fondamentaux alphorm.com™©

Page 319: Alphorm.com Formation Java, les fondamentaux

Implémenter une interface• S’engager à fournir une implémentation pour chaque méthode prévue

par l’interface

• Le compilateur vérifie la présence de cette implémentation

Java, les fondamentaux alphorm.com™©

Page 320: Alphorm.com Formation Java, les fondamentaux

Cas d’usage connus• Interconnexions entre modules

• Définition des services d’objets distribués

� Sous-interface de Remote

• Définition des webservices

Java, les fondamentaux alphorm.com™©

• Abstraction des conteneurs : List, Set, Map…

Page 321: Alphorm.com Formation Java, les fondamentaux

Ce qu’on a couvert• Définition et syntaxe des interfaces

• Définir une interface

• Implémenter une interface

• Cas d’usage connus

Java, les fondamentaux alphorm.com™©

Page 322: Alphorm.com Formation Java, les fondamentaux

La gestion des erreurs

Les différents types d’erreur

Java, les fondamentaux alphorm.com™©

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Les différents types d’erreur

Page 323: Alphorm.com Formation Java, les fondamentaux

Plan• Les erreurs de syntaxe

• Les erreurs de logique, de programmation

• Les erreurs exceptionnelles dues à l’environnement

Java, les fondamentaux alphorm.com™©

Page 324: Alphorm.com Formation Java, les fondamentaux

Les erreurs de syntaxe• Empêchent la compilation

• Seront corrigées pour livrer

• Attention, en Java la compilation de chaque classe est indépendante

• Exemple : erreur de syntaxe empêchant la compilation

Java, les fondamentaux alphorm.com™©

Page 325: Alphorm.com Formation Java, les fondamentaux

Les erreurs de logique, de programmation• « Une bonne lecture élimine 80% des erreurs »

• N’ont pas à être gérées

• Doivent être corrigées par le développeur

� Garder un code lisible

Java, les fondamentaux alphorm.com™©

� Réfléchir la conception avant d’écrire le code

• Exemple : une variable référence n’est pas initialisée

Page 326: Alphorm.com Formation Java, les fondamentaux

Les erreurs exceptionnelles• Dues à l’environnement d’exécution, difficiles à prévoir

• Sont souvent « gérées » : le compilateur les détecte

• Typiquement non prises en compte lors du prototypage

• Exemple : un fichier n’existe pas alors qu’il devrait

Java, les fondamentaux alphorm.com™©

Page 327: Alphorm.com Formation Java, les fondamentaux

Ce qu’on a couvert• Les erreurs de syntaxe

• Les erreurs de logique, de programmation

• Les erreurs exceptionnelles dues à l’environnement

Java, les fondamentaux alphorm.com™©

Page 328: Alphorm.com Formation Java, les fondamentaux

La gestion des erreurs

Présentation des types

Java, les fondamentaux alphorm.com™©

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Présentation des types d’exceptions

Page 329: Alphorm.com Formation Java, les fondamentaux

Plan• Nature de l’exception

• Les exceptions runtime

• Les exceptions gérées

• Les exceptions de l’utilisateur

Java, les fondamentaux alphorm.com™©

Page 330: Alphorm.com Formation Java, les fondamentaux

Nature de l’exception• Une exception est un objet

• D’une classe qui hérite de java.lang.Exception

• Cet objet est créé lors de la levée de l’exception

• Il est récupéré dans le bloc du gestionnaire d’erreur

Java, les fondamentaux alphorm.com™©

Page 331: Alphorm.com Formation Java, les fondamentaux

Les exceptions runtime• Exceptions qui correspondent à des erreurs de programmation

• Ne sont pas gérées : non signalées par le compilateur

• NullPointerException : accès à un membre via une référence null

• IllegalArgumentException : l’argument ne correspond pas à l’attendu

Java, les fondamentaux alphorm.com™©

• ArrayIndexOutOfBoundException : débordement d’un tableau

• ArithmeticException : exceptions comme la division entière par zéro

Page 332: Alphorm.com Formation Java, les fondamentaux

Les exceptions gérées• Ces exceptions correspondent à des erreurs dues à l’environnement

� Ressources non disponibles, manque de droits d’accès,…

• Spécifiées par les méthodes

• Prise en compte par le compilateur qui oblige à gérer l’appel

Java, les fondamentaux alphorm.com™©

• FileNotFoundException : fichier non trouvé

• IOException : problème d’accès aux entrées-sorties

• SqlException : erreur remontée du SGBD

Page 333: Alphorm.com Formation Java, les fondamentaux

Les exceptions de l’utilisateur• Créer une classe qui hérite de java.lang.Exception

� Attributs, méthodes, constructeurs comme toute classe

• Créer un objet de cette classe et utiliser « throw »

• Les erreurs bas-niveau doivent être signalées par des exceptions

Java, les fondamentaux alphorm.com™©

Page 334: Alphorm.com Formation Java, les fondamentaux

Ce qu’on a couvert• Nature de l’exception

• Les exceptions runtime

• Les exceptions gérées

• Les exceptions de l’utilisateur

Java, les fondamentaux alphorm.com™©

Page 335: Alphorm.com Formation Java, les fondamentaux

La gestion des erreurs

Utiliser Javadocs pour

Java, les fondamentaux alphorm.com™©

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Utiliser Javadocs pour rechercher des exceptions

Page 336: Alphorm.com Formation Java, les fondamentaux

Plan• Le rôle du compilateur pour les exceptions gérées

• La spécification des exceptions par les méthodes

Java, les fondamentaux alphorm.com™©

Page 337: Alphorm.com Formation Java, les fondamentaux

Le rôle du compilateur• Le compilateur lit la spécification des exceptions

• Il engage le développeur à gérer les exceptions

• Ce contrôle n’est pas réalisé pour les exceptions runtime

Java, les fondamentaux alphorm.com™©

Page 338: Alphorm.com Formation Java, les fondamentaux

La spécification des exceptions• La documentation référence les exceptions levées par les méthodes

� Trouver la classe qui contient la méthode

� Trouver la spécification des exceptions

• Pour les exceptions gérées, le compilateur nous guide

Exemple : Integer.parseInt(…)

Java, les fondamentaux alphorm.com™©

• Exemple : Integer.parseInt(…)

Page 339: Alphorm.com Formation Java, les fondamentaux

Ce qu’on a couvert• Le rôle du compilateur pour les exceptions gérées

• La spécification des exceptions par les méthodes

Java, les fondamentaux alphorm.com™©

Page 340: Alphorm.com Formation Java, les fondamentaux

La gestion des erreurs

Ecrire du code pour gérer

Java, les fondamentaux alphorm.com™©

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Ecrire du code pour gérer les exceptions

Page 341: Alphorm.com Formation Java, les fondamentaux

Plan• Gérer une exception détectée par le compilateur

• Lever une exception

• Créer son propre type d’exception

• Réinterpréter une exception

Java, les fondamentaux alphorm.com™©

Page 342: Alphorm.com Formation Java, les fondamentaux

Gérer une exception • Le mot-clé « try » permet d’isoler le code nominal

• Correspond à une méthode

• Suivi de un ou plusieurs blocs « catch » qui sont typés par une classe d’exception

• Soit le try s’exécute puis le code après les catch

Java, les fondamentaux alphorm.com™©

• Soit le try s’exécute puis le code après les catch

• Soit le try est interrompu et un catch est exécuté, puis le code après le catch

• Possibilité de placer un bloc « finally », toujours exécuté

Page 343: Alphorm.com Formation Java, les fondamentaux

Lever une exception• Utiliser le mot-clé « throw » pour lever une exception

• Cette exception est simplement un objet créé pour l’occasion

• Branchement à l’exécution vers le plus proche « catch »

� Remonte vers les appelants en cherchant un bloc catch qui accepte l’objet levé

Java, les fondamentaux alphorm.com™©

levé

• Il faut spécifier la levée d’exception dans la signature de la méthode

� Sauf pour une exception runtime

Page 344: Alphorm.com Formation Java, les fondamentaux

Créer son propre type d’exception• Créer une classe qui hérite (au moins) de java.lang.Exception

• Déclarer les membres et constructeurs nécessaires

� Pour capter le contexte d’erreur (à la construction de l’objet, « throw »)

� Pour restituer les infos sur l’erreur (dans un « catch »)

Lever cette exception lorsqu’on détecte les situations irrécupérables

Java, les fondamentaux alphorm.com™©

• Lever cette exception lorsqu’on détecte les situations irrécupérables

Page 345: Alphorm.com Formation Java, les fondamentaux

Réinterpréter une exception• Dans un bloc catch, relancer une exception

• Pour réinterpréter l’exception, la nouvelle exception étant :

� Plus claire dans le contexte de l’utilisateur

� Traduite dans la culture du poste

D’une granularité différente de l’exception d’origine

Java, les fondamentaux alphorm.com™©

� D’une granularité différente de l’exception d’origine

� L’occasion de rétablir l’état du système

Page 346: Alphorm.com Formation Java, les fondamentaux

Ce qu’on a couvert• Gérer une exception détectée par le compilateur

• Lever une exception

• Créer son propre type d’exception

• Réinterpréter une exception

Java, les fondamentaux alphorm.com™©

Page 347: Alphorm.com Formation Java, les fondamentaux

Vue d’ensemble

Créer des packages et des

Java, les fondamentaux alphorm.com™©

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Créer des packages et des fichier .jar

Page 348: Alphorm.com Formation Java, les fondamentaux

Plan• Les packages

• Les fichiers .jar

• Utiliser des fichiers .jar pour livrer une application

Java, les fondamentaux alphorm.com™©

Page 349: Alphorm.com Formation Java, les fondamentaux

Les packages• Conceptuellement : un regroupement de classes

• Physiquement : un répertoire qui contient les fichiers .java

• Logiquement : un sous-système qui isole des classes travaillant ensemble et proposant des points d’entrée

Java, les fondamentaux alphorm.com™©

Page 350: Alphorm.com Formation Java, les fondamentaux

Les fichiers .jar• Créé par l’outil jar (disponible dans le jdk)

• Fichier compressé zippé

• Contient tout et n’importe quoi, mais surtout :

� Des fichiers .class (binaire Java)

Java, les fondamentaux alphorm.com™©

� Un manifeste : description du contenu, en particulier la classe qui contient le « main »

Page 351: Alphorm.com Formation Java, les fondamentaux

Utiliser les fichiers .jar pour livrer • Il n’y a pas d’exe en Java

• Pour livrer une bibliothèque de classes

� Les classes restent organisées en packages, répertoires

• Pour livrer une application

Java, les fondamentaux alphorm.com™©

� En spécifiant la classe principale

Page 352: Alphorm.com Formation Java, les fondamentaux

Ce qu’on a couvert• Les packages

• Les fichiers .jar

• Utiliser des fichiers .jar pour livrer une application

Java, les fondamentaux alphorm.com™©

Page 353: Alphorm.com Formation Java, les fondamentaux

Vue d’ensemble

Architecture en 2 ou 3

Java, les fondamentaux alphorm.com™©

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Architecture en 2 ou 3 niveaux

Page 354: Alphorm.com Formation Java, les fondamentaux

Plan• Architecture et niveaux

• Architecture 2 niveaux

• Architecture 3 niveaux

Java, les fondamentaux alphorm.com™©

Page 355: Alphorm.com Formation Java, les fondamentaux

Architecture et niveaux• L’architecture est l’effort d’organisation générale de l’application

• La conception devra se conformer à l’architecture

• Faire plusieurs niveaux permet de séparer les responsabilités

� Améliorer la maintenabilité de chaque niveau

Java, les fondamentaux alphorm.com™©

� Améliorer la cohérence

� Favoriser l’évolutivité

Page 356: Alphorm.com Formation Java, les fondamentaux

Architecture 2 niveaux• Séparer la présentation et des données

• Répartir ou pas les services de l’application

• Architecture logique, pas forcément physique

• Client-serveur

Java, les fondamentaux alphorm.com™©

• En Java, la communication est : socket, RMI, jdbc…

Page 357: Alphorm.com Formation Java, les fondamentaux

Architecture 3 niveaux• Présentation – services – données

• Architecture logique qui peut correspondre ou pas au physique

• En Java :

� présentation sous HTML, JSP, Servlet, Swing….

Java, les fondamentaux alphorm.com™©

� services : classes Java, Servlet, …

� Données accessibles via javabeans, EJB, jdbc…

Page 358: Alphorm.com Formation Java, les fondamentaux

Ce qu’on a couvert• Architecture et niveaux

• Architecture 2 niveaux

• Architecture 3 niveaux

Java, les fondamentaux alphorm.com™©

Page 359: Alphorm.com Formation Java, les fondamentaux

Vue d’ensemble

Exemples d’applications Java

Java, les fondamentaux alphorm.com™©

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Exemples d’applications Java

Page 360: Alphorm.com Formation Java, les fondamentaux

Plan• L’application standalone, console

• L’application Applet

• L’application Servlet, associée à JSP

• L’application Android

Java, les fondamentaux alphorm.com™©

Page 361: Alphorm.com Formation Java, les fondamentaux

L’application standalone, console• Avec une classe qui a un « main »

• Cette méthode est le point d’entrée de l’application

• Le main est exécuté séquentiellement

• Une ihm graphique peut être gérée

Java, les fondamentaux alphorm.com™©

• Exécuté sur le système d’exploitation

• Cas particulier de Java Web Start

Page 362: Alphorm.com Formation Java, les fondamentaux

L’application Applet• Une applet hérite de Applet

• Instanciée et exécutée dans le contexte d’un navigateur

• Un cycle de vie spécifique

• Accès limité au système

Java, les fondamentaux alphorm.com™©

• Déploiement via un accès http

Page 363: Alphorm.com Formation Java, les fondamentaux

L’application Servlet• Un servlet hérite de Servlet

• Est instanciée et exécutée sur un serveur

� Conteneur de servlet

• Répond aux méthodes HTTP (Get, Post…)

Java, les fondamentaux alphorm.com™©

• Peut écrire du HTML, mais plutôt logique applicative

• Est souvent associée à la technique des JSP

Page 364: Alphorm.com Formation Java, les fondamentaux

L’application Android• Une application Java spéciale

� Machine virtuelle spécifique

� API spécifique

� Cycle de vie contraint

• Typiquement construite avec un IDE spéciale

Java, les fondamentaux alphorm.com™©

• Typiquement construite avec un IDE spéciale

Page 365: Alphorm.com Formation Java, les fondamentaux

Ce qu’on a couvert• L’application standalone, console

• L’application Applet

• L’application Servlet, associée à JSP

• L’application Android

Java, les fondamentaux alphorm.com™©

Page 366: Alphorm.com Formation Java, les fondamentaux

Conclusion

Conclusion

Java, les fondamentaux alphorm.com™©

Fabien BrissonneauConsultant, concepteur et formateurObjets Logiciels

Site : http://www.alphorm.comBlog : http://www.alphorm.com/blogForum : http://www.alphorm.com/forum

Conclusion

Page 367: Alphorm.com Formation Java, les fondamentaux

Plan• Présentation de la technologie Java

• Penser en termes objet

• Présentation du langage Java

• Utiliser des variables primitives

• Utiliser des objets

• Concepts avancés de l’objet

• Gestion des erreurs

• Vue d’ensemble

Java, les fondamentaux alphorm.com™©

• Utiliser des objets

• Utiliser des opérateurs et des décisions

• Créer et utiliser des tableaux

• Utiliser des structures en boucles

• Utiliser des méthodes et la surcharge

• Utiliser l’encapsulation et les constructeurs

Page 368: Alphorm.com Formation Java, les fondamentaux

Pour continuer …• Le module avancé de la formation Java

• Ne pas oublier la documentation Javadoc, en ligne ou sur le poste

Java, les fondamentaux alphorm.com™©