Upload
trantuyen
View
217
Download
0
Embed Size (px)
Citation preview
Dév
elop
pez
une
appl
icat
ion
avec
Jav
a et
Ecl
ipse
ISB
N :
978-
2-40
9-01
283-
9
Java et Eclipse - Développez une application avec Java et EclipseCe livre sur Java et Eclipse s’adresse aux développeurs et étudiants en informatique. Il fait le lien entre les connaissances théoriques et pratiques en prenant appui sur le développement d’une application de gestion.
De la compréhension des concepts de la POO en passant par l’analyse, le lecteur est guidé pas à pas dans la construction de l’application. Pour la partie développement qui constitue l’essentiel de l’ouvrage, les points forts sont l’exploitation d’une base de données multitables avec MySQL et JPA, l’écriture des principales classes suite à une approche génie logicielle basée sur UML, la mise en œuvre du pattern MVC, l’écriture de tests unitaires avec JUnit, et une sensibilisation à l’internationalisation d’une application.
Au fur et à mesure du livre et à travers la mise en œuvre du projet, le lecteur découvrira les principes de la programmation en Java. Les collections, les lambdas, les streams, la gestion du temps et les interfaces graphiques, les étapes pratiques et les connaissances théoriques indispensables au développement d’une application professionnelle seront ainsi étudiées. L’auteur propose également différents axes d’ouverture pour aller plus loin dans sa connaissance de la programmation Java.
L’environnement de développement repose sur Java 9, Eclipse 4.7 IDE for Java Developers, Xampp pour le serveur, WindowBuilder pour bâtir de belles IHM et enfin JasperReports pour l’édition des états et l’élaboration de graphiques.
Au final, l’application de gestion comporte l’essentiel des fonctionnali-tés d’une solution professionnelle : gestion des clients, des articles et des commandes – édition et exportation des états aux principaux formats (HTML, PDF...) – production de graphiques – vues multifenêtres avec mise à jour simultanée.
Des éléments complémentaires sont en téléchargement sur le site www.editions-eni.fr.
Avant-propos • Environnement de développement • Prise en main d’Eclipse • Concepts de base de la POO • La boîte à outils de Java • La boîte à outils d’Eclipse • Présentation du projet • Analyse • Base de données MySQL • Maquettes • Connexion • Classes entités • Modèle MVC • Application mul-titable • Application finale
Les chapitres du livre
Ingénieur de formation, Frédéric DÉLÉCHAMP a travaillé pendant 17 ans dans le monde de l’aéro-nautique, de l’automobile, de la téléphonie mobile, de la presse, de la finance, des jeux et de l’assu-rance, sur des domaines allant des serveurs aux interfaces graphiques, en passant par les automates. Il a occupé successivement les postes de développeur, testeur, intégrateur, architecte, responsable méthodo-logie et chef de projet. Également formateur, il a enseigné les Nouvelles Technologies et particulièrement le langage Java à des ingénieurs et des chefs de projets désirant s’initier ou se perfectionner en programmation. Dans la nouvelle édition de ce livre, il s’est efforcé de donner au lecteur un maximum de clés pour aller plus loin dans la création d’un logiciel robuste et évolutif.
Téléchargementwww.editions-eni.fr.fr
Sur www.editions-eni.fr :b Les ressources nécessaires à la réalisation de l’application
(maquettes graphiques, images, rapports…).b Le code source de l’application exemple fonctionnant avec
Eclipse Oxygen.
39 €
Pour plus d’informations :
Frédéric DÉLÉCHAMP
2e édition
Nouvelle éditionJava et Eclipse Développez une application
avec Java et Eclipse
1Table des matières
Avant-propos
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2. Contenu de l’ouvrage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Chapitre 1
Environnement de développement
1. Installation du JDK Java. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2. Installation d'Eclipse Oxygen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3. Découverte de l'IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213.1 Perspective - Vue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223.2 Éditeur de code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253.3 Débogueur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Chapitre 2
Prise en main d'Eclipse
1. De l’importance de s’organiser. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2. Premier projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3. Premier package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4. Première classe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
5. Première fenêtre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485.1 Création de la fenêtre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495.2 Ajout de composants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
6. Action d'un bouton. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Les éléments à télécharger sont disponibles à l'adresse suivante : http://www.editions-eni.fr
Saisissez la référence ENI de l'ouvrage EI9JAV dans la zone de recherche et validez. Cliquez sur le titre du livre puis sur le bouton de téléchargement.
2Développez une application avec Java et Eclipse
Java et Eclipse
7. Création d'un menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
8. Premier exécutable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Chapitre 3
Concepts de base de la POO
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
2. Objet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
3. Classe. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
4. Attribut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
5. Type de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
6. Méthode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
7. Accessibilité. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
8. Encapsulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
9. Constructeur. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
10. Héritage. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
11. Interfaces. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
12. Polymorphisme. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9312.1 Par surcharge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9412.2 Par redéfinition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9512.3 Par interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
13. Principes SOLID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9913.1 Single Responsibility. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9913.2 Open/Closed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9913.3 Liskov Substitution. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10013.4 Interface Segregation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10113.5 Dependency Inversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
14. Quelques autres principes utiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10314.1 DRY (Don't Repeat Yourself). . . . . . . . . . . . . . . . . . . . . . . . . . 10314.2 KISS (Keep It Simple, Stupid) . . . . . . . . . . . . . . . . . . . . . . . . . 103
3Table des matières
14.3 YAGNI (You Aren't Gonna Need It) . . . . . . . . . . . . . . . . . . . . 104
Chapitre 4
La boîte à outils de Java
1. Génériques. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
2. Collections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
3. Gestion des erreurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
4. Boxing/Unboxing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
5. Enums . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
6. Gestion du temps et des dates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
7. Événements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
8. Lambdas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
9. Streams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
10. Optional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
11. Classes graphiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13011.1 Boutons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
11.1.1 JButton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13011.1.2 JCheckBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13111.1.3 JRadioButton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13111.1.4 JToggleButton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
11.2 Saisies textuelles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13211.2.1 JTextField . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13211.2.2 JPasswordField . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13311.2.3 JFormattedTextField . . . . . . . . . . . . . . . . . . . . . . . . . . 13311.2.4 JTextArea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13311.2.5 JEditorPane et JTextPane. . . . . . . . . . . . . . . . . . . . . . . 134
11.3 Saisie de nombres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13411.3.1 JSpinner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13411.3.2 JSlider . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
4Développez une application avec Java et Eclipse
Java et Eclipse
11.4 Affichage d'informations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13511.4.1 JLabel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13511.4.2 JProgressBar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13611.4.3 JSeparator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
11.5 Affichage et sélection d'objets . . . . . . . . . . . . . . . . . . . . . . . . . 13811.5.1 JComboBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13811.5.2 JList . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
11.6 Données structurées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14011.6.1 JTree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14111.6.2 JTable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
11.7 Conteneurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14111.7.1 JPanel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14211.7.2 JScrollPane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14211.7.3 JSplitPane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14311.7.4 JTabbedPane. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14411.7.5 JToolbar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
11.8 Fenêtres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14511.8.1 JFrame. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14511.8.2 JDialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14611.8.3 JOptionPane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14711.8.4 JFileChooser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14911.8.5 JColorChooser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
11.9 Menus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15011.9.1 JMenuBar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15111.9.2 JMenu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15211.9.3 JMenuItem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15311.9.4 JPopupMenu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
11.10 Layouts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15411.10.1 FlowLayout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15411.10.2 BoxLayout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15511.10.3 BorderLayout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15511.10.4 GridLayout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15611.10.5 GridBagLayout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
5Table des matières
11.11 Look and Feel. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
12. Threads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
13. Annotations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
14. Autres notions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
Chapitre 5
La boîte à outils d'Eclipse
1. Propriétés du projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
2. Tests unitaires. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
3. Internationalisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1813.1 Traduction des chaînes de caractères. . . . . . . . . . . . . . . . . . . . 1813.2 Tests des traductions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
4. Ajout de plug-ins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
5. Ajout sélectif de librairies. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
6. Gérer les révisions d'un projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
Chapitre 6
Présentation du projet
1. Application Oxygen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
2. Cahier des charges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
3. Persistance des données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
4. Utilisation des patrons de conception. . . . . . . . . . . . . . . . . . . . . . . . 206
Chapitre 7
Analyse
1. Démarche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
2. Ajout du plug-in UML dans Eclipse . . . . . . . . . . . . . . . . . . . . . . . . . 211
3. Diagramme de cas d'utilisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
6Développez une application avec Java et Eclipse
Java et Eclipse
4. Diagramme de séquence. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
5. Diagramme de communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
6. Diagramme de classes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
Chapitre 8
Base de données MySQL
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
2. SQL et les bases de données relationnelles . . . . . . . . . . . . . . . . . . . . 2272.1 Les bases de données relationnelles . . . . . . . . . . . . . . . . . . . . . 2272.2 SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2292.3 Transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
3. Installation et configuration du serveur XAMPP . . . . . . . . . . . . . . . 2323.1 Gestion de l’accès au serveur . . . . . . . . . . . . . . . . . . . . . . . . . . 2363.2 Création de la base de données MySQL . . . . . . . . . . . . . . . . . 237
4. JDBC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
5. JPA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
6. Installation des pilotes Connector/J . . . . . . . . . . . . . . . . . . . . . . . . . 244
7. Installation d’EclipseLink. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
Chapitre 9
Maquettes
1. Création des fenêtres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2511.1 Fenêtre de connexion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2551.2 Fenêtre d'accueil de l'application . . . . . . . . . . . . . . . . . . . . . . . 2661.3 Fenêtre de gestion des clients . . . . . . . . . . . . . . . . . . . . . . . . . . 275
1.3.1 Panneau principal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2761.3.2 Panneaux d'ajout et de modification . . . . . . . . . . . . . 2771.3.3 Panneau de recherche. . . . . . . . . . . . . . . . . . . . . . . . . . 278
1.4 Fenêtre de gestion des articles . . . . . . . . . . . . . . . . . . . . . . . . . 279
7Table des matières
1.5 Fenêtres de gestion des commandes . . . . . . . . . . . . . . . . . . . . 2801.5.1 Saisie de nouvelles commandes. . . . . . . . . . . . . . . . . . 2801.5.2 Affichage des commandes existantes . . . . . . . . . . . . . 281
2. Gestion avancée des événements. . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
3. Activation des fenêtres. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2853.1 Connexion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2853.2 Clients . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2913.3 Accueil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
Chapitre 10
Connexion
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
2. Paramètres de connexion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
3. Mise en service de la fenêtre de connexion . . . . . . . . . . . . . . . . . . . . 303
4. Lecture des enregistrements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
Chapitre 11
Classes entités
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
2. Gestion des erreurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
3. Classe ModeReglements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
4. CRUD de la classe ModeReglements . . . . . . . . . . . . . . . . . . . . . . . . 3204.1 Créer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3214.2 Lire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3224.3 Modifier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3234.4 Rechercher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3244.5 Supprimer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
5. Classe Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
8Développez une application avec Java et Eclipse
Java et Eclipse
6. CRUD de la classe Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3316.1 Créer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3316.2 Lire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3326.3 Modifier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3336.4 Supprimer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3346.5 Chercher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
7. Classe Article . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
8. CRUD de la classe Article . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3438.1 Créer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3448.2 Lire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3458.3 Modifier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3468.4 Supprimer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3478.5 Rechercher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
9. Classe Commande . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
10. CRUD de la classe Commande . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35610.1 Créer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35710.2 Lire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35810.3 Modifier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36010.4 Supprimer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36110.5 Rechercher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
11. Prise en compte des entités par JPA. . . . . . . . . . . . . . . . . . . . . . . . . . 362
Chapitre 12
Modèle MVC
1. Présentation du concept. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365
2. MVC et JTable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
3. Gestion des clients . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3683.1 Modèle métier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3683.2 Modèle graphique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3683.3 Personnalisation de l'affichage de la table . . . . . . . . . . . . . . . . 3763.4 Gestion du simple clic. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383
9Table des matières
3.5 Opérations sur le modèle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3843.5.1 Ajout d'un client. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3843.5.2 Modification d'un client . . . . . . . . . . . . . . . . . . . . . . . 3903.5.3 Suppression d'un client . . . . . . . . . . . . . . . . . . . . . . . . 3953.5.4 Recherche d'un client . . . . . . . . . . . . . . . . . . . . . . . . . . 397
3.6 Mise à jour de la table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3993.6.1 Notification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3993.6.2 Événements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4033.6.3 Écouteur d'événements . . . . . . . . . . . . . . . . . . . . . . . . 403
3.7 Nouveau modèle de table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407
4. Notifications non graphiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407
5. Structure et sources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4125.1 ModeleClients . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4135.2 ControleClient . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4165.3 PClients . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4205.4 PClient . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427
Chapitre 13
Application multitable
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431
2. Classes associées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431
3. Gestion des articles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4323.1 Affichage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432
3.1.1 Création du modèle graphique . . . . . . . . . . . . . . . . . . 4333.1.2 Création du contrôle . . . . . . . . . . . . . . . . . . . . . . . . . . 435
3.2 Ajout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4413.3 Modification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444
3.3.1 Sélection d'un article . . . . . . . . . . . . . . . . . . . . . . . . . . 4443.3.2 Sauvegarde de la modification. . . . . . . . . . . . . . . . . . . 446
3.4 Suppression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4473.5 Recherche. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448
10Développez une application avec Java et Eclipse
Java et Eclipse
4. Gestion des commandes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4514.1 Affichage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451
4.1.1 Création du modèle graphique . . . . . . . . . . . . . . . . . . 4524.1.2 Création du contrôle . . . . . . . . . . . . . . . . . . . . . . . . . . 457
4.2 Ajout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4634.3 Modification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4724.4 Suppression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4734.5 Recherche. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476
Chapitre 14
Application finale
1. Impressions et exports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4791.1 Fonctionnement de JasperReports . . . . . . . . . . . . . . . . . . . . . . 4801.2 Installation de Jaspersoft Studio . . . . . . . . . . . . . . . . . . . . . . . 4811.3 Créer un état simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483
1.3.1 Préparation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4831.3.2 Création du rapport . . . . . . . . . . . . . . . . . . . . . . . . . . . 488
1.4 Créer un état paramétré . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4931.5 Intégration de JasperReports dans Eclipse. . . . . . . . . . . . . . . . 4981.6 Mise en œuvre dans le projet . . . . . . . . . . . . . . . . . . . . . . . . . . 498
1.6.1 Aperçu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5031.6.2 Impression du rapport . . . . . . . . . . . . . . . . . . . . . . . . . 5041.6.3 Export en PDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504
2. Graphiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5152.1 Création avec Jaspersoft Studio et JFreeChart . . . . . . . . . . . . 5152.2 Exploitation des graphiques à partir de l'application . . . . . . . 521
3. Création de l'exécutable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525
4. Aller plus loin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539
33
Chapitre 2
Prise en main d'Eclipse
Prise en main d'Eclipse1. De l’importance de s’organiser
Ce chapitre permet de se familiariser avec l'environnement de développementEclipse.
Créer un logiciel implique de modifier des fichiers texte. Au fur et à mesure decette création, les fichiers s'accumulent et il devient de plus en plus importantde s'organiser afin de pouvoir retrouver facilement le code.
Pour cela, Java propose un système d'organisation par espace de noms oupackage, qui permet de regrouper différentes classes. Conceptuellement, ilest plus simple d'y penser comme à différents dossiers de l'ordinateur.
Au plus haut niveau d'organisation, le code d'un logiciel est organisé dans unprojet par Eclipse. Le projet regroupe tous les codes nécessaires à la réalisationdes fonctionnalités demandées. Chaque élément de code est ensuite regroupédans des dossiers différents selon qu'ils soient utiles à la fonctionnalité propre-ment dite ou à leurs tests.
© E
dit
ions
EN
I -
All r
ights
rese
rved
34Développez une application avec Java et Eclipse
Java et Eclipse
2. Premier projet
Pour se familiariser avec le workbench, une classe très simple est créée.
Il faut auparavant créer un projet puis un package, toute classe d'une applica-tion un tant soit peu professionnelle devant être rangée dans un package.
Pour rappel, un package est physiquement un dossier, et symboliquement unespace de nommage pour rassembler les classes d'une même fonctionnalité.
Remarque
Si vous ne rangez pas vos classes dans un package, Eclipse les placera dansle package par défaut. L'utilisation du package par défaut est déconseillée.
C'est également l'occasion de proposer une structure pour les fichiers duprojet, afin d'améliorer la lisibilité et la testabilité des applications.
En préambule à ce travail, et afin de faciliter l'ouverture des fichiers provenantde systèmes d'exploitation différents, il convient de préciser l'encodage desfichiers.
dDans le menu, choisissez Window - Preferences. Naviguez ensuite dansGeneral - Workspace et sélectionnez la valeur Other - UTF-8 dans lasection Text file encoding.
35Prise en main d'EclipseChapitre 2
Ce réglage permettra de lire correctement les fichiers avec des caractèresaccentués dans Eclipse, que ce soit sur Windows, Linux ou Mac.
Remarque
Les accents ainsi que les caractères spéciaux sont permis dans les noms desvariables, mais ne sont pas recommandés. Vous comprendrez le jour où votreprojet sera ouvert sur un ordinateur Linux, par exemple, ou quand il s'agira detravailler sur un projet avec les noms de variables en chinois, japonais, hébreuou farsi.
© E
dit
ions
EN
I -
All r
ights
rese
rved
36Développez une application avec Java et Eclipse
Java et Eclipse
dDans le menu, choisissez File - New - Java Project, ou faites un clic droitdans la vue puis New - Java Project.
La boîte de dialogue de création de projet s'ouvre. Elle permet de nommer lenouveau projet et de choisir l'emplacement sur le disque dur où seront stockésles fichiers du projet (par défaut, les projets sont stockés dans le dossierd'espace de travail qui a été choisi lors de l'installation d'Eclipse).
dSaisissez le nom du projet, puis cliquez sur le lien Configure default enface du bouton radio Create separate folders for sources and class files.
37Prise en main d'EclipseChapitre 2
Cette manipulation permet de définir les dossiers dans lesquels sont rangés lesfichiers sources et les fichiers binaires compilés. D'une manière générale, cesdeux types de fichiers doivent être séparés. Cela permet par exemple de copierou d'effacer facilement les binaires.
Les fichiers sources dans un projet Java ont souvent plusieurs sous-types : ilexiste des fichiers sources pour les classes de l'application, des fichiers sourcespour les classes de tests, des fichiers de ressources telles que les images ou lesconfigurations…
La manipulation suivante permet de définir des dossiers distincts pour chacunde ces types. Ces dossiers distincts sont inspirés des projets Maven (http://maven.apache.org/) et Gradle (https://gradle.org/), qui sont des outilspuissants pour la gestion des projets informatiques, permettant de lancer enligne de commande ou via une interface graphique la compilation des sourcesen binaires, le passage des tests unitaires, la transformation des classes enfichier jar, le paquetage dans un installateur et le déploiement sur un serveur,pour ne citer que quelques-unes des fonctionnalités disponibles.
© E
dit
ions
EN
I -
All r
ights
rese
rved
38Développez une application avec Java et Eclipse
Java et Eclipse
Maven met en application l'adage « Une place pour chaque chose et chaquechose à sa place » et définit le répertoire src/main/java comme répertoire pourles fichiers sources, src/main/resources pour les fichiers de configuration etles images, src/test/java pour les sources de tests et src/test/resources pourles fichiers de configuration des tests. Les binaires sont stockés quant à euxdans target/classes.
dChangez les noms des dossiers comme dans l'écran suivant, puis validez.
Eclipse retourne sur la boîte de dialogue de création du projet.
dCliquez sur Finish pour finaliser la création du projet.
Le projet et son contenu sont maintenant visibles dans la vue Package Explo-rer.