TD Programmation orientée objet

publicité
TD Programmation orientée objet
Première partie : premiers pas dans la construction d’une filmothèque
L’objectif des premiers TD est de mettre en place les bases d’une application permettant de gérer
une petit filmothèque en Java.
Répondez aux questions suivantes :
1
Premiers pas (main)
Lancez Eclipse et créez un nouveau projet intitulé “Filmotheque”. Dans ce projet, créez une nouvelle classe Java nommée “MaFilmotheque” et ajoutez la méthode main (comme vu en cours) pour que
le programme affiche “premier jour” à l’écran. Pour exécuter votre programme, vous pouvez utilisez
l’icône en forme de touche lecture en haut ou passer par le menu déroulant. Le résultat de l’exécution
sera affiché dans la console en bas de l’écran (pas d’interface graphique pour le moment, cf. TD 2).
2
Premières questions (Lire)
Modifiez le programme pour qu’il demande la saisie d’un nombre à l’utilisateur et qu’il affiche
simplement ce nombre à l’écran. Pour cela, vous devrez importer dans votre projet, puis utiliser, la
classe Lire.java disponible librement en téléchargement sur le site du cours. N’hésitez pas à aller voir
le code Java de cette classe, même si vous n’avez pas encore toutes les clefs pour comprendre chaque
ligne du fichier.
3
Premières choix (switch, méthodes)
Modifiez le programme pour qu’il propose à l’écran un menu donnant le choix entre les propositions
suivantes : Créer, Ouvrir, Sauvegarder, Afficher, Insérer, Supprimer, Rechercher, Quitter. Le plus
simple est d’associer un numéro à chacun de ces choix (1 pour Créer, etc.). Pour chaque possibilité
offerte à l’utilisateur, votre programme doit appeler une méthode (autre que le main) qui porte le nom
correspondant (exemple : la fonction creer() pour le choix “Créer”, etc.). Chacune de ces fonctions
devra être static, du moins pour le moment.
Important : il n’est pas question ici de développer ces méthodes (écrire le code), mais juste de
mettre en place la structure. Pour l’instant, contentez-vous d’afficher à l’écran un message qui donne
le choix qui a été réalisé.
Voilà le détail de chacune des actions possibles :
1. Créer : crée une nouvelle filmothèque, c’est-à-dire un ensemble de films dans la collection ;
attention, cette action est à réaliser une seule fois au début, quand la filmothèque n’existe pas
encore.
2. Ouvrir : charge une filmothèque existante qui a été enregistrée préalablement sur le disque dur
de l’ordinateur.
3. Sauvegarder : sauvegarde la filmothèque courante sur le disque dur de l’ordinateur.
4. Insérer : insère un nouveau film dans la filmothèque (cassette VHS ou DVD).
5. Supprimer : supprime un film de la filmothèque.
6. Rechercher : permet de recherche si un film existe en fonction du titre, ou même de mots-clefs,
entrés par l’utilisateur.
7. Afficher : affiche le contenu total de la filmothèque.
8. Quiter : quitte l’application
c 2013
Master Informatique 1ère année – Université Lumière (Lyon 2) Responsable du cours : Julien Velcin – Chargé de TD : Adrien Guille
4
Première boucle (do...while)
Modifiez le programme pour qu’il (re-)propose le menu tant que l’utilisateur n’a pas choisi de
quitter.
5
Premières classes (champs et méthodes)
Créez une classe Film.java qui comporte tous les attributs nécessaires à la gestion d’un film (pas
d’une cassette ou d’un dvd) à savoir : titre, année, réalisateur, genre. Cette classe doit également
comporter deux méthodes importantes, à savoir : afficher et saisir. La méthode afficher affiche
à l’écran les informations relatives au film (son titre, son année, etc.). La méthode saisir utilise les
méthodes de la classe Lire et demande à l’utilisateur de rentrer ces différentes informations à la suite.
6
On crée son premier objet
Revenez dans la classe MaFilmotheque pour pouvoir créer votre premier objet qui sera de type
Film. Pour cela, enrichissez votre méthode inserer() en déclarant un objet local f de type Film,
allouez-lui de la mémoire grâce à new et appelez la méthode saisir() associée à f . Le problème :
l’objet f de la classe Film ainsi créé n’existe pas pendant très longtemps. . . Nous reviendrons sur ce
problème plus tard.
7
Premières vérifications
Toujours dans la classe principale, testez votre programme en faisant afficher le contenu du film f
à l’aide de la méthode afficher().
8
Premier oubli (protection des champs)
Passez les champs de la classe Film à private. Mettez des accesseurs et des mutateurs pour
pouvoir accéder à ces champs.
9
Un peu de Java (surcharge)
Dans la classe Film, ajouter une fonction public String toString() qui renvoie une chaı̂ne de
caractères correspondant à l’affichage du film. Testez cette fonction dans la classe principale avec la
commande System.out.println(f) (si f est votre objet de classe Film). Votre méthode afficher()
est devenue obsolète et vous pouvez maintenant la supprimer !
10
Ranger les objets dans une collection (Vector)
Créez une nouvelle classe Java intitulée ListeFilms qui sera chargée de gérer la collection de vos
films. Dans cette classe, ajoutez un champ de type Vector dans lequel seront stockés les films. Il
faudra peut-être ajouter, dans l’en-tête de la classe, la ligne import java.util.Vector pour pouvoir
utiliser cette classe de l’API Java. Dans une méthode initialise(), initialisez cet objet grâce à
new. Ensuite, créez une méthode ajoute(Film) qui permet d’ajouter l’objet film entré en paramètre
dans la collection. Enfin, revenez dans la classe principale et ajoutez les quelques lignes nécessaires à
l’utilisation de cette nouvelle classe. Il faut notamment remplir la méthode créer().
11
Pour les plus avancés : une collection triée (TreeSet, interface)
Utilisez la classe TreeSet à la place de la classe précédente pour gérer l’ensemble de vos films. Au
sein du TreeSet, les films sont triés par ordre alphabétique des titres (à titre égale, des réalisateurs).
Il faut donc penser à ce que la classe Film implémente l’interface Comparable.
12
Testez votre collection
A présent, lorsque vous créez un nouveau film, vous l’insérez aussitôt dans la collection pour ne
pas qu’il soit perdu dans l’hyperespace numérique. La seule manière de tester votre programme et
d’implémenter la méthode affficher() qui permet d’afficher à l’écran l’intégralité des films de la
collection. Pour cela, il sera nécessaire d’enrichir la classe ListeFilms avec une méthode qui explore
la collection (Vector ou TreeSet), et ce à l’aide d’une boucle.
13
Constructeur...
Supprimez la méthode de saisie de la classe Film. A la place, créez un constructeur qui prend
comme paramètres les 4 informations : titre, réalisateur, année, genre. Il faut alors modifier la méthode
insérer() de la classe principale afin de pouvoir créer l’objet Film en appelant directement le bon
constructeur.
14
...et destructeur
Enfin, créez une fonction de suppression d’un film dans la classe ListeFilms. Cette méthode affiche
d’abord toute la filmothèque, en attribuant à chaque film un numéro. Puis elle demande à l’utilisateur
le numéro du film qu’il veut supprimer et, enfin, elle supprime le film correspondant.
Félicitations d’être arrivés jusque là !
Téléchargement