package ex1_modele;

public abstract class Plat {
    private String code;
    private String nom;
    protected double prix;

    public Plat(String code, String nom, double prix) {
        /*
         * PSEUDO-CODE :
         * 1. Copier le paramètre code dans l'attribut this.code.
         * 2. Copier le paramètre nom dans l'attribut this.nom.
         * 3. Copier le paramètre prix dans l'attribut protected this.prix.
         */
    }

    public String getCode() {
        /*
         * PSEUDO-CODE :
         * 1. Retourner l'attribut code.
         */
        return null;
    }

    public String getNom() {
        /*
         * PSEUDO-CODE :
         * 1. Retourner l'attribut nom.
         */
        return null;
    }

    public double getPrix() {
        /*
         * PSEUDO-CODE :
         * 1. Retourner l'attribut prix.
         */
        return 0.0;
    }

    public String description() {
        /*
         * PSEUDO-CODE :
         * 1. Construire une chaîne contenant au minimum le code et le nom.
         * 2. Retourner cette chaîne.
         */
        return "";
    }

    public abstract String getCategorie();

    public double prixAvecFraisService() {
        /*
         * Cette méthode sera redéfinie ou utilisée par les classes filles.
         * Le but est de montrer que l'attribut prix est protected.
         */
        return prix;
    }

    @Override
    public boolean equals(Object obj) {
        /*
         * PSEUDO-CODE :
         * 1. Si this et obj sont la même référence, retourner true.
         * 2. Si obj n'est pas un Plat, retourner false.
         * 3. Convertir obj en Plat.
         * 4. Comparer le code du plat courant avec le code de l'autre plat.
         * 5. Retourner le résultat de cette comparaison.
         */
        return super.equals(obj);
    }

    @Override
    public int hashCode() {
        /*
         * PSEUDO-CODE :
         * 1. Calculer un hash basé uniquement sur code.
         * 2. Retourner ce hash.
         * Indice : vous pouvez utiliser java.util.Objects.hash(code).
         */
        return super.hashCode();
    }
}
