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?








