/**
 * Razred GorskaCesta predstavlja gorsko cesto, ki podeduje lastnosti razreda Cesta
 * in dodaja informacije o visinski razliki.
 * Omogoča nastavitev visinske razlike ter posodobitev te vrednosti.
 */
public class GorskaCesta extends Cesta {
    private double visinskaRazlika; // Visinska razlika v metrih

    /**
     * Konstruktor za inicializacijo objekta GorskaCesta.
     * 
     * @param ime Ime gorske ceste
     * @param dolzina Dolžina gorske ceste v kilometrih
     * @param stanje Stanje gorske ceste (npr. "nov", "popravljen", "slab")
     * @param visinskaRazlika Visinska razlika gorske ceste v metrih
     * @throws IllegalArgumentException Če je visinska razlika negativna
     */
    public GorskaCesta(String ime, double dolzina, String stanje, double visinskaRazlika) throws IllegalArgumentException {
        super(ime, dolzina, stanje);
        setVisinskaRazlika(visinskaRazlika);
    }

    /**
     * Pridobi visinsko razliko gorske ceste.
     * 
     * @return Visinska razlika v metrih
     */
    public double getVisinskaRazlika() {
        return visinskaRazlika;
    }

    /**
     * Nastavi visinsko razliko gorske ceste.
     * 
     * @param visinskaRazlika Nova visinska razlika v metrih
     * @throws IllegalArgumentException Če je visinska razlika negativna
     */
    public void setVisinskaRazlika(double visinskaRazlika) throws IllegalArgumentException {
        if (visinskaRazlika < 0) {
            throw new IllegalArgumentException("Visinska razlika mora biti pozitivna vrednost.");
        }
        this.visinskaRazlika = visinskaRazlika;
    }

    /**
     * Poveča visinsko razliko gorske ceste za določeno vrednost.
     * 
     * @param dodatnaVisinskaRazlika Dodana visinska razlika v metrih
     * @throws IllegalArgumentException Če je dodatna visinska razlika manjša ali enaka 0
     */
    public void posodobiVisinskoRazliko(double dodatnaVisinskaRazlika) throws IllegalArgumentException {
        if (dodatnaVisinskaRazlika <= 0) {
            throw new IllegalArgumentException("Dodatna visinska razlika mora biti pozitivna vrednost.");
        }
        this.visinskaRazlika += dodatnaVisinskaRazlika;
        System.out.println("Visinska razlika ceste je bila povečana za " + dodatnaVisinskaRazlika + " metrov.");
    }
}
