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 class
nakon 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 Room
klase (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 Room
su 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 Room
klase 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 Room
klasu 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 public
u 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 private
ključ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 brth
i double hgt
.
Da biste saznali više o objektima i klasama, posjetite ove teme:
- Konstruktori C ++
- Kako proslijediti i vratiti objekt iz funkcije?