Apprenez à programmer en Java
Cyrille Herby
Openclassrooms
Eyrolles
Première partie - Bien commencer en Java1
1 Installer les outils de développement
3
Installer les outils nécessaires3
JRE ou JDK
3
Eclipse IDE
5
Votre premier programme10
Hello World
13
En résumé15
2 Les variables et les opérateurs
17
Petit rappel17
Les différents types de variables20
Les variables de type numérique
20
Des variables stockant un caractère
21
Des variables de type booléen
21
Le type String
22
Les opérateurs arithmétiques24
Les conversions ou « cast »26
Depuis Java 7 : le formatage des nombres29
En résumé30
3 Lire les entrée clavier
31
La classe Scanner31
Récupérer ce que vous tapez32
En résumé35
4 Les conditions
37
La structure if... else37
Les conditions multiples
40
La structure switch41
La condition ternaire42
En résumé43
5 Les boucles
45
La boucle while45
La boucle do... while49
La boucle for50
En résumé52
6 TP : conversion Celsius-Fahrenheit
53
Élaboration53
Correction55
Explications concernant ce code57
7 Les tableaux
59
Tableau à une dimension59
Tableaux multidimensionnels60
Utiliser et rechercher dans un tableau61
Explications sur la recherche
63
En résumé66
8 Les méthodes de classe
67
Quelques méthodes utiles67
Des méthodes concernant les chaînes de caractères
67
Créer sa propre méthode70
La surcharge de méthode73
En résumé75
Deuxième partie - Java orienté objet77
9 Votre première classe
79
Structure de base79
Les constructeurs81
Accesseurs et mutateurs86
Les variables de classe92
Le principe d'encapsulation94
En résumé94
10 L'héritage
97
Le principe de l'héritage97
Le polymorphisme102
Depuis Java 7 : la classe Object108
En résumé109
11 Modéliser ses objets grâce à UML
111
Présentation d'UML111
Modéliser ses objets113
Modéliser les liens entre les objets113
En résumé117
12 Les packages
119
Création d'un package119
Droits d'accès entre les packages121
En résumé122
12 Les packages
119
Création d'un package119
Droits d'accès entre les packages121
En résumé122
13 Les classes abstraites et les interfaces
123
13 Les classes abstraites
123
Une classe Animal très abstraite
125
Étoffons notre exemple
127
Les interfaces132
Votre première interface
133
Le pattern strategy137
Posons le problème
137
Un problème supplémentaire
144
En résumé156
14 Java 8 ou la révolution des interfaces
159
Des méthodes statiques159
Et des méthodes par défaut !160
En résumé162
15 Les exceptions
163
Le bloc try(...) catch(...)163
Les exceptions personnalisées166
La gestion de plusieurs exceptions170
Depuis Java 7 : le multi-catch172
16 Les énumérations
175
Avant les énumérations175
Une solution : les enum176
En résumé180
17 Les collections d'objets
181
Les différents types de collections181
Les objets List182
L'objet LinkedList
182
L'objet ArrayList
184
Les objets Map186
L'objet Hashtable
186
L'objet HashMap
187
Les objets Set187
L'objet HashSet
187
En résumé188
18 La généricité en Java
189
Principe de base189
Plus loin dans la généricité193
Généricité et collections195
Héritage et généricité196
En résumé201
19 Les flux d'entrées-sorties
203
Utilisation de java.io203
L'objet File
203
Les objets FilelnputStream et FileOutputStream
205
Les objets FilelnputStream et FilterOutputStream
209
Les objets ObjectlnputStream et ObjectOutputStream
214
Les objets CharArray(Writer/Reader) et String(Writer/Reader)
219
Les classes File (Writer/Reader) et Print(Writer/Reader)
221
Utilisation de java.nio222
Depuis Java 7 : NIO.2226
La copie de fichier
228
Le déplacement de fichier
228
L'ouverture des flux
229
Le pattern decorator230
En résumé234
20 Java et la réflexivité
237
L'objet Class237
Connaître la superclasse d'une classe
238
Connaître la liste des interfaces d'une classe
238
Connaître la liste des méthodes de la classe
239
Connaître la liste des champs (variable de classe ou d'instance)
240
Connaître la liste des constructeurs de la classe
241
Instanciation dynamique241
En résumé245
21 Classes anonymes, interfaces fonctionnelles, lambdas et références de méthode
247
Les classes anonymes247
Les interfaces fonctionnelles249
Encore moins de code avec les lambdas !250
Le package java.util.function253
java.util.function.Function<T,R>
254
java.util.function.Consumer<T>
255
java.util.function.Predicate<T>
256
java.util.function.Supplier<T>
256
Les références de méthodes257
En résumé258
22 Manipuler vos données avec les streams
259
Avant de commencer259
Utiliser les streams261
Parcourir
261
Opérations intermédiaires sur les streams
262
Opérations terminales sur les streams
264
Utiliser les streams avec NIO 2267
En résumé267
23 La nouvelle API de gestion des dates de Java 8
269
Introduction à cette API269
Gestion du temps machine269
Gestion du temps humain270
Duration et Period271
TemporalAdjusters272
Les objets Zoneld et ZoneDateTime273
En résumé275
24 Une JVM modulaire avec Java 9
277
Quelques faits sur la JVM277
Inspectons des modules existants281
Création de votre premier module283
En résumé286
Troisième partie - Java et la programmation événementielle287
25 Votre première fenêtre
289
L'objet JFrame289
Positionner la fenêtre à l'écran
292
Empêcher le redimensionnement de la fenêtre
293
Garder la fenêtre au premier plan
293
Retirer les contours et les boutons de contrôle
293
L'objet JPanel295
Les objets Graphics et Graphics2D296
L'objet Graphics
296
La méthode drawOval()
299
La méthode drawRect()
300
La méthode drawRoundRect()
301
La méthode drawLine()
301
La méthode drawPolygon()
302
La méthode drawString()
303
La méthode drawImage()
304
L'objet Graphics2D
306
En résumé309
26 Le fil rouge : une animation
311
Création de l'animation311
Améliorations315
En résumé321
27 Positionner des boutons
323
La classe JButton323
Positionner son composant : les layout managers325
L'objet BorderLayout
326
L'objet GridLayout
327
L'objet BoxLayout
329
L'objet CardLayout
331
L'objet GridBagLayout
333
L'objet FlowLayout
337
En résumé340
28 Interagir avec des boutons
341
Une classe Bouton personnalisée341
Interactions avec la souris : l'interface MouseListener
344
Interagir avec son bouton349
Déclencher une action : l'interface ActionListener
349
Parler avec sa classe intérieure
357
Contrôler son animation : lancement et arrêt
362
Explication de ce phénomène
365
Être à l'écoute de ses objets : le design pattern observer367
Posons le problème
367
Des objets qui parlent et qui écoutent le pattern observer
370
Le pattern observer : le retour
375
Cadeau : un bouton personnalisé optimisé376
En résumé378
29 TP : une calculatrice
379
Élaboration379
Conception379
Correction380
Générer un fichier jar exécutable385
30 Exécuter des tâches simultanément
391
Une classe héritée de Thread391
Utiliser l'interface Runnable396
Synchroniser ses threads400
Contrôler son animation402
Depuis Java 7 : le pattern fork/join403
En résumé413
31 Les champs de formulaire
415
Les listes : l'objet JComboBox415
Première utilisation
415
L'interface ltemListener
417
Changer la forme de notre animation
420
Les cases à cocher : l'objet JCheckBox425
Première utilisation
425
Un pseudo effet de morphing pour notre animation
427
Le petit cousin : l'objet JRadioButton
433
Les champs de texte : l'objet JTextField435
Première utilisation
435
Un objet plus restrictif : le JFormattedTextField
436
Contrôle du clavier : l'interface KeyListener440
En résumé445
32 Les menus et boîtes de dialogue
447
Les boîtes de dialogue447
Les boîtes d'information
447
Les boîtes de confirmation
450
Les boîtes de saisie
453
Des boîtes de dialogue personnalisées
456
Les menus464
Créer son premier menu
464
Les raccourcis clavier
472
Créer un menu contextuel
476
Les barres d'outils484
Utiliser les actions abstraites
489
En résumé491
33 TP : l'ardoise magique
493
Cahier des charges493
Prérequis495
Correction495
Améliorations possibles501
34 Conteneurs : sliders et barres de progression
503
Les autres conteneurs503
L'objet JSplitPane
503
L'objet JScrollPane
507
L'objet JTabbedPane
510
L'objet JDesktopPane combiné à des JInternalFrame
515
L'objet JWindow
516
Le JEditorPane
517
Le JSlider
518
La JProgressBar
519
Enjoliver vos IHM521
En résumé522
35 Les arbres et leur structure
525
Des arbres qui vous parlent530
Décorer vos arbres534
Modifier le contenu de vos arbres539
En résumé546
36 Les interfaces de tableaux
547
Premiers pas547
Gestion de l'affichage549
Les cellules
549
Contrôler l'affichage
556
Interaction avec l'objet JTable561
Ajouter des lignes et des colonnes567
En résumé569
37 TP : le pendu
571
Cahier des charges571
Prérequis573
Correction573
38 Mieux structurer son code : le pattern MVC
577
Premiers pas577
La vue
577
Le modèle
578
Le contrôleur
578
Le modèle579
Le contrôleur583
La vue585
En résumé589
39 Le drag'n drop
591
Présentation591
Fonctionnement595
Créer son propre TransferHandler599
Activer le drop un JTree605
Effet de déplacement610
En résumé616
40 Mieux gérer les interactions avec les composants
617
Présentation des protagonistes617
Utiliser l'EDT619
La clase SwingWorker<T, V>622
En résumé627
Quatrième partie - Initiation à Java FX629
41 Introduction et installation des outils
631
Qu'est-ce que Java FX ?631
Installation632
Un nouveau projet Java FX633
Encapsulation de fichier FXML634
Utiliser plusieurs fichiers FXML639
En résumé643
42 Lier un modèle à votre vue
645
JavaBeans : rappel645
Mapper vos composants graphiques et votre couche métier648
En résumé651
43 Interagir avec vos composants
653
Afficher le détail de vos objets Personne653
Suppression d'une personne655
Ajout, édition et fermeture de l'application657
En résumé666
44 Java FX a du style !
667
Avant de commencer668
Votre première feuille de styles CSS pour Java FX669
En résumé671
Cinquième partie - Interaction avec les bases de données673
45 JDBC : la porte d'accès aux bases de données
675
Rappels sur les bases de données675
Quelle base de données utiliser ?
677
Installation de PostgreSQL
677
Préparer la base de données681
Créer la base de données
682
Créer les tables
684
Se connecter à la base de données688
Connexion
690
En résumé692
46 Fouiller sa base de données
693
Le couple Statement-ResultSet693
Entraînez-vous
697
Statement701
Les requêtes préparées702
ResultSet : le retour705
Modifier des données708
Statement, toujours plus fort710
Gérer les transactions manuellement712
En résumé715
47 Limiter le nombre de connexions
717
Pourquoi se connecter une seule fois seulement ?717
Le pattern singleton718
Le singleton dans tous ses états720
En résumé723
48 TP : un testeur de requêtes
725
Cahier des charges725
Quelques captures d'écran725
49 Lier ses tables avec des objets Java : le pattern DAO
733
Avant toute chose733
Le pattern DAO739
Contexte
739
Le pattern DAO en détail
739
Premier test
745
Le pattern factory747
Fabriquer vos DAO
748
De l'usine à la multinationale
751
En résumé757
Index759