Bonjour,
Grand débutant en C# et de manière général en programmation, je commence à peine l’objet. N’hésitez donc pas à me rappeler à l’ordre si je m’embrouille dans les notions, les termes ou si vous voyez des choses disgracieuses et des mauvaises habitudes dans mon code ^^
Pour jouer avec les objets j’effectue quelques tests pour mettre en pratiques les notions que j’apprends.
Dans le cas présent un vendeur possède un étal comprenant 6 fruits (et légumes) différents. Ces fruits sont générés aléatoirement, avec trois propriétés : le type (pommes ou poires par exemple), la couleur et le statut (mûre ou vert par exemple).
L’étal contenant les fruits est une liste contenant mes instances de fruits.
A la création d’un fruit, le constructeur de la classe légume pioche aléatoirement parmi des listes et tableaux présents dans la classe les caractéristiques de mon futur fruit ou légume, grâce à la méthode Random.
Problème : les propriétés à la sortie sont identiques pour tous les fruits. Si je relance le programme le résultat est différent mais les 6 fruits et légumes sont toujours identiques entre eux (6 pommes vertes puis 6 raisins jaunes).
Voici mes 3 méthodes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 class Program { static void Main(string[] args) { Vendeur Bob = new Vendeur(6); foreach (Legumes Legu in Bob.Liste_Legumes_Vendeur) { Console.WriteLine("J'ai des " + Legu.Type + " de couleur " + Legu.Taille + " qui sont " + Legu.Statut); } } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 public class Vendeur { public List<Legumes> Liste_Legumes_Vendeur = new List<Legumes>(); public Vendeur(int List_lenght) { for (int i = 0; i < List_lenght; i++) { Liste_Legumes_Vendeur.Add(new Legumes(i)); } } }Quelqu’un aurait une idée d’où pourrai provenir cette erreur ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 public class Legumes { private List<string> Types_Liste = new List<string> { "Tomates", "Raisins", "Pommes", "Poires", "Poivrons" }; private string[] Tailles_Liste = new string[] { "verte", "jaune", "rouge" }; private string[] Statuts_Liste = new string[] { "verts", "mûres", "pourrits" }; public string Type { get; set; } public string Taille { get; set; } public string Statut { get; set; } Random rnd = new Random(); public Legumes(int i) { Type = Types_Liste[rnd.Next(0,Types_Liste.Count)]; Taille = Tailles_Liste[rnd.Next(0,Tailles_Liste.Length)]; Statut = Statuts_Liste[i % Statuts_Liste.Length]; } }
Notes : l'utilisation d'un modulo et entier pour le troisième paramètre me permet bien d'avoir des résultat qui changent, contrairement à ceux qui utilisent l'aléatoire. L'utilisation d'une liste et de deux tableaux pour stocker les paramètres possibles me sert juste à tester les deux versions.
Merci pour votre patience ^^
Partager