Ugrás a tartalomhoz

class

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

Kiejtés

  • IPA: [klɑ:s] érvénytelen IPA-karakterek (:), replace : with ː
  • hallgatás (US)

Főnév

class (tsz. classes)

  1. (informatika) osztály
  2. tanítási óra

Ige

class (alapjelen, egyes szám harmadik személy classes, folyamatos melléknévi igenév classing, második és harmadik alakja classed)

  1. beoszt
  2. besorol
  3. osztályoz

Az osztályok (classes) a C++ egyik legfontosabb elemei, amelyek lehetővé teszik az objektumorientált programozást (OOP). Az osztályok segítségével adatokat és az ezekhez kapcsolódó műveleteket egyetlen egységbe szervezhetünk, ami tisztább, átláthatóbb és könnyebben karbantartható kódot eredményez.

Ebben az útmutatóban részletesen bemutatjuk a C++ osztályok működését, azok létrehozását, használatát, és az objektumorientált programozás alapelveit.



1. Mi az az osztály?

Egy osztály egy adatstruktúra, amely változókat (tagadatokat) és függvényeket (tagfüggvényeket) tartalmaz. Ezek együtt definiálják az adott osztály viselkedését és állapotát.

Példa egy alapvető osztályra:

#include <iostream>
using namespace std;

class Auto {
public:  // Nyilvános elérési szint
    string marka;
    int evjarat;

    void info() {
        cout << "Marka: " << marka << ", Evjarat: " << evjarat << endl;
    }
};

int main() {
    Auto auto1; // Példányosítás
    auto1.marka = "BMW";
    auto1.evjarat = 2020;

    auto1.info(); // Kiírja: Marka: BMW, Evjarat: 2020

    return 0;
}

Magyarázat: - Az Auto osztály két változót (marka, evjarat) és egy függvényt (info()) tartalmaz. - Az auto1 objektum egy példánya az Auto osztálynak. - Az info() függvény kiírja az objektum adatait.



2. Az osztályok tagjai (adattagok és függvények)

Az osztályokban megadhatunk adattagokat (változókat) és tagfüggvényeket (metódusokat), amelyek működést biztosítanak.

class Ember {
public:
    string nev;
    int eletkor;

    void bemutatkozas() {
        cout << "Szia! A nevem " << nev << ", " << eletkor << " eves vagyok." << endl;
    }
};

int main() {
    Ember ember1;
    ember1.nev = "Kiss Peter";
    ember1.eletkor = 30;
    ember1.bemutatkozas(); // Kiírja: Szia! A nevem Kiss Peter, 30 eves vagyok.
}

3. Hozzáférési szintek: public, private, protected

A C++ osztályokban háromféle hozzáférési szint létezik:

Kulcsszó Leírás
public A tagok bárhonnan elérhetők (osztályon kívül is).
private A tagok csak az osztályon belül érhetők el.
protected Az öröklésben játszik szerepet (öröklött osztályok elérhetik).

Példa:

class BankSzamla {
private:
    double egyenleg; // Privát adattag

public:
    void beallitEgyenleg(double osszeg) {
        egyenleg = osszeg;
    }

    double lekerEgyenleg() {
        return egyenleg;
    }
};

int main() {
    BankSzamla szamla;
    szamla.beallitEgyenleg(10000); // Beállítunk egy értéket
    cout << "Szamla egyenlege: " << szamla.lekerEgyenleg() << " Ft" << endl;
}

Miért fontos a private? - Adatrejtés (Encapsulation): Az egyenleg változót nem tudjuk közvetlenül módosítani, csak az osztályon belüli függvényeken keresztül.



4. Konstruktor és Destruktor

A konstruktor egy speciális függvény, amely akkor fut le, amikor egy objektumot létrehozunk. A destruktor pedig akkor fut le, amikor az objektum megszűnik.

class Auto {
public:
    string marka;
    int evjarat;

    // Konstruktor
    Auto(string m, int e) {
        marka = m;
        evjarat = e;
    }

    void info() {
        cout << "Marka: " << marka << ", Evjarat: " << evjarat << endl;
    }
};

int main() {
    Auto auto1("Ford", 2018); // Automatikusan meghívja a konstruktort
    auto1.info();
}

A destruktor ~OsztalyNev() szintaxissal definiálható:

class Teszt {
public:
    ~Teszt() {
        cout << "Objektum torlodik!" << endl;
    }
};

int main() {
    Teszt obj; // Amikor a program véget ér, a destruktor fut
}

5. Getter és Setter függvények

A private változókat gyakran getter és setter függvényekkel módosítjuk és kérjük le.

class BankSzamla {
private:
    double egyenleg;

public:
    void setEgyenleg(double osszeg) {
        if (osszeg >= 0)
            egyenleg = osszeg;
    }

    double getEgyenleg() {
        return egyenleg;
    }
};

6. Öröklés (inheritance)

Az osztályok egymástól örökölhetnek tulajdonságokat.

class Allat {
public:
    void hang() {
        cout << "Az allat hangot ad ki." << endl;
    }
};

class Kutya : public Allat {
public:
    void ugat() {
        cout << "Vau Vau!" << endl;
    }
};

int main() {
    Kutya kutyus;
    kutyus.hang(); // Örökölt függvény
    kutyus.ugat(); // Saját függvény
}

7. Többalakúság (Polymorphism)

A polimorfizmus lehetővé teszi, hogy egy alap osztály függvényeit a leszármazott osztályok felülírják (override).

class Allat {
public:
    virtual void hang() {
        cout << "Allat hangot ad ki." << endl;
    }
};

class Kutya : public Allat {
public:
    void hang() override {
        cout << "Vau Vau!" << endl;
    }
};

int main() {
    Allat* allatom = new Kutya();
    allatom->hang(); // Kiírja: Vau Vau!
    delete allatom;
}

Összegzés

Az osztályok az OOP alapjai C++-ban.
Adatrejtés (private) biztosítja a biztonságot és modularitást.
A konstruktorok és destruktorok segítik az objektumok kezelését.
Az öröklés és a polimorfizmus lehetővé teszi a kód újrafelhasználását.