object
Kiejtés
Főnév
object (tsz. objects)
Szókapcsolatok
Ige
object (alapjelen, egyes szám harmadik személy objects, folyamatos melléknévi igenév objecting, második és harmadik alakja objected)
- kifogásol
- ellenez; tiltakozik
- ellenvet
- helytelenít (vmit), ellene van (vminek), tiltakozik, óvást emel (vmi ellen)
- visszautasít, elutasít, elvet
- ellenvet, ellenvetést/kifogást tesz, vmi ellen felhoz vmit
- object - Szótár.net (en-hu)
- object - Sztaki (en-hu)
- object - Merriam–Webster
- object - Cambridge
- object - WordNet
- object - Яндекс (en-ru)
- object - Google (en-hu)
- object - Wikidata
- object - Wikipédia (angol)
Főnév
object (tsz. objects)
Objektumok C++-ban
1. Bevezetés az objektumokba
A C++ egy objektum-orientált programozási (OOP) nyelv, ami azt jelenti, hogy a programokat objektumok és azok közötti interakciók segítségével szervezhetjük. Az objektum egy olyan entitás, amely adatokból (mezők, attribútumok) és a hozzájuk kapcsolódó műveletekből (metódusok, függvények) áll.
Az objektumokat osztályok segítségével definiáljuk. Egy osztály egy tervrajz (blueprint), amely meghatározza, hogy milyen adatokat és viselkedést tartalmaz egy adott típusú objektum.
2. Osztályok és objektumok létrehozása
Egy osztály definiálása és annak példányosítása (objektum létrehozása) az alábbi módon történik:
#include <iostream>
using namespace std;
class Auto {
public:
string marka;
int evjarat;
void bemutatkozas() {
cout << "Ez egy " << marka << " auto, evjarata: " << evjarat << endl;
}
};
int main() {
Auto auto1;
auto1.marka = "Toyota";
auto1.evjarat = 2020;
auto1.bemutatkozas();
return 0;
}
3. Konstruktorok
A konstruktor egy speciális függvény, amelyet az osztály példányosításakor automatikusan meghív a rendszer. Fő feladata az adatok inicializálása.
class Auto {
public:
string marka;
int evjarat;
// Konstruktor
Auto(string m, int e) {
marka = m;
evjarat = e;
}
void bemutatkozas() {
cout << "Ez egy " << marka << " auto, evjarata: " << evjarat << endl;
}
};
int main() {
Auto auto1("Ford", 2018);
auto1.bemutatkozas();
return 0;
}
4. Destruktorok
A destruktor egy speciális függvény, amelyet az objektum élettartamának végén hív meg a rendszer. C++-ban a destruktort a ~
jellel írjuk:
class Auto {
public:
string marka;
Auto(string m) {
marka = m;
}
~Auto() {
cout << "Az " << marka << " auto objektum törölve lett!" << endl;
}
};
int main() {
Auto auto1("Tesla");
return 0;
}
5. Adat- és metódus-hozzáférési szintek
Az osztálytagokat különböző hozzáférési módokkal védhetjük:
public
– mindenki számára elérhető.private
– csak az osztály saját tagjai érhetik el.protected
– az osztály és annak leszármazottjai számára elérhető.
class Auto {
private:
string titkosAdat;
public:
string marka;
void setTitkosAdat(string adat) {
titkosAdat = adat;
}
};
6. Getterek és setterek
Mivel a private
adattagokat nem lehet közvetlenül elérni kívülről, getter és setter függvényeket használunk:
class Auto {
private:
int evjarat;
public:
void setEvjarat(int e) {
if (e > 1885) { // Az első autót 1886-ban gyártották
evjarat = e;
}
}
int getEvjarat() {
return evjarat;
}
};
int main() {
Auto auto1;
auto1.setEvjarat(2022);
cout << "Evjarat: " << auto1.getEvjarat() << endl;
return 0;
}
7. Statikus tagok
A static
kulcsszóval ellátott változók és függvények az osztály összes példánya között közösek:
class Auto {
public:
static int autoSzamlalo;
Auto() {
autoSzamlalo++;
}
};
int Auto::autoSzamlalo = 0;
int main() {
Auto a1, a2, a3;
cout << "Létrehozott autók száma: " << Auto::autoSzamlalo << endl;
return 0;
}
8. Öröklődés
Az egyik osztály örökölheti egy másik osztály tulajdonságait és metódusait:
class Jarmu {
public:
int kerekekSzama;
};
class Auto : public Jarmu {
public:
string marka;
};
int main() {
Auto auto1;
auto1.kerekekSzama = 4;
auto1.marka = "BMW";
cout << auto1.marka << " " << auto1.kerekekSzama << " kerekű." << endl;
return 0;
}
9. Többszörös öröklődés
C++ támogatja a több osztályból történő öröklést:
class Motor {
public:
int teljesitmeny;
};
class Auto {
public:
string marka;
};
class Sportauto : public Motor, public Auto {
public:
int sebesseg;
};
int main() {
Sportauto sa;
sa.teljesitmeny = 500;
sa.marka = "Ferrari";
sa.sebesseg = 350;
cout << sa.marka << " teljesítmény: " << sa.teljesitmeny << " LE, max sebesség: " << sa.sebesseg << " km/h" << endl;
return 0;
}
10. Virtuális függvények és polimorfizmus
A virtuális függvények lehetővé teszik, hogy az alaposztály egy metódusát a leszármazott osztályok módosíthassák:
class Jarmu {
public:
virtual void hang() {
cout << "Általános jármű hang!" << endl;
}
};
class Auto : public Jarmu {
public:
void hang() override {
cout << "Brrrm!" << endl;
}
};
int main() {
Jarmu* j1 = new Auto();
j1->hang(); // A leszármazott osztály verziója fut le
delete j1;
return 0;
}
11. Absztrakt osztályok és interfészek
Ha egy osztály legalább egy pure virtual függvényt tartalmaz, akkor az absztrakt osztály:
class Jarmu {
public:
virtual void hang() = 0; // Pure virtual függvény
};
class Auto : public Jarmu {
public:
void hang() override {
cout << "Vroom!" << endl;
}
};
int main() {
Auto a;
a.hang();
return 0;
}
12. Összegzés
A C++ objektum-orientált programozása lehetővé teszi, hogy komplex és jól szervezett kódokat írjunk. Az osztályok és objektumok használata elengedhetetlen a nagyobb projektek strukturálásához. A fontosabb fogalmak: - Osztályok és objektumok - Konstruktorok és destruktorok - Hozzáférési módosítók - Getterek és setterek - Statikus tagok - Öröklődés és polimorfizmus