Gyakorlati alapok III.

A getter-setter függvények

 

Bevezetés

 

A Tisztelt Olvasó egyre jobban megbizonyosodhat arról, hogy az objektumorientált programozás alapja az egymástól elkülönült (tegyük hozzá: szándékosan jól elkülönített) objektumok funkcionális összekapcsolása egy magasabb szintű programozási cél érdekében.
Az objektum alapja pedig maga az osztály, amely már önmagában is működőképes, a külvilágtól elzárt, valamilyen funkcionalitás szerint logikusan megtervezett kódegység. Az osztály dedikált működéséhez szükséges adatokat és metódusokat tartalmaz, nagyobbrészt azon célból, hogy ezeket szabadon, ám ellenőrzött körülmények között felhasználhassuk. Bármely funkciójú osztálynak lehetnek olyan belső metódusai, amelyek működése nem tartozik a külvilágra, sőt egyenesen veszélyes volna elérésüket megengedni. Vegyünk például egy komplex adóprogramot, amelyik különálló osztályokban:

www.informatika-programozas.hu - Ezt most meg kell tanulni!

 

Gondoljunk bele, mi történne, ha például az adatbázis-módosításokat jogosulatlan felhasználónál is engedélyeznénk! Ám ez fordítva is igaz: nincs értelme kommunikációs felületnek, ha senkinek sincs jogosultsága használni.

A védelem első vonala a hozzáférés-módosítók okos, megfontolt használata. A második arcvonalban is léteznek további trükkök, amelyek egyébiránt jó ideje az objektumorientált programozás szerves (továbblépve: kötelező) részét képezik.

Az osztály adatai legtöbbször az osztály belső magánügye, bemeneti adatokként értelmezve egyfajta számítási kiindulópontok.

Az állítás megértéséhez állítsunk egy érdekes párhuzamot az osztály és az ember között. Az embernek is számtalan metódusa van, amit leginkább a tevékenység szóra lehetne most átkonvertálni.

 

www.informatika-programozas.hu

 

Az ember néhány tevékenysége publikus, ám nem oly meglepő módon léteznek privátok is. Egyúttal az ember sok adattal is rendelkezik, a legtöbbjük azonban személyes és senki sem adja ki őket szívesen a nyilvánosság számára. Ez talán mostanában kezd megváltozni a Facebook és más közösségi oldalak térhódításával, ettől függetlenül mégsem üldögélünk a buszon nyakunkban egy nagyított névjegykártyával. Adataink tehát alapjában véve privátok és védjük őket.

 

www.informatika-programozas.hu

 

Az osztályban sincs másképpen: legtöbb adata privát hozzáférést kap. Ekkor azonban felmerül a jogos kérdés, hogy miként fogja elérni azokat egy külső osztály?

Természetesen különbséget kell tennünk az elérési szintekben: nem mindegy, hogy az adatokat csak kinyerjük és felhasználjuk vagy módosítjuk is. Itt érkeztünk el a lényeghez:

 

www.informatika-programozas.hu - Ezt most meg kell tanulni!

 

Az adatokat egy jól megtervezett osztályban csakis metódusokon keresztül érhetjük el!

 

Mit érünk ezzel? Az adat saját privát hozzáférése miatt érintetlen marad, ám a metódusokon keresztül mégis elérhetővé válik, sőt ezt a hozzáférést a metódusokon keresztül sokféle módon szabályozni is tudjuk.

Erről a rugalmas hozzáférésről gondoskodnak az immár kötelezően használandó getter-setter függvények. Konkrét használatukat a következő fejezetben ismertetjük.