/**
 * Razred, ki predstavlja avtocesto, razširitev osnovnega razreda {@link Cesta}.
 * Vključuje dodatne informacije o pločnikih in številu pasov ter metode za prikaz in preverjanje zmogljivosti avtoceste.
 */
public class Avtocesta extends Cesta {
    private boolean imaPlatišča; // Ali avtocesta vsebuje pločnike
    private int številoPasov; // Število pasov na avtocesti

    /**
     * Konstruktor za ustvarjanje objekta avtoceste.
     * 
     * @param ime Ime avtoceste
     * @param dolzina Dolžina avtoceste v kilometrih
     * @param material Material avtoceste (asfalt, makadam, itd.)
     * @param imaPlatišča Ali avtocesta vsebuje pločnike
     * @param številoPasov Število pasov na avtocesti
     */
    public Avtocesta(String ime, double dolzina, String material, boolean imaPlatišča, int številoPasov) {
        super(ime, dolzina, material);
        this.imaPlatišča = imaPlatišča;
        this.številoPasov = številoPasov;
    }

    /**
     * Getter za informacijo, ali avtocesta vsebuje pločnike.
     * 
     * @return {@code true} če avtocesta vsebuje pločnike, {@code false} sicer
     */
    public boolean isImaPlatišča() {
        return imaPlatišča;
    }

    /**
     * Setter za informacijo, ali avtocesta vsebuje pločnike.
     * 
     * @param imaPlatišča {@code true} če avtocesta vsebuje pločnike, {@code false} sicer
     */
    public void setImaPlatišča(boolean imaPlatišča) {
        this.imaPlatišča = imaPlatišča;
    }

    /**
     * Getter za število pasov na avtocesti.
     * 
     * @return Število pasov na avtocesti
     */
    public int getŠteviloPasov() {
        return številoPasov;
    }

    /**
     * Setter za število pasov na avtocesti.
     * 
     * @param številoPasov Število pasov na avtocesti
     */
    public void setŠteviloPasov(int številoPasov) {
        this.številoPasov = številoPasov;
    }

    /**
     * Metoda za prikaz informacij o avtocesti, vključno z informacijami o pločnikih in številu pasov.
     */
    @Override
    public void prikaziInformacije() {
        super.prikaziInformacije();
        System.out.println("Ima pločnike: " + (imaPlatišča ? "Da" : "Ne"));
        System.out.println("Število pasov: " + številoPasov);
    }

    /**
     * Metoda za preverjanje zmogljivosti avtoceste na podlagi števila pasov.
     * 
     * @return {@code true} če ima avtocesta 3 ali več pasov, {@code false} sicer
     */
    public boolean preveriZmogljivost() {
        return številoPasov >= 3; // Avtoceste z več kot 3 pasovi so zmogljivejše
    }
}
