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