using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; using System.Text; using System.Threading.Tasks; namespace Modèle { /// /// Classe Requin qui impléemente la méthode IEquatable /// [DataContract] public class Requin : IEquatable { [DataMember] public string Nom { get; private set; } //string le nom du requin [DataMember] public string NomSci { get; private set; } //string le nom scientifique du requin [DataMember] public string Description { get; private set; } //string la description du requin [DataMember] public string Photo { get; private set; } //string l'URL de la photo du requin [DataMember] public string Video { get; private set; } //string le chemin de la vidéo du requin [DataMember] public string PhotoCarte { get; private set; } //string l'URL de la photo de la carte de répartition du requin [DataMember] public Conservation StatutCons { get; private set; } //Conservation le statut de conservation du requin [DataMember] public string FunFact { get; private set; } //string fun fact sur les requins [DataMember] public List Repartition { get; private set; } //List la répartition du requin sur la planète /// /// Constructeur du requin avec fun fact /// /// string le nom du requin /// string le nom scientifique du requin /// string la description du requin /// string l'URL de la photo du requin /// string le chemin de la vidéo du requin /// string l'URL de la photo de la carte de répartition du requin /// Conservation le statut de conservation du requin /// List la répartition du requin sur la planète /// string fun fact sur les requins public Requin(string nom, string nomSci, string description, string photo, string video, string photoCarte, Conservation statutCons, List repartition, string funFact) { Nom = nom; NomSci = nomSci; Description = description; Photo = photo; Video = video; PhotoCarte = photoCarte; StatutCons = statutCons; Repartition = repartition; FunFact = funFact; } /// /// Constructeur du requin sans fun fact qui génère donc une fun fact aléatoire depuis une liste de fun fact /// /// string le nom du requin /// string le nom scientifique du requin /// string la description du requin /// string l'URL de la photo du requin /// string le chemin de la vidéo du requin /// string l'URL de la photo de la carte de répartition du requin /// Conservation le statut de conservation du requin /// List la répartition du requin sur la planète /// List list de fun facts public Requin(string nom, string nomSci, string description, string photo, string video, string photoCarte, Conservation statutCons, List repartition, List funFacts) { Random rnd = new Random(); int num = rnd.Next(funFacts.Count()); Nom = nom; NomSci = nomSci; Description = description; Photo = photo; Video = video; PhotoCarte = photoCarte; StatutCons = statutCons; Repartition = repartition; FunFact = funFacts[num]; } /// /// Méthode ToString de la classe Requin /// public override string ToString() { return Nom + " " + NomSci + " " + Description + " " + StatutCons + " " + FunFact + " " + Photo; } /// /// Méthode Equals de la classe Requin qui permet de savoir si deux requins sont égaux, regarde l'égalité en fonction des noms et des nom scientifiques /// public bool Equals(Requin r) { return r.Nom == Nom && r.NomSci == NomSci; } /// /// Méthode ToString de la classe Requin qui permet l'implémentation de la méthode IEquatable /// public override bool Equals(object obj) { if (ReferenceEquals(obj, null)) return false; if (ReferenceEquals(obj, this)) return true; if (GetType() != obj.GetType()) return false; return Equals(obj as Requin); } /// /// Méthode GetHashCode de la classe Requin qui permet de récupérer le hash code d'un requin avec son nom et son nom scientifique /// public override int GetHashCode() { return Nom.GetHashCode() ^ NomSci.GetHashCode(); } } }