Java et Eclipse - Développez une application avec Java et ... sont l’exploitation d’une base de...

17
Frédéric DÉLÉCHAMP 2 e édition Java et Eclipse Développez une application avec Java et Eclipse

Transcript of Java et Eclipse - Développez une application avec Java et ... sont l’exploitation d’une base de...

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.

lcroise
Tampon

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.

lcroise
Tampon

© 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.