//OOP
//objektum literál
let car = {
    name: "Fiat",
    model: 500,
    start: function(){
        return "Az autó elindult.";
    },
    drive: function(){
        return "Az autó megy.";
    }
}

console.log(car.drive());

let ember = {
    nev: "Példa Péter",
    email: "pelda.peter",
    emailKiiras: function(email){
        return `${this.email}@${email}.com`;
    }
}

console.log(ember.emailKiiras("gmail"));

class Szemely{
    //privát mező
    #nev;
    constructor(nev, kor){
        //# kell a változó neve elé
        this.#nev = nev;
        this.kor = kor;
    }

    get nev(){
        return this.#nev;
    }

    set nev(ujNev){
        this.#nev = ujNev;
    }

    ihat(){
        if (this.kor >= 18){
            return `Ihatsz alkoholt!`;
        }
        return `Nem ihatsz alkoholt!`;
    }
}

let szemely1 = new Szemely("Szabó Márton", 19);
console.log(szemely1);
console.log(szemely1.nev);

class Szemely2{
    nev = "Sanyi";
    kor = 12;
}

let szemely2 = new Szemely2();
console.log(szemely2);

//

//programozási konvenció: '_' -al jelezzük hogy privát a mező/adat
class Szemely3{
    static faj = "Ember";
    constructor(nev = "Ismeretlen", kor = 18){
        this._nev = nev;
        this._kor = kor;
    }
    static udvozles(){
        return "Üdözöllek!";
    }
}

let szemely3 = new Szemely3("Szabó Márton");
console.log(szemely3);

console.log(Szemely3.faj);
console.log(Szemely3.udvozles());
//


console.log(szemely1.ihat());



class SzuloOsztaly{
    constructor(nev){
        this.nev = nev;
    }

    koszontes(){
        return `Szia, ${this.nev} vagyok`;
    }
}

class GyermekOsztaly extends SzuloOsztaly{
    constructor(nev, kor = 15){
        super(nev);
        this.kor = kor;
    }
    bemutatkozas(){
        return `${this.koszontes()} és ${this.kor} éves`;
    }
}

let gyermek = new GyermekOsztaly("Péter", 25);
console.log(gyermek.bemutatkozas());

let gyerkoc = new GyermekOsztaly("Valaki");
console.log(gyerkoc.bemutatkozas());

class Allat {
    constructor(nev){
        this.nev = nev;
    }

    hangotAd(){
        return "Állathang";
    }
}

class Kutya extends Allat{
    hangotAd(){
        return "Vau!";
    }
}

class NémetJuhász extends Kutya {
    koszont(){
        return `${this.nev} a kutya azt mondja: ${this.hangotAd()}`;
    }
}

let kutya = new NémetJuhász("Rex");
console.log(kutya.koszont());



// FELADAT

class Szemely_F{
    constructor(nev, kor){
        this.nev = nev;
        this.kor = kor;
    }

    bemutatkozas(){
        return `Szia ${this.nev} vagyok ${this.kor} éves`;
    }
}

class Diak extends Szemely_F{
    static diakSzam = 0;
    constructor(nev, kor, osztaly){
        super(nev, kor);
        Diak.diakSzam++;
        this.osztaly = osztaly;
    }

    bemutatkozas(){
        return `Szia ${this.nev} vagyok ${this.kor} éves és a ${this.osztaly} osztályba járok`;
    }

    static diakokSzama(){
        return Diak.diakSzam;
    }
}

let digi = new Diak("Szabó Márton", 19, "13.B");
console.log(digi);
console.log(Diak.diakokSzama());
console.log(digi.bemutatkozas());
let vitix = new Diak("Vitányi Krisztián", 19, "13.B");
console.log(vitix);
console.log(Diak.diakokSzama());
console.log(vitix.bemutatkozas());