/**
 * Razred AsfaltnaCesta predstavlja asfaltirano cesto, ki podeduje lastnosti razreda Cesta
 * in dodaja dodatne informacije, kot so prisotnost prometnih oznak.
 * Omogoča dostop do informacij o prometnih oznakah ter dodajanje oznak, če niso prisotne.
 */
public class AsfaltnaCesta extends Cesta {
    private boolean imaOznake; // Ali ima cesta prometne oznake

    /**
     * Konstruktor za inicializacijo objekta AsfaltnaCesta.
     *
     * @param ime Ime asfaltne ceste
     * @param dolzina Dolžina asfaltne ceste v kilometrih
     * @param stanje Stanje asfaltne ceste (npr. nov, potrebuje popravilo)
     * @param imaOznake Ali asfaltna cesta vsebuje prometne oznake
     * @throws IllegalArgumentException Če je stanje ceste neveljavno
     */
    public AsfaltnaCesta(String ime, double dolzina, String stanje, boolean imaOznake) throws IllegalArgumentException {
        super(ime, dolzina, stanje);
        this.imaOznake = imaOznake;
    }

    /**
     * Getter za prisotnost prometnih oznak na asfaltni cesti.
     *
     * @return <code>true</code> če cesta vsebuje prometne oznake, sicer <code>false</code>
     */
    public boolean getImaOznake() {
        return imaOznake;
    }

    /**
     * Setter za prisotnost prometnih oznak na asfaltni cesti.
     *
     * @param imaOznake <code>true</code> za prisotnost oznak, <code>false</code> za odsotnost oznak
     */
    public void setImaOznake(boolean imaOznake) {
        this.imaOznake = imaOznake;
    }

    /**
     * Dodaj prometne oznake na asfaltno cesto, če te niso prisotne.
     * Če so oznake že prisotne, prikaže sporočilo, da oznake že obstajajo.
     * V nasprotnem primeru doda oznake in prikaže sporočilo o uspehu.
     */
    public void dodajOznake() {
        if (imaOznake) {
            System.out.println("Oznake so že prisotne.");
        } else {
            imaOznake = true;
            System.out.println("Oznake so bile dodane.");
        }
    }
}
