Kezdőoldal » Számítástechnika » Programozás » Valaki segít megérteni?

Valaki segít megérteni?

Figyelt kérdés

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


2014. dec. 8. 10:31
 1/8 anonim ***** válasza:

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

2014. dec. 8. 10:39
Hasznos számodra ez a válasz?
 2/8 A kérdező kommentje:
Aha, és ennek akkor mi értelme van,hogy osztályon belül nem publikálunk valamit,ha utána egy metódussal elérjük azt?
2014. dec. 8. 10:41
 3/8 anonim ***** válasza:
Osztályon belül elérhető. A külső elérés szűkítésére meg adtam egy magyarázatot.
2014. dec. 8. 10:44
Hasznos számodra ez a válasz?
 4/8 A kérdező kommentje:
Tehát akkor ennek csak annyi az értelme,hogy osztályon belül tudjuk elérni az adatot mivel, ha public-ra állítanám akkor külső osztályok is elérhetnék ezt az adatot így meg csak osztályon belül érjük el ezt, igaz ?
2014. dec. 8. 10:47
 5/8 anonim ***** válasza:
Egészen pontosan így van.
2014. dec. 8. 10:49
Hasznos számodra ez a válasz?
 6/8 anonim ***** válasza:

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ó,

2014. dec. 8. 13:39
Hasznos számodra ez a válasz?
 7/8 A kérdező kommentje:
így nagyjából mindent megértettem :) amit nem azt meg annak vélem,hogy nemrég kezdtem el az egészet :) köszi a választ
2014. dec. 8. 14:23
 8/8 anonim ***** válasza:

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

2014. dec. 8. 15:46
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!