/**
 * Razred, ki predstavlja gorsko cesto, ki je posebna vrsta ceste z dodatnimi lastnostmi.
 * Razred razširja osnovni razred {@link Cesta} in vključuje informacije o tunelih in serpentinah.
 */
public class GorskaCesta extends Cesta {
    private boolean imaTunel; // Ali cesta vsebuje tunel
    private boolean imaSerpentine; // Ali cesta vsebuje serpentine

    /**
     * Konstruktor za ustvarjanje objekta gorske ceste.
     * 
     * @param ime Ime ceste
     * @param dolzina Dolžina ceste v kilometrih
     * @param material Material ceste
     * @param imaTunel Ali cesta vsebuje tunel
     * @param imaSerpentine Ali cesta vsebuje serpentine
     */
    public GorskaCesta(String ime, double dolzina, String material, boolean imaTunel, boolean imaSerpentine) {
        super(ime, dolzina, material);
        this.imaTunel = imaTunel;
        this.imaSerpentine = imaSerpentine;
    }

    /**
     * Getter za informacijo, ali cesta vsebuje tunel.
     * 
     * @return true, če cesta vsebuje tunel, sicer false
     */
    public boolean isImaTunel() {
        return imaTunel;
    }

    /**
     * Setter za nastavitev, ali cesta vsebuje tunel.
     * 
     * @param imaTunel true, če cesta vsebuje tunel, sicer false
     */
    public void setImaTunel(boolean imaTunel) {
        this.imaTunel = imaTunel;
    }

    /**
     * Getter za informacijo, ali cesta vsebuje serpentine.
     * 
     * @return true, če cesta vsebuje serpentine, sicer false
     */
    public boolean isImaSerpentine() {
        return imaSerpentine;
    }

    /**
     * Setter za nastavitev, ali cesta vsebuje serpentine.
     * 
     * @param imaSerpentine true, če cesta vsebuje serpentine, sicer false
     */
    public void setImaSerpentine(boolean imaSerpentine) {
        this.imaSerpentine = imaSerpentine;
    }

    /**
     * Metoda za prikaz informacij o gorski cesti, vključno z dodatnimi lastnostmi tunelov in serpentin.
     * 
     * Ta metoda nadomešča metodo {@link Cesta#prikaziInformacije()} in dodaja dodatne informacije o tunelih in serpentinah.
     */
    @Override
    public void prikaziInformacije() {
        super.prikaziInformacije();
        System.out.println("Ima tunel: " + (imaTunel ? "Da" : "Ne"));
        System.out.println("Ima serpentine: " + (imaSerpentine ? "Da" : "Ne"));
    }

    /**
     * Metoda za preverjanje varnosti vožnje na gorski cesti.
     * 
     * @return true, če cesta ne vsebuje serpentin (varna), sicer false (nevarna)
     */
    public boolean preveriVarnoVožnjo() {
        return imaSerpentine ? false : true; // Ceste s serpentinami niso tako varne
    }
}
