Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
enseignement:d14:tp:tp3 [2018/11/09 10:03] Emmanuel Brunoenseignement:d14:tp:tp3 [2023/09/20 18:52] (Version actuelle) – modification externe 127.0.0.1
Ligne 1: Ligne 1:
 +====== D14 - TP3 - Les collections en Java ====== 
  
 +===== Objectif===== 
 +L'objectif ce TP est de présenter d'une part l'utilisation des collections et d'autre part l'utilisation d'un outils d'édition de diagrammes UML permettant la génération de code Java ([[http://www.topcased.org/|Topcased]] ou l'éditeur UML intégré à Intellij Idea).
 +
 +===== Utilisation "Simple" des collections===== 
 +Vous utiliserez les classes du TP précédent.
 +  * Créez un ** ensemble ** d'animaux (sans utiliser de génériques) et peuplez le en utilisant concrètement un ''HashSet''.
 +  * On suppose que tous les animaux ont un nom, indiquez que deux animaux sont égaux s'ils ont le même nom.
 +  * Vérifier que l'on ne puisse pas ajouter deux animaux ayant le même nom (par définition d'un ensemble)
 +  * Affichez cet ensemble en utilisant un itérateur puis avec le foreach de Java 5
 +  * Transformez le support physique de cet ensemble en un ''TreeSet'', que faut-il modifier d'autre ?
 +  * Créer une liste d'animaux à partir des animaux de l'ensemble. 
 +  * Afficher la liste des animaux triée par l'ordre alphabétique de leur nom.
 +  * Convertissez cet ensemble en un tableau d'animaux (Faites attention au type)
 +  * Modifier cet ensemble en ajoutant la généricité et définissez un ensemble d'animaux (supprimez les transtypages devenus inutiles).
 +  * On suppose que l'on associe à chaque animal un tatouage unique composé de son espèce (une Chaîne de caractères) et d'un entier. Le couple des deux est unique.  Ecrire la classe tatouage, surcharger et redéfinir les méthodes nécessaires. Créer une ''Map'' (avec la généricité) contenant des animaux (//(Aigle,1), (Aigle,2), (Chien,1), (Chien,2)//) et affichez les informations concernant l'animal dont l'identifiant est //(Chien,1)//.
 +
 +===== Ecriture manuelle d'un programme à partir d'un diagramme de classe ===== 
 +L'objectif est d'écrire un programme de gestion d'une bibliothèque qui prête des livres et des ordinateurs à des enseignants et des étudiants.
 +
 +{{:enseignement:m1:inf2:fr.univtln.bruno.tp.tp3.bilbio.jpg|fr.univtln.bruno.tp.tp3.Bilbio.eps}}
 +
 +==== Architecture de base ====
 +
 +**La correction est ici : https://lsis.univ-tln.fr/redmine/projects/librarymanager **
 +
 +Ecrire (sans utiliser d'éditeur UML) les classes Java correspondant au diagramme UML donné décrivant une bibliothèque simple. Vous veillerez en particulier à
 +  * redéfinir la méthode ''toString()'' des différentes classes pour que celles-ci puissent être affichées
 +  * représenter correctement les associations multiples en utilisant des collections (il est conseillé d'utiliser les génériques).
 +  * créer une classe exécutable ''Test'' dans laquelle vous pourrez :
 +    * créer une bibliothèque
 +    * ajouter des adhérents qui doivent avoir un nom, un prénom et un statut
 +    * ajouter au moins deux livres, deux revues, deux dictionnaires et deux BD
 +    * ajouter deux ordinateurs portables (un sous linux, un sous windows)
 +
 +==== Gestion des emprunts ====
 +Ecrire le code permettant de gérer les emprunts en ajoutant aux adhérents les méthodes ''boolean emprunter(Empruntable e)'' et ''boolean rendre(Empruntable e)''. Pensez à bien vérifier qu'un objet n'est pas emprunté deux fois (vérifier que cela marche en faisant un test dans la classe ''Test'') et qu'un adhérent n'emprunte pas plus de cinq objets.
 +  * Ajouter une méthode ''void afficherEmprunts()'' à la classe ''Adherent''
 +  * Ajouter une méthode ''void afficherFonds()'' à la classe ''Bibliothèque'' qui affiche les documents et le matériel (chacun affichant par qui il a été emprunté). ** Ajoutez les méthodes qui vous semblent utiles pour cela**
 +  * Surcharger les méthodes ''emprunter'' et ''rendre'' pour les Livres et les Portables, pour vérifier que l'on emprunte au plus cinq livres mais un seul portable.
 +
 +==== Recherche dans une collection ====
 +Ajouter une méthode ''Collection rechercherTitre(String mot)'', qui retourne une collection contenant des références vers les documents qui comportent la chaîne ''mot'' dans leur titre.
 +
 +===== Ecriture assistée d'un programme à partir d'un diagramme de classe ===== 
 +En utilisant un outils d'édition de diagramme UML, construisez le diagramme précédent et générer automatiquement le squelette des classes. 
 +
 +===== Si vous avez fini... =====
 +Vous pouvez affiner vos connaissances en suivant le tutorial d'Oracle [[http://docs.oracle.com/javase/tutorial/collections/index.html]].
 +
 +{{tag>D14 TP Java Collection}}
 ---- struct data ---- ---- struct data ----
 metadata.level       :  metadata.level       :