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 class
ná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 Room
tří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 Room
jsou 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ř Room
tří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 Room
tří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 public
v 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í private
klíč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 brth
a 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?