Ugrás a tartalomhoz

getter

A Wikiszótárból, a nyitott szótárból


Főnév

getter (tsz. getters)

  1. (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:

  1. 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.
  2. 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).
  3. 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.