V tomto tutoriáli sa pomocou príkladov dozvieme o objektoch a triedach a o tom, ako ich používať v C ++.
V predchádzajúcich tutoriáloch sme sa dozvedeli o funkciách a premenných. Niekedy je žiaduce dať súvisiace funkcie a údaje na jedno miesto, aby to bolo logické a ľahšie sa s nimi pracovalo.
Predpokladajme, že musíme uložiť dĺžku, šírku a výšku obdĺžnikovej miestnosti a vypočítať jej plochu a objem.
Na zvládnutie tejto úlohy môžeme vytvoriť tri premenné, napríklad dĺžku, šírku a výšku, spolu s funkciami calculateArea()
a calculateVolume()
.
V C ++ však namiesto vytvárania samostatných premenných a funkcií môžeme tieto súvisiace údaje a funkcie zabaliť aj na jedno miesto (vytvorením objektov ). Táto paradigma programovania je známa ako objektovo orientované programovanie.
Ale predtým, ako budeme môcť vytvárať objekty a používať ich v C ++, je potrebné sa najskôr naučiť niečo o triedach .
C ++ trieda
Trieda je návrhom objektu.
Triedu si môžeme predstaviť ako náčrt (prototyp) domu. Obsahuje všetky podrobnosti o podlahách, dverách, oknách atď. Na základe týchto popisov staviame dom. Dom je objekt.
Vytvorte triedu
Trieda je v C ++ definovaná pomocou kľúčového slova class
nasledovaného názvom triedy.
Telo triedy je definované vo vnútri zložených zátvoriek a na konci je ukončené bodkočiarkou.
class className ( // some data // some functions );
Napríklad,
class Room ( public: double length; double breadth; double height; double calculateArea()( return length * breadth; ) double calculateVolume()( return length * breadth * height; ) );
Tu sme definovali triedu s názvom Room
.
Premenné dĺžka, šírka a výška deklarované vo vnútri triedy sú známe ako dátové členy . A funkcie calculateArea()
a calculateVolume()
sú známe ako členské funkcie triedy.
C ++ objekty
Keď je definovaná trieda, je definovaná iba špecifikácia pre objekt; nie je pridelená žiadna pamäť alebo úložisko.
Aby sme mohli používať dátové a prístupové funkcie definované v triede, musíme vytvárať objekty.
Syntax na definovanie objektu v C ++
className objectVariableName;
Môžeme vytvárať objekty Room
triedy (definované vo vyššie uvedenom príklade) nasledovne:
// sample function void sampleFunction() ( // create objects Room room1, room2; ) int main()( // create objects Room room3, room4; )
Tu Room
sú vytvorené dva objekty room1 a room2 triedy sampleFunction()
. Podobne sú vytvorené objekty room3 a room4 main()
.
Ako vidíme, môžeme vytvárať objekty triedy v akejkoľvek funkcii programu. Môžeme tiež vytvárať objekty triedy v rámci triedy samotnej alebo v iných triedach.
Z jednej triedy tiež môžeme vytvoriť toľko objektov, koľko chceme.
C ++ Prístup k údajovým členom a členom funkcií
K údajovým členom a členom funkcií triedy môžeme pristupovať pomocou .
(bodkového) operátora. Napríklad,
room2.calculateArea();
Toto zavolá calculateArea()
funkciu vo vnútri Room
triedy pre objekt room2.
K dátovým členom je možné získať prístup ako:
room1.length = 5.5;
V takom prípade inicializuje premennú dĺžky miestnosti1 na 5.5
.
Príklad 1: Objekt a trieda v programovaní v C ++
// Program to illustrate the working of // objects and class in C++ Programming #include using namespace std; // create a class class Room ( public: double length; double breadth; double height; double calculateArea() ( return length * breadth; ) double calculateVolume() ( return length * breadth * height; ) ); int main() ( // create object of Room class Room room1; // assign values to data members room1.length = 42.5; room1.breadth = 30.8; room1.height = 19.2; // calculate and display the area and volume of the room cout << "Area of Room = " << room1.calculateArea() << endl; cout << "Volume of Room = " << room1.calculateVolume() << endl; return 0; )
Výkon
Plocha miestnosti = 1309 Objem miestnosti = 25132,8
V tomto programe sme použili Room
triedu a jej objekt room1 na výpočet plochy a objemu miestnosti.
V main()
, kódu sme priradili hodnoty dĺžky, šírky a výšky:
room1.length = 42.5; room1.breadth = 30.8; room1.height = 19.2;
Potom sme zavolali funkcie calculateArea()
a calculateVolume()
vykonali potrebné výpočty.
Všimnite si použitie kľúčového slova public
v programe. To znamená, že členovia sú verejní a je k nim prístup odkiaľkoľvek z programu.
Podľa našich potrieb môžeme pomocou private
kľúčového slova vytvoriť aj súkromných členov . K súkromným členom triedy je prístupný iba z triedy. Napríklad,
class Test ( private:
int a; void function1() ( ) public: int b; void function2() ( ) ) Here, a and function1() are private and are. Thus they cannot be accessed from outside the class.
Na druhej strane, b a function2()
sú prístupné odkiaľkoľvek v programe.
Ak sa chcete dozvedieť viac o verejných a súkromných kľúčových slovách, navštívte náš výukový program Modifikátory prístupu k triede C ++.
Príklad 2: Používanie verejného a súkromného v C ++ triede
// Program to illustrate the working of // public and private in C++ Class #include using namespace std; class Room ( private: double length; double breadth; double height; public: // function to initialize private variables void getData(double len, double brth, double hgt) ( length = len; breadth = brth; height = hgt; ) double calculateArea() ( return length * breadth; ) double calculateVolume() ( return length * breadth * height; ) ); int main() ( // create object of Room class Room room1; // pass the values of private variables as arguments room1.getData(42.5, 30.8, 19.2); cout << "Area of Room = " << room1.calculateArea() << endl; cout << "Volume of Room = " << room1.calculateVolume() << endl; return 0; )
Výkon
Plocha miestnosti = 1309 Objem miestnosti = 25132,8
Vyššie uvedený príklad je takmer totožný s prvým príkladom, s výnimkou toho, že premenné triedy sú teraz súkromné.
Pretože premenné sú teraz súkromné, nemôžeme k nim získať priamy prístup main()
. Preto by použitie nasledujúceho kódu bolo neplatné:
// invalid code obj.length = 42.5; obj.breadth = 30.8; obj.height = 19.2;
Namiesto toho použiť verejnú funkciu getData()
inicializovať súkromné premennej pomocou funkčných parametrov double len
, double brth
a double hgt
.
Ak sa chcete o objektoch a triedach dozvedieť viac, navštívte tieto témy:
- Konštruktory C ++
- Ako odovzdať a vrátiť objekt z funkcie?