Az enumerated állandókat mikor használják?
Az enumerated típusok lényege az, hogy csak jól meghatározott számú, egyedileg azonosított példánya van egy osztálynak.
Jó példa erre a hét napjai.
Kedves Srapnel!
Próbálj olyat is mondani, amikor gyakorlati haszna is van a használatuknak. Én vasárnapi programozóként nemigen tudok kiagyalni olyasmit, amit ne tudnék szimpla állandókkal ugyanúgy megoldani.
Kedves kérdező!
Igen, én csaptam le a múltkor ugyanezt a kérdést. Szánom-bánom. Én nem láttam még igazán meggyőző példát, számomra inkább csak egy különösebb jelentőség nélküli lehetőség.
A hét napjait is jelölheted számokkal. Aztán egyszer valahol lehet pl. egy ilyen metódusod:
public boolean ünnepnap_e(int nap);
Mivel ez egész számot vár, ide beírhatsz bármit, ami jól esik, az egész nem típusbiztos.
Viszont ha van egy Nap enumod, akkor a metódus ilyen lenne:
public boolean ünnepnap_e(Nap nap);
Ide csak napokat tudsz írni, a fordító és az IDE is meggátol abban, ha valami teljesen mást szeretnél.
Abban is, hogy mondjuk két napot összeadj, vagy eloszd őket egymással, aminek pl. semmi értelme a napok esetén. (Pl. kedd * szerda, vagy csütörtök / péntek)
Szóval összefoglalva: típusbiztonság.
"Én nem láttam még igazán meggyőző példát, számomra inkább csak egy különösebb jelentőség nélküli lehetőség."
Az OOP is az az imperatív paradigmához képest. Sőt. Mindent, amit bármilyen nyelven meg tudsz írni, azt assemblyben, hovatovább, Turing-gépen is meg tudnád csinálni, csak hát úgy nem kényelmes. Már pedig az ember mindenhol szeretné saját munkáját megkönnyíteni. Tehát a jelentősége abban van, hogy további kényelmet és önmagyarázó tisztaságot ad a kódnak. A fenti két példából is jobban érthető, hogy mi a metódus argumentuma enummal, mint anélkül.
Egyszerűsíti az azonosítókat. Ha mondjuk játékban kell egy egység oldalát azonosítani, nem azt írod be hogy side = 0;
hanem mondjuk csinálsz pár enumot. Pl:
enum side {usa = 1, germany, ussr};
enum strenght { weak = 20, medium = 25, strong = 30};
struct soldier
{
soldier(int new_side, int new_health);
int side;
int health;
};
soldier joe(usa, weak);
soldier herman(germany, medium);
soldier ivan(ussr, strong);
További kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!