getter
Főnév
getter (tsz. getters)
- (informatika) A getter egy olyan speciális metódus a C++-ban, amelyet az osztály adattagjainak elérésére használunk. A getterek célja, hogy biztosítsák az osztály adattagjainak olvashatóságát anélkül, hogy közvetlen hozzáférést biztosítanának azokhoz. A getterek segítenek megőrizni az encapsuláció (adat elrejtésének) elvét, mivel a változókat közvetlenül nem érhetjük el, csak a getterek (és potenciálisan setterek) révén.
1. Getter alapú példák
A getterek általában az alábbi szintaxist követik: a metódus visszaadja az adattagot (vagy annak értékét), és nem változtat azon. A gettereket gyakran get előtaggal nevezzük el, például getX() vagy getAge().
Példa:
#include <iostream>
using namespace std;
class Szemely {
private:
string nev;
int eletkor;
public:
// Konstruktor
Szemely(string n, int e) : nev(n), eletkor(e) {}
// Getter metódusok
string getNev() const {
return nev;
}
int getEletkor() const {
return eletkor;
}
};
int main() {
Szemely szemely1("Kiss Péter", 30);
// Getterek segítségével hozzáférünk az adattagokhoz
cout << "Név: " << szemely1.getNev() << endl;
cout << "Életkor: " << szemely1.getEletkor() << " év" << endl;
return 0;
}
Kimenet:
Név: Kiss Péter Életkor: 30 év
Magyarázat: - Az Szemely osztály nev és eletkor adattagjait privát módon deklaráltuk, tehát közvetlenül nem érhetjük el őket. - A getter metódusok, mint a getNev() és getEletkor(), nyilvánosan elérhetők és visszaadják az adattagok értékét.
2. Getterek és konstans tagfüggvények
A getterek általában const típusúak, hogy jelezzük, hogy nem módosítják az objektum állapotát. A const kulcsszó azt jelenti, hogy a getter nem változtatja meg az objektum belső állapotát, csak hozzáfér annak adatainak.
Példa:
#include <iostream>
using namespace std;
class Diak {
private:
string nev;
int pontszam;
public:
// Konstruktor
Diak(string n, int p) : nev(n), pontszam(p) {}
// Getterek const típusúak, mivel nem változtatják meg az objektumot
string getNev() const {
return nev;
}
int getPontszam() const {
return pontszam;
}
};
int main() {
Diak diak1("Szabó Anna", 95);
// A getterek segítségével kiírhatjuk a diák adatait
cout << "Diák neve: " << diak1.getNev() << endl;
cout << "Pontszáma: " << diak1.getPontszam() << endl;
return 0;
}
Kimenet:
Diák neve: Szabó Anna Pontszáma: 95
Magyarázat: - A getNev() és getPontszam() metódusok const-ok, ami biztosítja, hogy nem módosítják az objektum adattagjait. - A getterek nem változtatják meg az objektum belső állapotát, csupán annak értékét adják vissza.
3. Getterek előnyei
A getterek használata lehetővé teszi a következő előnyöket:
- Adat elrejtése (encapsulation): Az adattagokat nem érhetjük el közvetlenül, csak a gettereken keresztül, így biztosítva a programunk biztonságos működését.
- Validáció: A getterek segítségével adatokat olvashatunk, miközben a getterben végrehajthatunk validációt vagy egyéb műveleteket (pl. konvertálás).
- Karbantarthatóság: Ha a program később változtatásokat igényel (pl. az adattípus módosítása), akkor csak a gettereket kell módosítani, nem pedig az osztály minden egyes előfordulását.
4. Getterek és setterek
A getterek és setterek gyakran együtt használatosak. A setterek az osztály adattagjainak módosítására szolgálnak, míg a getterek az adattagok elérésére.
Példa getterekkel és setterekkel:
#include <iostream>
using namespace std;
class Szemely {
private:
string nev;
int eletkor;
public:
// Konstruktor
Szemely(string n, int e) : nev(n), eletkor(e) {}
// Getterek
string getNev() const {
return nev;
}
int getEletkor() const {
return eletkor;
}
// Setterek
void setNev(string n) {
nev = n;
}
void setEletkor(int e) {
if (e > 0) {
eletkor = e;
} else {
cout << "Életkor érvénytelen!" << endl;
}
}
};
int main() {
Szemely szemely1("Kiss Péter", 30);
// Getterek
cout << "Név: " << szemely1.getNev() << endl;
cout << "Életkor: " << szemely1.getEletkor() << endl;
// Setterek
szemely1.setNev("Szabó János");
szemely1.setEletkor(35);
// Módosított adatok
cout << "Módosított Név: " << szemely1.getNev() << endl;
cout << "Módosított Életkor: " << szemely1.getEletkor() << endl;
return 0;
}
Kimenet:
Név: Kiss Péter Életkor: 30 Módosított Név: Szabó János Módosított Életkor: 35
Magyarázat: - A setNev() és setEletkor() setterek segítségével módosíthatjuk az osztály privát adattagjait. - A getNev() és getEletkor() getterek segítségével olvashatjuk az adattagokat.
5. Összegzés
A getterek egy alapvető technika az objektum-orientált programozásban (OOP), amely lehetővé teszi az osztály adattagjainak védett elérését. A getterek biztosítják, hogy az objektum belső állapota ne módosulhasson kívülről, és hogy az adatokat kontrollált módon olvashassuk ki. A getterek és setterek segítenek fenntartani az encapsuláció (adat elrejtés) elvét, amely az OOP egyik alapköve.