TD Programmation orientée objet

Transcription

TD Programmation orientée objet
TD Programmation orientée objet
6. Afficher : affiche le contenu total de la base.
7. Rechercher : permet de recherche si une actualité existe en fonction du titre, ou même de
mots-clefs, entrés par l’utilisateur.
Première partie : premiers pas dans la construction d’une base d’actualités
8. Quiter : quitte l’application.
L’objectif des premiers TD est de mettre en place les bases d’une application permettant de gérer
une petite base d’actualités (news) en langage Java. Rappel : le site du cours se trouve sur la page
suivante dans la rubrique “Teaching”, puis “Programmation Java (Master 1ère année Informatique)” :
http://mediamining.univ-lyon2.fr/velcin
Répondez aux questions suivantes :
1
Premiers pas (main)
Lancez Eclipse ou NetBeans, puis créez un nouveau projet intitulé “MesNews”. Dans ce projet,
créez une nouvelle classe Java nommée “MesNews” comportant une méthode main qui affiche juste
“premier jour” à l’écran. Pour le moment, il n’est pas question de faire une interface graphique (cf.
TD 2) mais plutôt de tout gérer avec le terminal. Pour exécuter votre programme, vous pouvez utiliser
l’icône en forme de touche lecture en haut ou passer par le menu déroulant :
. Il est parfois utile
d’utiliser le bouton de compilation avec nettoyage (
dans NetBeans). Le résultat de l’exécution sera
affiché dans la console en bas de l’écran.
2
Premières questions (Scanner)
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 Scanner disponible depuis la libraire java.util. Pour l’import, suivant le type et la version de
votre IDE, il faudra peut-être écrire l’import à la main ou utiliser un raccourci (par ex., en Eclipse il
suffit de choisir la bonne option après un clic droit de la souris).
3
Premiers 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, Afficher, Rechercher, Quitter. Le
plus simple est d’associer un numéro à chacun de ces choix (1 pour Créer, 2 pour Ouvrir, etc.). Pour
chaque possibilité o↵erte à 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 déclarée comme static. La signature de la méthode ressemble
alors à ceci :
Placez le code d’affichage dans une méthode afficher menu() que vous appelerez depuis le main.
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ère classe (champs)
Créez une classe News.java qui comporte tous les attributs nécessaires à la gestion d’une actualité,
à savoir : titre, date, auteur, source. Pour le moment, vous pouvez vous contenter de la date sans
préciser l’heure exacte, grâce à la classe LocalDate. La source est une URL qui permet de situer sur
Internet la page Web d’où provient l’information. Vous utiliserez la classe URL.
6
Première classe (méthodes)
La classe News.java doit également comporter deux méthodes importantes, à savoir : afficher
et saisir. La méthode afficher affiche à l’écran les informations relatives à l’actualité (son titre, sa
date, etc.). La méthode saisir utilise les méthodes de la classe Scanner et demande à l’utilisateur
de rentrer ces di↵érentes informations à la suite.
7
Premier objet
Revenez dans la classe MesNews pour pouvoir créer votre premier objet qui sera de type News. Pour
cela, enrichissez votre méthode inserer() en déclarant un objet local n de type News, allouez-lui de
la mémoire grâce à new et appelez la méthode saisir() associée à n. Le problème : l’objet n de la
classe News ainsi créé n’existe pas pendant très longtemps. . . Nous reviendrons sur ce problème plus
tard.
8
Premières vérifications
Toujours dans la classe principale, testez votre programme en faisant afficher le contenu de l’actualité n à l’aide de la méthode afficher().
public static void creer()
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é à l’aide de la commande System.out.println.
Voilà le détail de chacune des actions possibles qui seront implémentées dans les exercices suivants :
9
Premier oubli (protection des champs)
Passez les champs de la classe News à private pour les rendre inaccessibles depuis l’extérieur.
Mettez des accesseurs (getters) et des mutateurs (setters) pour pouvoir accéder à ces champs.
1. Créer : crée une nouvelle base d’actualité, c’est-à-dire un ensemble de news dans la collection ;
attention, cette action est à réaliser une seule fois au début, quand la base n’existe pas encore.
10
2. Ouvrir : charge une base d’actualité existante qui a été enregistrée préalablement sur le disque
dur de l’ordinateur.
Dans la classe News, 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(n) (si n est votre objet de classe News). Votre méthode afficher()
est devenue obsolète et vous pouvez maintenant la supprimer ! Plus précisément : mettez le code de
cette fonction en commentaires.
3. Sauvegarder : sauvegarde la base courante sur le disque dur de l’ordinateur.
4. Insérer : insère une nouvelle actualité dans la base (statut d’un ami, article de presse, photo. . . ).
5. Supprimer : supprime une actualité de la base.
Un peu de Java (surcharge)
Master 1ère année Informatique – Université Lumière (Lyon 2) c 2016
Responsable du cours : Julien Velcin
2
11
Ranger les objets dans une collection triée (TreeSet, interface)
Créez une nouvelle classe Java intitulée BaseDeNews qui sera chargée de gérer la collection de vos
films. Dans cette classe, ajoutez un champ de type TreeSet dans lequel seront stockés les actualités.
Dans une méthode initialise(), initialisez cet objet grâce à new. Ensuite, créez une méthode ajoute
qui permet d’ajouter l’objet news 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().
Attention : dans un TreeSet, les objets sont nécessairement triés. C’est à vous de préciser l’ordre
choisi (par ex. l’ordre alphabétique des titres) en implémentant 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 consiste
à 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 BaseDeNews avec une méthode qui explore
la collection TreeSet, et ce à l’aide d’une boucle while.
13
Constructeur...
Supprimez la méthode de saisie de la classe News (ou, plus exactement, mettez-la en commentaires).
A la place, créez un constructeur qui prend comme paramètres les informations nécessaires (titre, date,
etc.). Il faut alors modifier la méthode insérer() de la classe principale afin de pouvoir créer l’objet
News en appelant directement le bon constructeur.
14
...et destructeur
Enfin, créez une fonction de suppression d’une actualité dans la classe BaseDeNews. Cette méthode
affiche d’abord toute la base d’actualité, en attribuant à chaque film un numéro. Puis elle demande
à l’utilisateur le numéro de l’actualité qu’il veut supprimer et, enfin, elle procède à la suppression
correspondante.
Félicitations d’être arrivés jusque là !
3