Triedy a objekty v C ++

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 classnasledované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 Roomtriedy (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 Roomsú 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 Roomtriedy 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 Roomtriedu 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 publicv 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 privatekľúč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 brtha 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?

Zaujímavé články...