C ++ klase i objekti

U ovom uputstvu naučit ćemo o objektima i klasama te kako ih koristiti u C ++ uz pomoć primjera.

U prethodnim tutorijalima naučili smo o funkcijama i varijablama. Ponekad je poželjno staviti povezane funkcije i podatke na jedno mjesto kako bi bilo logično i lakše raditi.

Pretpostavimo da trebamo pohraniti duljinu, širinu i visinu pravokutne sobe i izračunati njezinu površinu i volumen.

Da bismo se nosili s tim zadatkom, možemo stvoriti tri varijable, recimo, dužinu, širinu i visinu, zajedno s funkcijama calculateArea()i calculateVolume().

Međutim, u C ++-u, umjesto stvaranja zasebnih varijabli i funkcija, ove povezane podatke i funkcije također možemo zamotati na jedno mjesto (stvaranjem objekata ). Ova programska paradigma poznata je kao objektno orijentirano programiranje.
No, prije nego što možemo stvoriti objekte i koristiti ih u C ++-u, prvo moramo naučiti o klasama .

C ++ klasa

Klasa je nacrt predmeta.
O klasi možemo razmišljati kao o skici (prototipu) kuće. Sadrži sve detalje o podovima, vratima, prozorima itd. Na temelju ovih opisa gradimo kuću. Kuća je objekt.

Stvorite razred

Klasa je definirana u C ++ pomoću ključne riječi classnakon koje slijedi naziv klase.

Tijelo klase definirano je unutar kovrčavih zagrada i završava se zarezom na kraju.

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

Na primjer,

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

Ovdje smo definirali razred s imenom Room.

Varijable dužina, širina i visina deklarirane unutar klase poznate su kao članovi podataka . Funkcije calculateArea()i calculateVolume()poznate su kao funkcije člana klase.

C ++ objekti

Kada se definira klasa, definira se samo specifikacija za objekt; nije dodijeljena memorija ili pohrana.

Da bismo koristili podatke i funkcije pristupa definirane u klasi, moramo stvoriti objekte.

Sintaksa za definiranje objekta u C ++

 className objectVariableName;

Objekte Roomklase (definirane u gornjem primjeru) možemo stvoriti kako slijedi:

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

Ovdje Roomsu stvorena dva predmeta room1 i room2 klase sampleFunction(). Slično tome, u sobi se stvaraju predmeti room3 i room4 main().

Kao što vidimo, možemo stvoriti objekte klase u bilo kojoj funkciji programa. Također možemo stvoriti objekte klase unutar same klase ili u drugim razredima.

Također, iz jedne klase možemo stvoriti onoliko objekata koliko želimo.

C ++ Pristup članovima podataka i funkcijama članova

Članovima podataka i funkcijama člana klase možemo pristupiti pomoću .(točkanog) operatora. Na primjer,

 room2.calculateArea();

To će pozvati calculateArea()funkciju unutar Roomklase za objekt room2.

Slično tome, članovima podataka može se pristupiti kao:

 room1.length = 5.5;

U ovom slučaju inicijalizira varijablu dužine room1 na 5.5.

Primjer 1: Objekt i klasa u programiranju na 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; )

Izlaz

 Površina sobe = 1309 Volumen sobe = 25132,8

U ovom smo programu koristili Roomklasu i njezin objekt room1 za izračunavanje površine i volumena sobe.

Godine main()dodijelili smo vrijednosti duljine, širine i visine kodom:

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

Zatim smo pozvali funkcije calculateArea()i calculateVolume()izvršili potrebne proračune.

Obratite pažnju na upotrebu ključne riječi publicu programu. To znači da su članovi javni i da im se može pristupiti bilo gdje iz programa.

Prema našim potrebama, također možemo stvoriti privatne članove pomoću privateključne riječi. Privatnim članovima klase može se pristupiti samo unutar razreda. Na primjer,

 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.

S druge strane, b i function2()dostupni su svugdje u programu.

Da biste saznali više o javnim i privatnim ključnim riječima, posjetite naš vodič za modifikatore pristupa C ++ klase.

Primjer 2: Korištenje javnog i privatnog u C ++ klasi

 // 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; )

Izlaz

 Površina sobe = 1309 Volumen sobe = 25132,8

Gornji je primjer gotovo identičan prvom primjeru, osim što su varijable klase sada privatne.

Budući da su varijable sada privatne, ne možemo im pristupiti izravno s main(). Stoga bi uporaba sljedećeg koda bila nevaljana:

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

Umjesto toga, mi koristimo javnu funkciju getData()na početne vrijednosti privatne varijable putem parametara funkcije double len, double brthi double hgt.

Da biste saznali više o objektima i klasama, posjetite ove teme:

  • Konstruktori C ++
  • Kako proslijediti i vratiti objekt iz funkcije?

Zanimljivi članci...