Classe inutilisable
Résolu
barnabe0057
Messages postés
14455
Date d'inscription
Statut
Contributeur
Dernière intervention
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
Actuellement en formation développeur C#, j'ai une question concernant un TP que j'ai terminé.
Il s'agit d'une médiathèque avec 4 classes (Livre.cs, Bdd.cs, Gens.cs, Program.cs) et une énumération "Genre".
Livre.cs :
Bdd.cs
Gens.cs :
Program.cs :
Les classes, attributs et méthodes sont imposés. Mon code fonctionne, cependant je n'utilise pas et je n'arrive pas à utiliser la classe Bdd.cs qui contient uniquement un dictionnaire avec le titre et le numéro ISBN des livres. Tout ce qui provient de cette classe (getter, setter) n'est pas reconnu dans le main.
Merci d'avance pour votre aide.
Actuellement en formation développeur C#, j'ai une question concernant un TP que j'ai terminé.
Il s'agit d'une médiathèque avec 4 classes (Livre.cs, Bdd.cs, Gens.cs, Program.cs) et une énumération "Genre".
Livre.cs :
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Bibliotheque { internal class Livre { private string nom; private string auteur; private int nbPages; private Genre genre; // constructeur par défaut public Livre() { nom = ""; auteur = ""; nbPages = 0; genre = new Genre(); } // surcharge du constructeur public Livre(string initNom, string initAuteur, int initNbPages, Genre initGenre) { nom = initNom; auteur = initAuteur; nbPages = initNbPages; genre = initGenre; } // getter public string GetNom() { return nom; } // getter public string GetAuteur() { return auteur; } // getter public int GetNbPages() { return nbPages; } // getter public Genre GetGenre() { return genre; } } }
Bdd.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Bibliotheque { internal class Bdd { private Dictionary<double, Livre> liensISBN; // constructeur par défaut public Bdd() { liensISBN = new Dictionary<double, Livre>(); } // surcharge du constructeur public Bdd(Dictionary<double, Livre> initLiensISBN) { liensISBN = initLiensISBN; } // getter public Dictionary<double, Livre> GetLiensISBN() { return liensISBN; } // setter public void SetLiensISBN(Dictionary<double, Livre> newLiensISBN){ liensISBN = newLiensISBN; } } }
Gens.cs :
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Bibliotheque { internal class Gens { private List<Livre> listeEmpruntes; private string nom; private string prenom; // constructeur par défaut public Gens() { List <Livre> listeEmpruntes = new List<Livre>(); nom = ""; prenom = ""; } // surcharge du constructeur public Gens(List<Livre> initListeEmpruntes, string initNom, string initPrenom) { this.listeEmpruntes = initListeEmpruntes; this.nom = initNom; this.prenom = initPrenom; } // méthode pour afficher les livres empruntés public List<string> AfficherEmpruntes() { List<string> collection = new List<string>(); foreach (Livre bouquin in GetListeEmpruntes()) { //Console.WriteLine(bouquin.GetNom() + " - " + bouquin.GetAuteur()); collection.Add(bouquin.GetNom()); } return collection; } // getter public List<Livre> GetListeEmpruntes() { return listeEmpruntes; } // getter public string GetNom() { return nom; } // getter public string GetPrenom() { return prenom; } } }
Program.cs :
// See https://aka.ms/new-console-template for more information using System; namespace Bibliotheque // Note: actual namespace depends on the project name. { internal class Program { static void Main(string[] args) { Livre book1 = new Livre("Mobydick", "Herman Melville", 426, Genre.aventure); Livre book2 = new Livre("Vingt Mille Lieues sous les mers", "Jules Verne", 784, Genre.thriller); Livre book3 = new Livre("La Vie est un roman", "Guillaume Musso", 358, Genre.roman); Livre book4 = new Livre("Et que ne durent que les moments doux", "Virginie Grimaldi", 269, Genre.roman); Livre book5 = new Livre("Né sous une bonne étoile", "Aurélie Valognes", 514, Genre.roman); Livre book6 = new Livre("La Commode aux tiroirs de couleurs", "Olivia Ruiz", 497, Genre.sf); Dictionary<double, Livre> dico = new Dictionary<double, Livre>(); //Bdd dico = new Bdd(); dico.Add(1478525874, book1); dico.Add(3698412578, book2); dico.Add(2587413694, book3); dico.Add(6547893214, book4); dico.Add(3210458796, book5); dico.Add(9512368741, book6); Gens nanadusud = new Gens(new List<Livre> { book3, book4, book5 }, "Rambaud", "Sarah"); Console.WriteLine("Livres empruntés par : " + nanadusud.GetPrenom() + " " + nanadusud.GetNom()); Console.WriteLine(); foreach (string titre in nanadusud.AfficherEmpruntes()) { for (int i = 0; i < dico.Count; i++) { if (titre == dico.ElementAt(i).Value.GetNom()) { Console.WriteLine("ISBN: {0}, Titre: \"{1}\"", dico.ElementAt(i).Key, titre); } } } //nanadusud.AfficherEmpruntes(); } } }
Les classes, attributs et méthodes sont imposés. Mon code fonctionne, cependant je n'utilise pas et je n'arrive pas à utiliser la classe Bdd.cs qui contient uniquement un dictionnaire avec le titre et le numéro ISBN des livres. Tout ce qui provient de cette classe (getter, setter) n'est pas reconnu dans le main.
Merci d'avance pour votre aide.
Configuration: Windows / Firefox 97.0
6 réponses
Bonsoir
tu n'as pas donné le code de l'enum Genre, j'ai donc pris les valeurs que tu utilises au début du programme.
J'ai modifié la fin du programme comme suit
Et j'ai ça

Peux tu essayer chez toi et me dire ce qui se passe?
tu n'as pas donné le code de l'enum Genre, j'ai donc pris les valeurs que tu utilises au début du programme.
enum Genre { aventure, thriller, roman, sf, }
J'ai modifié la fin du programme comme suit
//nanadusud.AfficherEmpruntes(); Console.WriteLine("Test Bdd"); Bdd testBdd = new Bdd(dico); foreach (var item in testBdd.GetLiensISBN()) Console.WriteLine("clé {0}, valeur {1}", item.Key, item.Value.GetNom()); Console.ReadKey();// pour ne pas que la console se ferme à la fin et qu'on puisse lire
Et j'ai ça

Peux tu essayer chez toi et me dire ce qui se passe?
Bien joué ! J'obtiens le même résultat que toi.
En fait en voyant tes modifications je me rend compte que je n'arrivais pas à trouver la bonne syntaxe pour instancier la classe Bdd, je n'avais pas pensé à mettre dico entre parenthèses, pourtant c'est bête il suffisait de se référer au constructeur.
J'ai modifié la fin du programme en remplaçant dico par testBdd.GetLiensISBN() et ça fonctionne comme attendu.
Je te remercie pour ton aide et te souhaite une bonne journée.
En fait en voyant tes modifications je me rend compte que je n'arrivais pas à trouver la bonne syntaxe pour instancier la classe Bdd, je n'avais pas pensé à mettre dico entre parenthèses, pourtant c'est bête il suffisait de se référer au constructeur.
J'ai modifié la fin du programme en remplaçant dico par testBdd.GetLiensISBN() et ça fonctionne comme attendu.
Je te remercie pour ton aide et te souhaite une bonne journée.
Bonsoir
ce matin, je n'avais pas trop le temps, mais ta classe est prévue aussi pour fonctionner avec le constructeur sans paramètres.
De cette façon
Ou évidement en créant directement les items sans passer par dico.
Mais aussi de cette façon
ce matin, je n'avais pas trop le temps, mais ta classe est prévue aussi pour fonctionner avec le constructeur sans paramètres.
De cette façon
Bdd testBdd = new Bdd(); foreach (var item in dico) testBdd.GetLiensISBN().Add(item.Key, item.Value); foreach (var item in testBdd.GetLiensISBN()) Console.WriteLine("clé {0}, valeur {1}", item.Key, item.Value.GetNom());
Ou évidement en créant directement les items sans passer par dico.
Bdd testBdd = new Bdd(); testBdd.GetLiensISBN().Add(1478525874, book1); testBdd.GetLiensISBN().Add(3698412578, book2); testBdd.GetLiensISBN().Add(2587413694, book3); testBdd.GetLiensISBN().Add(6547893214, book4); testBdd.GetLiensISBN().Add(3210458796, book5); testBdd.GetLiensISBN().Add(9512368741, book6); foreach (var item in testBdd.GetLiensISBN()) Console.WriteLine("clé {0}, valeur {1}", item.Key, item.Value.GetNom());
Mais aussi de cette façon
Bdd testBdd = new Bdd(); foreach (var item in dico) testBdd.GetLiensISBN().Add(item.Key, item.Value); foreach (var item in testBdd.GetLiensISBN()) Console.WriteLine("clé {0}, valeur {1}", item.Key, item.Value.GetNom());
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question