Miért mondja a 24 órás könyv, hogy tagváltozókat privátként érdemes létrehozni?
C++
Javában is érdemes? Ott is:
WTF MIÉRT?!?!?!
Nem bírok rájönni...
Ennek az az oka, hogy egy metódust override-olhatsz, de egy attribútumot nem.
Pl. ha van egy ilyen osztályod:
Személy(szül-hely, szül-idő, életkor)
Akkor csinálhatsz egy osztályt úgy, hogy az első kettő van attribútumként tárolva, a harmadik meg számolva, de akár olyat is, hogy mindhármat tárolod. Minden esetben úgyis egy getXXX metódus adja az értéket, ezért mindegy, hogy az az attribútumértéket olvassa ki, vagy számolt értéket ad vissza. Ezt attribútumokkal nem tudnád megtenni.
Ez nem nyelvfüggő, ez az OOP egyik konvenciója.
Ja és az előzőek folyománya az, hogy az attribútumokat privátként deklarálod.
Nézheted úgy is a dolgot, mint hogy a tagváltozók az osztály saját magánügye, ő csak egy adott felületet biztosít a rendszer többi része számára. Ha azok akarnak valamit az előbbitől, akkor szépen hívnak metódusokat és nem közvetlenül állítgatnak attribútumértéket. Gondold el, lehet hogy az attribútumok értékei között fenn kell tartanod valami szabályszerűséget és akkor valaki kívülről átállít valamit, így tönkretéve mindent.
1. Az OOP ezt mondja, az enkapszuláció miatt. Egységbe zárás. Az osztály implementációja az ő magánügye, a felületét meg függvények alkotják, amik a neki küldhető üzeneteket jelképezik. Ez azért ilyen faramuci, mert a C++ és a Java is ilyen nem intuitíven implementálta az ojjektumorientáltságot.
2. Szemléletesebben, ha nem private az adattag, akkor mindenki aki az osztályt használja, függ az osztály implementációjától, tehát ha az megváltozik, akkor mindenkit módosítani kell. Ha függvényen keresztül érsz el egy értéket, akkor észrevétlenül ki lehet cserélni az alatta lévő megvalósítást, sokkal szabályozottabb a hozzáférés.
Elvből. Mert az objektum-orientált programozás alapszemlélete az, hogy minden egy objektum, aminek kívülről nem szabad, hogy beleláss a belsejébe.
Gyakorlati haszna is van, okozhat nehezen felismerhető hibákat, ha csak úgy beleturkálsz egy objektumba.
Persze ez csak elv, lehet attól még egy program hibátlan és tökéletes, ha a "szentíráést" nem tartod be. Csak mások le fognak nézni miatta.
Kapcsolódó 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!