Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente | |||
enseignement:d35:tp:tp2 [2018/11/09 10:18] – Emmanuel Bruno | enseignement:d35:tp:tp2 [2023/09/20 18:52] (Version actuelle) – modification externe 127.0.0.1 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ====== D35 - TP2 - Révision de Java, mise en pratique de git+maven ====== | ||
+ | Pour une introduction rapide à maven : http:// | ||
+ | |||
+ | ===== Objectif ====== | ||
+ | L’objectif de ce TP est réviser les concepts de base du langage Java que vous | ||
+ | devez maîtriser. Il permettra une première mise en pratique réelle de l’utilisation de Git et de maven. Appuyez vous sur https:// | ||
+ | |||
+ | Pour tous les exercices, vous devez utiliser l’environnement IntelliJ IDEA (www.jetbrains.com/ | ||
+ | |||
+ | La compilation et la génération de la documentation et des artefacts (fichier jar) seront réalisés avec Maven. | ||
+ | Pensez à configurer le proxy pour maven [[maven: | ||
+ | |||
+ | ** Pour vos inspirez regarder le projet https:// | ||
+ | |||
+ | Attention, c'est un projet multimodule : | ||
+ | git clone --recurse-submodules git@github.com: | ||
+ | |||
+ | ===== Au fur et à mesure du développement ===== | ||
+ | |||
+ | ==== Livraison du résultat ==== | ||
+ | Fabriquer automatiquement avec maven un fichier jar exécutable qui contient toutes les classes nécessaires. Exécuter l’application à partir de ce fichier. | ||
+ | |||
+ | ==== Gestion des log ==== | ||
+ | Modifier vos classes pour que les logs sont gérés proprement à l’aide du Logger du jdk. | ||
+ | |||
+ | ==== Test de vos classes avec JUnit ==== | ||
+ | (Après une présentation rapide de Junit) | ||
+ | Mettez en place des tests unitaires au fur et à mesure du développement en utilisant Junit (http:// | ||
+ | |||
+ | L’exécution des tests sera faite par maven. | ||
+ | |||
+ | ===== Classes, Instances et Héritage ===== | ||
+ | |||
+ | ==== Hiérarchie ==== | ||
+ | Dans un sous-paquetage appelé " | ||
+ | une hiérarchie d’animaux : Tous les animaux doivent avoir un nom, ils sont soit des | ||
+ | mammifères, | ||
+ | Créer une classe exécutable Test, dont la méthode '' | ||
+ | aigles. Avec quel type de références peut-on les manipuler ? | ||
+ | |||
+ | ==== Constructeurs, | ||
+ | Ajouter des constructeurs et mettez en place les méthodes bases d' | ||
+ | |||
+ | Remplacer les constructeurs par des factory ou des builder pattern. | ||
+ | |||
+ | ==== Collections ==== | ||
+ | http:// | ||
+ | |||
+ | Nous allons maintenant regrouper les animaux dans des zoos qui sont des collections | ||
+ | d’animaux. Créer une classe '' | ||
+ | méthode '' | ||
+ | zoos et peuplez les avec des animaux pour obtenir le résultat suivant : | ||
+ | |||
+ | Affichage du zoo : mon Zoo | ||
+ | Je m’appelle Germaine et je suis un animal, je suis un mammifère, je suis une vache | ||
+ | Je m’appelle Geronimo et je suis un animal, je suis un oiseau, je suis un aigle | ||
+ | Je m’appelle Marguerite et je suis un animal, je suis un mammifère, je suis une vache | ||
+ | Affichage du zoo : ton Zoo | ||
+ | Je m’appelle Gertrude et je suis un animal, je suis un mammifère, je suis une vache | ||
+ | Je m’appelle Philomène et je suis un animal, je suis un mammifère, je suis une vache | ||
+ | Je m’appelle Tiki et je suis un animal, je suis un oiseau, je suis un aigle | ||
+ | |||
+ | Comment s’assurer que deux animaux qui ont le même nom ne peuvent être ajouté au | ||
+ | même zoo ? | ||
+ | |||
+ | ==== Administration de classes ==== | ||
+ | Comment faire pour qu’une référence vers tous les animaux (y compris ceux qui | ||
+ | n’ont pas été ajouté à un zoo) soient conservée ? L’ensemble des animaux sera appelé la | ||
+ | faune. Ajouter une méthode '' | ||
+ | |||
+ | ==== Héritage Multiple / Interfaces ==== | ||
+ | On souhaite pouvoir distinguer, parmi les animaux, les carnivores et les herbivores. | ||
+ | Quel est le problème avec la hiérarchie de classe actuelle? Une solution à ce problème | ||
+ | consiste à utiliser deux interfaces (un carnivore peut manger un autre animal, un herbivore | ||
+ | broute). Définissez et implanter ces deux interfaces pour manipuler les aigles et les vaches à travers celles-ci. | ||
+ | |||
+ | ===== Entrées/ | ||
+ | – http:// | ||
+ | |||
+ | Ajouter à la classe Zoo, une méthode '' | ||
+ | enregistre un zoo complet dans un fichier dont le nom est passé en paramètre. Ajouter une | ||
+ | méthode '' | ||
+ | un objet '' | ||
+ | en paramètre. | ||
+ | |||
+ | ===== Persistance avec JPA ===== | ||
+ | **Obligatoire pour la suite.** En utilisant JPA, mettez en place la persistance de l' | ||
+ | |||
+ | Pour l' | ||
+ | http:// | ||
+ | |||
+ | ===== IHM ===== | ||
+ | Créer une petite IHM swing permettant d’ajouter des vaches ou des aigles à la faune en | ||
+ | précisant leur nom. A chaque ajout, l’affichage de la faune devra être mis à jour. | ||
+ | Le projet exemple fourni un exemple de mise en place de MVC avec swing. | ||
+ | |||
+ | {{tag> | ||
---- struct data ---- | ---- struct data ---- | ||
metadata.level | metadata.level |