EPSI B3 - Java
Le langage Java
Introduction
L’environnement
Oracle JDK et Open JDK
Un bref historique des versions
Installation
Configuration d’Eclipse
Compilation & exécution
Un premier programme
La compilation
L’exécution
La liaison dynamique
Le classpath
Bibliothèques Java : les fichiers JAR
Création d’un projet dans Eclipse
Exercice
La structure fondamentale du langage
Les instructions
Le typage
Les blocs de code
Les commentaires
Le formatage du code
Les conventions de nommage
Les mots-clés
Les types primitifs
Le type booléen : boolean
Le type caractère : char
Les types entiers : byte, short, int, long
Les types à virgule flottante : float, double
Les classes enveloppes
L’autoboxing
Les opérateurs
L’opérateur d’affectation
Les opérateurs arithmétiques
Les opérateurs arithmétiques unaires
L’opérateur de concaténation de chaînes
Les opérateurs relationnels
Les opérateurs logiques
L’opérateur ternaire
Les opérateurs
bitwise
Les opérateurs de décalage
Le transtypage (cast)
Opérateur et assignation
L’opérateur .
L’opérateur ,
Les structures de contrôle
if-else
return
while
do-while
for
for amélioré
break-continue
libellé
switch
Les tableaux
Initialisation
Création avec new
Accès aux éléments d’un tableau
Tableau multi-dimensionnel
Conversion en chaîne de caractères
Égalité de deux tableaux
Tri & recherche
Copie d’un tableau
Typage d’un tableau
Conversion d’un tableau en liste
Une première classe
Déclarer une classe
Anatomie d’une classe
Ajouter des méthodes
La méthode main
Exécuter le programme en ligne de commandes
Exécuter le programme depuis Eclipse
Attributs & méthodes
Les attributs
La portée
L’initialisation
attributs finaux
Attributs de classe
Attributs de classe finaux
Les méthodes
La portée
La valeur de retour
Les paramètres
Paramètre final
Les variables
Méthodes de classe
Surcharge de méthode : overloading
Portée des noms et this
Principe d’encapsulation
Cycle de vie d’un objet
Le constructeur
Paramètres de constructeur
Valeur par défaut des attributs
Constructeur par défaut
Constructeur privé
Appel d’un constructeur dans un constructeur
Appel d’une méthode dans un constructeur
Injection de dépendances par le constructeur
Le bloc d’initialisation
Le bloc d’initialisation de classe
Mémoire heap et stack
Le ramasse-miettes
La méthode finalize
Les packages
Déclaration d’un package
Sous package
Nom d’un package
Nom complet d’une classe
Import de noms
La portée de niveau package
Le fichier package-info.java
Héritage et composition
L’héritage (is-a)
Héritage et constructeur
Héritage simple : Object
Héritage et affectation
Le mot-clé instanceof
La portée protected
Héritage des méthodes et attributs de classe
Héritage et final
La composition (has-a)
Le polymorphisme
Principe du polymorphisme
Une exception : les méthodes privées
Redéfinition et signature de méthode
Le mot-clé super
L’annotation @Override
Les méthodes de classe
Méthode finale
Constructeur et polymorphisme
Masquage des attributs par héritage
Le principe du ouvert/fermé
Les classes abstraites
Déclarer une classe abstraite
Déclarer une méthode abstraite
La classe Object
La méthode equals
La méthode hashCode
La méthode toString
La méthode finalize
La méthode clone
La méthode getClass
Les méthodes de concurrence
La classe String
String et tableau de caractères
Quelques méthodes utilitaires
Construction d’une instance de String
Immutabilité des chaînes de caractères
La classe StringBuilder
Formatage de texte
Les expressions régulières
Les exceptions
Qu’est-ce qu’une exception ?
Signaler une exception
Traiter une exception
Propagation d’une exception
Exceptions et polymorphisme
Le bloc finally
Le try-with-resources
Hiérarchie applicative d’exception
Exception cause
Les erreurs et les exceptions runtime
Choix entre checked et unchecked
Les énumérations
Les méthodes d’une énumération
Égalité entre énumérations
Support de switch
Génération d’une énumération
Ajout de méthodes et d’attributs
Ajout de constructeurs
Les interfaces
Déclaration d’une interface
Implémentation d’une interface
Attributs et méthodes statiques
Héritage d’interface
Les interfaces marqueurs
Implémentation par défaut
La ségrégation d’interface
L’inversion de dépendance
Méthodes et classes génériques
L’exemple de la classe ArrayList
Création et assignation d’une classe générique
Notation en diamant
Substitution et type générique
Écrire une méthode générique
Écrire une classe générique
Limitations
Les collections
Les listes
La classe ArrayList
La classe LinkedList
La classe ArrayDeque
La classe PriorityQueue
Les classes Vector et Stack
Les interfaces pour les listes
Les ensembles (set)
La classe TreeSet
La classe HashSet
La classe LinkedHashSet
Les interfaces pour les ensembles
Copie d’une collection dans un tableau
Les tableaux associatifs (maps)
La classe TreeMap
La classe HashMap
La classe LinkedHashMap
Les classes Dictionary et Hashtable
Les interfaces pour les tableaux associatifs
La classe outil Collections
Les entrées/sorties
InputStream et classes concrètes
OutputStream et classes concrètes
Flux orientés caractères
Reader et classes concrètes
Writer et classes concrètes
Les décorateurs de flux
La classe Scanner
Fichiers et chemins
Accès au réseau
La sérialisation d’objets
Donnée transient
Identifiant de version de sérialisation
Les dates
Date : la classe historique
Calendar
L’API Date/Time
Les Dates
La classe Instant
Période et durée
Formatage des dates
Lecture des dates
Programmation fonctionnelle et lambdas
Les fonctions anonymes : les lambdas
Syntaxe des lambdas
Usage des lambdas
Lambda et closure
Les interfaces fonctionnelles
L’opérateur :: de référence de méthode
La classe Optional
Streams
Création d’un stream
La réduction
La collecte
Le filtrage
Le mapping
Le parallélisme
Les classes internes
Les classes internes static
Les classes internes
Les classes anonymes
Accès aux éléments de l’objet englobant
Classe interne à une méthode
Interface et énumération
Plusieurs classes dans un même fichier
Les annotations
Utilisation des annotations
Déclaration d’une annotation
Rétention d’une annotation
Utilisation des annotations par introspection
Les modules
Des modules pour améliorer la sécurité
Des modules pour plus de modularité
Le descripteur de module (module-info.java)
Dépendance à d’autres modules
Exposer des packages
Utiliser un service
Fournir un service
Le module anonyme
La notion de module path
EPSI B3 - Java
»
Index
Index