package projetMusee.backend;

/**
 * La classe Coordinates représente les coordonnées géographiques d'un musée.
 *
 * @requires Les valeurs longitude et latitude doivent être des nombres valides
 *           et conformes aux coordonnées géographiques standards.
 * @ensures Un objet Coordinates est correctement initialisé avec les valeurs
 *          fournies.
 */
public class Coordinates {
    // Attributs privés
    private double longitude;
    private double latitude;

    /**
     * Constructeur de la classe Coordinates.
     *
     * @param longitude La longitude des coordonnées.
     * @param latitude  La latitude des coordonnées.
     *
     * @requires {@code longitude} et {@code latitude} doivent être des valeurs
     *           valides (exemple : -180 <= longitude <= 180 et -90 <= latitude <=
     *           90).
     * @ensures Un objet Coordinates est instancié avec les valeurs fournies.
     */
    public Coordinates(double longitude, double latitude) {
        if (longitude < -180 || longitude > 180) {
            throw new IllegalArgumentException("Longitude must be between -180 and 180");
        }
        if (latitude < -90 || latitude > 90) {
            throw new IllegalArgumentException("Latitude must be between -90 and 90");
        }
        this.longitude = longitude;
        this.latitude = latitude;
    }

    /**
     * Retourne la longitude.
     *
     * @return La valeur de la longitude.
     *
     * @ensures Retourne la valeur de la longitude de l'objet Coordinates.
     */
    public double getLongitude() {
        return longitude;
    }

    /**
     * Retourne la latitude.
     *
     * @return La valeur de la latitude.
     *
     * @ensures Retourne la valeur de la latitude de l'objet Coordinates.
     */
    public double getLatitude() {
        return latitude;
    }

    /**
     * Retourne une représentation sous forme de chaîne de caractères des
     * coordonnées.
     *
     * @return Une chaîne de caractères contenant la longitude et la latitude.
     *
     * @ensures Retourne une chaîne décrivant les coordonnées sous le format
     *          "Coordinates(longitude, latitude)".
     */
    @Override
    public String toString() {
        return "Coordinates(" + longitude + ", " + latitude + ")";
    }
}