You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Ohara_MAUI/Sources/Model/Classes/ObjetOhara.cs

149 lines
4.4 KiB

/// \file ObjetOhara.cs
/// \brief Contient la définition de la classe ObjetOhara.
///
/// La classe ObjetOhara représente les différents objets de notre application Ohara avec leur nom et l'image qui leur est attitré pour pouvoir factoriser le code.
///
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Runtime.Serialization;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Linq;
namespace Model.Classes
{
/// <summary>
/// Représente un objet du monde de One Piece.
/// </summary>
[DataContract(Name = "objetohara")]
public class ObjetOhara : INotifyPropertyChanged
{
/// <summary>
/// Événement déclenché lorsque la valeur d'une propriété change.
/// </summary>
public event PropertyChangedEventHandler? PropertyChanged;
/// <summary>
/// Obtient ou définit le nom de l'objet.
/// </summary>
[DataMember(Name = "nom")]
private string? nom;
public string? Nom {
get => nom;
set
{
nom = value;
OnPropertyChanged();
}
}
/// <summary>
/// Obtient ou définit le chemin de l'image représentant l'objet.
/// </summary>
[DataMember(Name = "image")]
private string? image;
public string? Image {
get => image;
set
{
image = value;
OnPropertyChanged();
}
}
/// <summary>
/// Obtient ou définit une valeur indiquant si l'objet est marqué comme favori.
/// </summary>
[DataMember(Name = "estfavori")]
private bool estfavori;
public bool EstFavori {
get=>estfavori;
set
{
estfavori = value;
}
}
/// <summary>
/// Initialise une nouvelle instance de la classe <see cref="ObjetOhara"/> avec le nom spécifié.
/// </summary>
/// <param name="nom">Le nom de l'objet.</param>
/// <param name="image">Le chemin de l'image représentant l'objet (par défaut : "baseimage.png").</param>
/// <param name="estFavori">Indique si l'objet est marqué comme favori (par défaut : false).</param>
public ObjetOhara(string nom, string image = "baseimage.png", bool estFavori = false)
{
Nom = nom;
Image = image;
EstFavori = estFavori;
}
/// <summary>
/// Détermine si l'objet spécifié est égal à l'objet actuel.
/// </summary>
/// <param name="obj">L'objet à comparer avec l'objet actuel.</param>
/// <returns>true si les objets sont égaux ; sinon, false.</returns>
public override bool Equals(object? obj)
{
if (obj == null) return false;
if (this.GetType() != obj.GetType())
{
return false;
}
else
{
ObjetOhara o = (ObjetOhara)obj;
return o.Nom == Nom;
}
}
/// <summary>
/// Retourne le code de hachage de l'objet.
/// </summary>
/// <returns>Le code de hachage de l'objet.</returns>
public override int GetHashCode()
{
return HashCode.Combine(Nom, Image,EstFavori);
}
/// <summary>
/// Retourne une chaîne de caractères représentant l'objet actuel.
/// </summary>
/// <returns>Une chaîne de caractères représentant l'objet actuel.</returns>
public override string ToString()
{
return "ObjetOhara : " + Nom + " " +EstFavori+ " " + Image;
}
/// <summary>
/// Déclenche l'événement PropertyChanged.
/// </summary>
/// <param name="propertyName">Le nom de la propriété qui a changé (facultatif).</param>
protected void OnPropertyChanged([CallerMemberName] string? propertyName = null)
=> PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}