Valaki segít megérteni?
Tehát java nyelvről van most szó, létrehozok egy osztályt ami publikus és az osztályon belül létrehozok egy stringet
public class animals{
private string name;
}
miért kell elrejteni az osztályon belül ennek az értékét? mert ugye az animals osztályunk publikus és akkor nem akarunk hozzáférést biztosítani a névhez? vagy ez,hogy van? :O
Elrejtés után hozzáadunk szükség esetén getter-setter metódusokat, máris elérik - DE ellenőrzött módon, pl. validálást építhetünk a setter-be, vagy konverziót a getter-be, stb.
(Egyébként ez Java nyelvtől független OOP kérdés.)
A kontroll az egésznek a lényege.
A név egy saját adat, nem feltétlenül helyes ha mások piszkálják.
Ha mégis engedjük, lehet hogy validálni kell előtte, esetleg figyelni, nem-e tartalmaz érvénytelen karaktereket, vagy mondjuk egyedi-e. Lehet van egy másik mezőnk, mondjuk egy rövid név, vagy FQN string amit egyidejűleg változtatni kell. Lehet hogy az objektum egy adatbázis sora és minden változtatásnál be kell állítani egy dirty flag-et, hogy a következő kötegelt tranzakciónál update-elje a rekordot.
Ha az láthatósága public lenne, akkor nem tudnánk ellenőrzött módon megtenni a fenti dolgokat.
Ha pedig 50 revízióval később átállítjuk private-ra és írunk kegy settert akkor sok-sok helyen kell átírnunk majd a kódbázist és az minden csak nem kellemes, nem beszélve arról, hogy nem hasznos munka, tehát égetjük a projekt erőforrásait.
Létezik egy speciális tervezési minta ahol lehetnek az adattagok public-ok, ez a descriptor vagy member osztály. Ezek tipikusan privát al-osztályok, tehát maga az osztály nem látható kívülről, azonban a befoglaló osztály használja. Ez egyrészt kényelmes, másrészt pedig könnyen bővíthető, így pl egy Factory vagy Builder mintához jól illesztkedik és könnyen karbantartható,
Meg akkor is használunk ilyen elrejtést, ha mondjuk egy ilyen módosítás más dolgokat is magával ránt. Ha pl. van egy kocsid 4 kerékkel, de te át akarod írni 3 kerékre, az nem elég ugye, hogy kivesszük a kocsi alól az egyik kereket, hanem át kell szervezni az egész kocsi működését is.
17/L
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!