import java.util.Scanner;

/**
 * Razred Avtocesta predstavlja avtocesto, ki podeduje lastnosti razreda Cesta
 * in dodaja dodatne informacije, kot so prisotnost pločnikov in število pasov.
 * Omogoča prikaz informacij o avtocesti, preverjanje zmogljivosti ter ustvarjanje
 * objekta avtoceste iz ukazne konzole.
 */
public class Avtocesta extends Cesta {
    private boolean imaPlatišča; // Ali avtocesta vsebuje pločnike
    private int številoPasov; // Število pasov na avtocesti

    /**
     * Konstruktor za inicializacijo objekta Avtocesta.
     *
     * @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;
    }

    /**
     * Prikazuje informacije o avtocesti na standardnem izhodu.
     * Prikazuje vse informacije, ki jih pridobi iz razreda Cesta, skupaj 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);
    }

    /**
     * Preveri zmogljivost avtoceste.
     * Avtoceste z 3 ali več pasovi so ocenjene kot visoke zmogljivosti.
     *
     * @return <code>true</code> če ima avtocesta 3 ali več pasov, sicer <code>false</code>
     */
    public boolean preveriZmogljivost() {
        return številoPasov >= 3;
    }

    /**
     * Ustvari nov objekt Avtocesta iz vnosa z ukazne konzole.
     * Ta metoda uporabi razred Cesta za pridobitev osnovnih informacij o cesti,
     * nato pa pridobi dodatne informacije o pločnikih in številu pasov.
     *
     * @return Nova instanca Avtocesta
     */
    public static Avtocesta ustvariIzKonzole() {
        Scanner scanner = new Scanner(System.in);

        // Ustvari osnovni objekt Cesta preko ukazne konzole
        Cesta cesta = Cesta.ustvariIzKonzole();

        // Pridobi informacije specifične za Avtocesta
        System.out.print("Ali avtocesta vsebuje pločnike (da/ne): ");
        boolean imaPlatišča = scanner.nextLine().equalsIgnoreCase("da");

        System.out.print("Vnesite število pasov: ");
        int številoPasov = scanner.nextInt();

        return new Avtocesta(cesta.getIme(), cesta.getDolzina(), cesta.getMaterial(), imaPlatišča, številoPasov);
    }
}
