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émente la méthode IEquatable de Requin
///
[DataContract]
public class Requin : IEquatable
{
///
/// string le nom du requin
///
[DataMember]
public string Nom { get; private set; }
///
/// string le nom scientifique du requin
///
[DataMember]
public string NomSci { get; private set; }
///
/// string la description du requin
///
[DataMember]
public string Description { get; private set; }
///
/// string l'URL de la photo du requin
///
[DataMember]
public string Photo { get; private set; }
///
/// string le chemin de la vidéo du requin
///
[DataMember]
public string Video { get; private set; }
///
/// string l'URL de la photo de la carte de répartition du requin
///
[DataMember]
public string PhotoCarte { get; private set; }
///
/// Conservation le statut de conservation du requin
///
[DataMember]
public Conservation StatutCons { get; private set; }
///
/// string fun fact sur les requins
///
[DataMember]
public string FunFact { get; private set; }
///
/// List de Zone la répartition du requin sur la planète
///
[DataMember]
public List Repartition { get; private set; }
///
/// 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 de Zone 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 de Zone la répartition du requin sur la planète
/// List de string 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 de Requin
///
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();
}
}
}