Cursus
Formation JAVA Programmation Orientée Objet: les fondamentaux
Objectifs
Décrire les bases de Java.
Utiliser la syntaxe Java.
Implémenter et utiliser des méthodes statiques.
Tester l’encapsulation en Java.
Utiliser la généricité.
Utiliser l’héritage.
Utiliser la réflexion en Java.
Créer la documentation de son code avec Javadoc.
Gérer les exceptions.
Gérer les entrées/sorties.
Implémenter des tests unitaires.
Utiliser une API de log.
Pré-requis
Participants
Programme de formation
INTRODUCTION À JAVA
Historique
Les différentes plates-formes Java
- Java SE, Java EE, Java ME et Android
Processus de standardisation des technologies Java
- JCP, JSR...
Les différents IDE Java
- Eclipse, Intelli J...
Travaux pratiques
- Mise en oeuvre d'un HelloWorld
ASPECTS DE BASE DE LA SYNTAXE
Variables et types de données
Les opérateurs Java et les expressions
Conversion de types
Travaux pratiques
- Utilisations de variables et de types Java
Les instructions
- Conditionnelles, itératives...
Définition et utilisation de tableaux
Travaux pratiques
- Codage de quelques algorithmes de manipulation de tableau
MÉTHODES ET PARAMÈTRES
Définition de méthodes statiques
Surcharge de méthodes
Méthodes récursives
Travaux pratiques
- Mise en oeuvre d'une librairie simplifiée de calculs mathématiques
PROGRAMMATION ORIENTÉE OBJET EN JAVA (POO)
Présentation de la terminologie spécifique à la POO
Définition d'une classe et instanciation d’objets
Attributs et méthodes
Mise en oeuvre de l'encapsulation
- Constructeurs, getters/setters et propriétés...
Assistance proposée par Eclipse pour la mise en oeuvre de vos classes
Définition et utilisation de paquetage (package)
Le paquetage java.lang
Travaux pratiques
- Développement progressif d'une classe en y injectant les différents concepts un à un
UTILISATION DE LA GÉNÉRICITÉ
Introduction à la généricité
Mise en oeuvre de méthodes génériques
Travaux pratiques
- Implémentation et utilisation de méthodes génériques
Mise en oeuvre d'une classe générique
Travaux pratiques
- Mise en oeuvre d'une classe générique
Présentation du paquetage java.util
CONCEPTS AVANCÉS DE PROGRAMMATION ORIENTÉE OBJET
Qu'est ce que l’héritage ?
Mise en oeuvre de l'héritage
Le polymorphisme
Travaux pratiques
- Implémentation d'une hiérarchie de classes
Méthodes et classes abstraites
Notions d'interfaces
Les différents niveaux de visibilités en Java
Intégration de ce concept dans l'IDE Eclipse
Travaux pratiques
- Utilisation de types abstraits pour la réalisation d'un driver
COMPLÉMENT DE PROGRAMMATION ORIENTÉE OBJET
Classes internes et classes anonymes
Les lambda functions
Travaux pratiques
- Gestion d'événements en utilisation diverses stratégies
La réflexion Java (méta-programmation)
La notion d'annotation
Travaux pratiques
- Utilisation de la réflexion
DOCUMENTER VOS CODES
Présentation de l'outil Javadoc
Marqueurs spécifiques à Javadoc
Travaux pratiques
- Rédaction d'une documentation et génération via Javadoc
Les Javadocs des API standards de Java
TRAITEMENT D'EXCEPTIONS
Qu'est ce qu’une exception ?
Déclencher une exception
Intercepter une exception
Relayer une exception
Travaux pratiques
- Intercepter et traiter les exceptions
Implémentation d'une classe d’exceptions
Travaux pratiques
- Réalisation d'une classe d’exceptions
Le « try-with-resources »
LA GESTION DES I/O
Le paquetage java.io
Accès à des fichiers binaires
Traiter correctement les erreurs
Travaux pratiques
- Manipulation de fichiers binaires
Accès à des fichiers textes
Contrôler les différents encodages
Travaux pratiques
- Manipulation de fichiers textes
MISE EN OEUVRE DE TESTS UNITAIRES EN JAVA
Pourquoi faire des tests unitaires ?
Présentation de Junit
Intégration dans Eclipse
Travaux pratiques
- Réalisation d'une batterie de jeux de tests unitaires
UTILISATION D'API DE LOG
Les différentes API de log
- java.util.logging, Log4J...
Les différents niveaux de logs
Configuration du moteur Log4J
Les pièges à éviter
Outil graphique de visualisation de logs : chainsaw
Travaux pratiques
- Production de logs et prises de mesures de performances pour valider les temps de réponses en fonction de la bonne (ou non) utilisation de l'API de log