C ++ třídy a objekty

V tomto tutoriálu se pomocí příkladů dozvíme o objektech a třídách a o tom, jak je používat v C ++.

V předchozích cvičeních jsme se dozvěděli o funkcích a proměnných. Někdy je žádoucí dát související funkce a data na jedno místo, aby to bylo logické a snadnější s nimi pracovat.

Předpokládejme, že musíme uložit délku, šířku a výšku obdélníkové místnosti a vypočítat její plochu a objem.

Abychom zvládli tento úkol, můžeme vytvořit tři proměnné, řekněme délku, šířku a výšku spolu s funkcemi calculateArea()a calculateVolume().

V C ++ však místo vytváření samostatných proměnných a funkcí můžeme tato související data a funkce zabalit také na jednom místě (vytvořením objektů ). Toto paradigma programování je známé jako objektově orientované programování.
Ale než budeme moci vytvářet objekty a používat je v C ++, musíme se nejprve naučit něco o třídách .

C ++ třída

Třída je plán pro objekt.
Můžeme si představit třídu jako náčrt (prototyp) domu. Obsahuje všechny podrobnosti o podlahách, dveřích, oknech atd. Na základě těchto popisů stavíme dům. Dům je objekt.

Vytvořte třídu

Třída je definována v C ++ pomocí klíčového slova classnásledovaného názvem třídy.

Tělo třídy je definováno uvnitř složených závorek a na konci je ukončeno středníkem.

 class className ( // some data // some functions );

Například,

 class Room ( public: double length; double breadth; double height; double calculateArea()( return length * breadth; ) double calculateVolume()( return length * breadth * height; ) );

Zde jsme definovali třídu s názvem Room.

Proměnné délka, šířka a výška deklarované uvnitř třídy jsou známé jako datové členy . Funkce calculateArea()a calculateVolume()jsou známé jako členské funkce třídy.

C ++ objekty

Když je definována třída, je definována pouze specifikace pro objekt; není přidělena žádná paměť ani úložiště.

Abychom mohli používat datové a přístupové funkce definované ve třídě, musíme vytvořit objekty.

Syntaxe k definování objektu v C ++

 className objectVariableName;

Můžeme vytvořit objekty Roomtřídy (definované ve výše uvedeném příkladu) takto:

 // sample function void sampleFunction() ( // create objects Room room1, room2; ) int main()( // create objects Room room3, room4; )

Zde Roomjsou vytvořeny dva objekty room1 a room2 třídy sampleFunction(). Podobně jsou vytvořeny objekty room3 a room4 main().

Jak vidíme, můžeme vytvářet objekty třídy v jakékoli funkci programu. Můžeme také vytvářet objekty třídy v rámci samotné třídy nebo v jiných třídách.

Z jedné třídy také můžeme vytvořit tolik objektů, kolik chceme.

C ++ přístup k datovým členům a členským funkcím

K datovým členům a členským funkcím třídy můžeme přistupovat pomocí .operátoru (tečka). Například,

 room2.calculateArea();

Tím se zavolá calculateArea()funkce uvnitř Roomtřídy pro objekt room2.

Podobně lze k datovým členům přistupovat jako:

 room1.length = 5.5;

V tomto případě inicializuje proměnnou délky room1 na 5.5.

Příklad 1: Objekt a třída v programování 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ýstup

 Plocha místnosti = 1309 Objem místnosti = 25132,8

V tomto programu jsme použili Roomtřídu a její objekt room1 k výpočtu plochy a objemu místnosti.

V main()kódu jsme přiřadili hodnoty délky, šířky a výšky:

 room1.length = 42.5; room1.breadth = 30.8; room1.height = 19.2;

Poté jsme zavolali funkce calculateArea()a calculateVolume()provedli potřebné výpočty.

Všimněte si použití klíčového slova publicv programu. To znamená, že členové jsou veřejní a lze k nim přistupovat kdekoli z programu.

Podle našich potřeb můžeme pomocí privateklíčového slova vytvořit také soukromé členy . K soukromým členům třídy lze přistupovat pouze zevnitř třídy. Napří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 druhou stranu, b a function2()jsou přístupné odkudkoli v programu.

Chcete-li se dozvědět více o veřejných a soukromých klíčových slovech, navštivte náš tutoriál Modifikátory přístupu k třídám C ++.

Příklad 2: Použití veřejného a soukromého ve třídě C ++

 // 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ýstup

 Plocha místnosti = 1309 Objem místnosti = 25132,8

Výše uvedený příklad je téměř totožný s prvním příkladem, kromě toho, že proměnné třídy jsou nyní soukromé.

Protože proměnné jsou nyní soukromé, nemůžeme k nim přistupovat přímo z main(). Proto by použití následujícího kódu bylo neplatné:

 // invalid code obj.length = 42.5; obj.breadth = 30.8; obj.height = 19.2;

Místo toho použít veřejnou funkci getData()inicializovat soukromé proměnné pomocí funkčních parametrů double len, double brtha double hgt.

Další informace o objektech a třídách najdete v těchto tématech:

  • Konstruktory C ++
  • Jak předat a vrátit objekt z funkce?

Zajímavé články...