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...
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.