Túl sok folyadék

Ennek a fejezetnek az első oldalán a végén felvetettem egy érdekes problémát. Vajon, hogyan lehet megcsinálni, hogy 1 liter folyadék elfogyasztása után pisiszünetet kérjenek a versenyzők?

Akkor még ezt csak versenyzőnként egy plusz változó bevezetésével, minden iváskor az alkohol és a folyadék külön számolgatásával, és minden ivás után egy külön if-el tudtuk volna ezt elképzelni.

Ez az akkori tudásunkkal az elfogyasztott folyadék követéséhez plusz annyi változó, amennyi versenyző, versenyzőnként plusz 1 sor ahol az elfogyasztott folyadékot számoljuk, és minden iváshoz plusz 4 sor. 400 versenyző 1000 italos karácsonyi partiján ez akkor 4800 masszív programsor lenne... jajj...

Ugye már nem így gondolkodunk? :)

Hanem inkább így:

public class Ember {
    double fogyasztottAlkohol=0;
    double alkoholTures=1;
    String nev;
    double ivottMennyiseg=0; // ez itt az újdonság

    Ember(String nev,double alkoholTures) {
        this.nev=nev;
        this.alkoholTures=alkoholTures;
    }


    void igyal(Innivalo innivalo) {
        fogyasztottAlkohol+=innivalo.felszolgaltMeret*innivalo.alkoholTartalomSzazalek/100;

        if (fogyasztottAlkohol>alkoholTures) {
            System.out.println("Jajj, ez sok volt! "+nev+" kidolt!"); 
            System.exit(0);
        }

        // meg ez is az újdonság
        ivottMennyiseg+=innivalo.felszolgaltMeret;
        if (ivottMennyiseg>10) { // ez akkor 1 liter, mert deciben számolunk
            System.out.println(nev+" most feladta, mert szünetre van szüksége!"); 
            System.exit(0);
        }

    }
}

Nem hiszem, hogy úgy gondoltad, hogy 6 darab programsor beírásától most már minden Ember automatikusan képes pisiszünetet kérni, ugye?

Négyzáz ember esetén nem 4800, hanem 6 sor. De ha 1000 ember van a kocsmában, akkor is ez a hat sor felokosítja az Ember példányok viselkedését, úgyhogy bármennyi ember is van, nem kell többet dolgoznunk emiatt.

Az osztály megváltoztatása az összes példányra hat

Az OOP-val egy osztály működését megokosítva az osztály összes példánya okosabban fog működni. Emiatt kevés kód-változtatással látványos, bonyolultnak tűnő dolgokat lehet okosan megoldani.