Instances de classe à paramètres aléatoires
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:
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:
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));
}
}
} |
Code:
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];
}
} |
Quelqu’un aurait une idée d’où pourrai provenir cette erreur ?
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 ^^