Academia.eduAcademia.edu

Semaine 4 : Entrées/Sorties à base de texte & Menus

R2.01-1 – Bases de la Programmation Orientée Objet Java – Cours 4 Entrées/Sorties (E/S) à base de texte & Menus Auteur: M. Belkhatir Plan du Cours Paquetages Flux d’E/S E/S à base de texte Menus 2 Auteur: M. Belkhatir Importation de paquetages Paquetages sont composés de classes liées Possibilité de réutiliser le code dans les paquetages en les important Généralement, dans le cadre de ce cours, nous utiliserons les paquetages Java mais possibilité de créer ses propres paquetages Utilisation du mot-clé import avant la déclaration de la classe pour utiliser l’implémentation d’autres classes import java.util.*; // classes collection, Scanner et autres classes utilitaires import java.io.*; // classes pour lecture/écriture 3 Auteur: M. Belkhatir Création de paquetages Mot-clé package Première instruction dans chaque fichier source indique le nom du paquetage Mettre les fichiers dans un dossier avec le même nom que le paquetage Exemple Incorporer les classes Cercle, Rectangle… dans un paquetage graphique fichier Cercle.java package graphique; class Cercle { . . . } ; fichier Rectangle.java package graphique; class Rectangle { . . . } ; 4 Auteur: M. Belkhatir Entrées et Sorties à base de flux Entrées – information externe aportée au programme informatique Sorties – information émise par le programme informatique En Java, on considère des flux pour traiter les E/S 5 Auteur: M. Belkhatir Entrées et Sorties à base de flux Flux – moyen de transmission de l’information. OutputStream : permet d’envoyer les données du programme à une destination InputStream : source à partir de laquelle le programme reçoit de l’information Programme lit Source écrit lecture & écriture Destination 6 Auteur: M. Belkhatir Sorties sur écran en Java (1) System.out – ce flux est défini pour afficher des données à l’écran par défaut. On parle également de ‘Standard Output’ ou ‘stdout’. Le type de donnée de l’attribut ‘out’ de la classe ‘System’ est la classe PrintStream. La classe PrintStream fournit un ensemble de méthodes ‘print’ et ‘println’ qui acceptent plusieurs types en paramétre void print (boolean b), void print (char c), void println (String s)… ainsi que d’autres méthodes… 7 Auteur: M. Belkhatir Sorties sur écran en Java (2) System.err est un autre flux de sortie également de type PrintStream Utilisé pour rapporter des messages d’erreur On parle également de ‘Standard Error’ ou ‘stderr’. Par défaut, .out et .err sont dirigés vers l’écran, mais on peut également les mettre en oeuvre dans un fichier (redirection) 8 Auteur: M. Belkhatir Entrées clavier en Java (1) Utilisation de la classe Scanner (dans le paquetage java.util) Exemple avec un entier : Scanner entree = new Scanner(System.in); System.out.print("Entrer un entier : "); int nombre = entree.nextInt(); Exemple avec une ligne de texte: Scanner entree = new Scanner(System.in); System.out.print("Entrer une chaine de caracteres : "); String ligne = entree.nextLine(); 9 Auteur: M. Belkhatir Entrées clavier en Java (2) int nombre; String ligne; Scanner entree = new Scanner(System.in); // Récupérer les entiers en entrée System.out.println("Donner le premier entier:"); nombre = entree.nextInt(); System.out.println( "Vous avez entre " + nombre); // Affichage // Récupérer les chaînes en entrée System.out.println( "Entrer une ligne de texte:" ); ligne = entree.nextLine(); ligne = entree.nextLine(); // 2 appels à nextLine() pour nettoyer le buffer System.out.println( "Vous avez ecrit " + ligne); // Affichage 10 Auteur: M. Belkhatir Ecriture de Menus Implémentés avec un do-while contenu dans le main() Utilisation du switch Exemple d’un menu permettant de gérer un ensemble de chiens : Faire aboyer un chien (à déterminer) un certain nombre de fois (à préciser). Faire poursuivre un animal indiqué par son nom (à préciser) par un chien (à déterminer). Faire courir un chien (à déterminer) à une certaine vitesse (à préciser) et pendant un certain temps (à définir). Afficher les caractéristiques d’un chien à déterminer. Sortir du programme. 11 2/13/2022 Auteur: M. Belkhatir Conception à l’aide d’un Diagramme Déclaration & initialisation des variables pour les options du menu et la mise en oeuvre des chiens Afficher les objectifs du programme Afficher le menu et solliciter l’utilisateur pour le choix d’une option du menu Option menu = 1 Choix du chien à traiter Demande à l’utilisateur de déterminer le nombre d’aboiements Option menu = 2 Choix du chien à traiter Demande à l’utilisateur de déterminer l’animal poursuivi Option menu = 3 Choix du chien à traiter Demande à l’utilisateur la vitesse et le temps de course Option menu = 4 Choix du chien à traiter Affichage de ses caractéristiques Option menu = 5 Option invalide 2/13/2022 Auteur: M. Belkhatir Affichage d’un message de terminaison du programme Affichage d’un message d’erreur Sortie du programme 12 Implémentation Java (1/4) import java.util.Scanner; public class JoueAvecChiens { // Instanciation d’objets Chien permettant le choix ultérieur et d’un objet Scanner private static Chien chien1 = new Chien(“Rusty", “noir", 45, 40); private static Chien chien2 = new Chien(“Medor", “blanc", 85, 70); private static Scanner ent = new Scanner(System.in); // (…) cf. transparent 17 public static void main(String args[]) { // Déclaration et initialisation de variables int menuOption = 0; // variable captant l’option de menu Chien c; // variable captant le chien choisi par l’utilisateur int nbAboiements=0; // variable captant le nombre d’aboiements String aPoursuivi=""; // variable captant le nom de l’animal poursuivi double vitesse, durée = 0.0; // variables captant la vitesse et la durée de course //Affichage des objectifs du programme System.out.println(“Ce programme permettra à l’utilisateur de faire aboyer un chien, "); System.out.println( “faire poursuivre un animal par un chien, "); System.out.println(“faire courir un chien à une certaine vitesse et pendant un"); System.out.println(“certain temps et à afficher les caractéristiques d’un chien."); Auteur: M. Belkhatir 13 Implémentation Java (2/4) do { // Affichage du menu et récupération de l’option System.out.println("\n Options du Menu"); System.out.println("1. Faire aboyer un chien."); System.out.println("2. Faire poursuivre un animal par un chien."); System.out.println("3. Faire courir un chien."); System.out.println(“4. Afficher les caractéristiques d’un chien"); System.out.println(“5. Sortie du programme"); System.out.println(“Que désirez-vous faire ?”); menuOption = ent.nextInt(); ent.nextLine(); 14 Auteur: M. Belkhatir 2/13/2022 Implémentation Java (3/4) switch (menuOption) { // Choix du chien par l‘utilisateur case 1: c = choix_chien(); // Récupération du nombre d’aboiements nbAboiements = get_nbAboiements(); // Faire aboyer le chien choisi c.aboie(nbAboiements); break; // Choix du chien par l’utilisateur case 2: c = choix_chien(); // Récupération du nom de l’animal poursuivi aPoursuivi = get_anPoursuivi(); // Faire poursuivre l’animal par le chien c.poursuit(aPoursuivi); break; case 3: // Choix du chien par l’utilisateur c = choix_chien(); // Récupération de la vitesse v = get_vitesse(); // Récupération de la durée d = get_durée(); // Faire courir le chien c.court(v,d); break; 15 Auteur: M. Belkhatir Implémentation Java (4/4) case 4: case 5: default: // Choix du chien par l’utilisateur c=choix_chien(); // Affichage de ses caractéristiques System.out.println(c); break; // Préparation à la terminaison du programme System.out.println(“Fin du programme"); break; // Option de menu invalide System.out.println(“Option invalide, faire un nouveau choix :"); break; } // fin du switch // fin du do-while } while (menuOption != 5); } // fin du main() } // fin de la classe JoueAvecChiens 16 Auteur: M. Belkhatir Méthode choix_chien() 17 Auteur: M. Belkhatir 18 Etapes pour l’implémentation Lorsque vous écrivez votre code, implémentez une instruction case à la fois et commentez les autres (ou faites une ébauche). switch (menuOption) { case 1: // Faire aboyer un chien System.out.println(“Option 1 Choisie”); break; case 2: // Faire poursuivre un animal System.out.println(“Option 2 Choisie”); break; case 3: // Faire courir un chien System.out.println(“Menu Option 3 Choisie”); break; case 4: // Afficher les caractéristiques d’un chien System.out.println(“Menu Option 4 Choisie”); break; case 5: // Préparation à la terminaison du programme System.out.println(“Fin du programme“); break; default: // Option de menu invalide System.out.println(“Option invalide, faire un nouveau choix :“); break; } // fin du switch } while (menuOption != 5); // fin du do-while } // fin du main() Auteur: M. Belkhatir 18