У овом упутству ћемо научити о објектима и класама и како их користити у Ц ++ уз помоћ примера.
У претходним водичима научили смо о функцијама и променљивим. Понекад је пожељно ставити повезане функције и податке на једно место, тако да је логично и лакше са њима радити.
Претпоставимо да морамо да сачувамо дужину, ширину и висину правоугаоне собе и да израчунамо њену површину и запремину.
Да бисмо се носили са овим задатком, можемо створити три променљиве, рецимо, дужину, ширину и висину, заједно са функцијама calculateArea()
и calculateVolume()
.
Међутим, у Ц ++-у, уместо да стварамо одвојене променљиве и функције, такође можемо умотати ове повезане податке и функције на једном месту (стварањем објеката ). Ова парадигма програмирања позната је као објектно оријентисано програмирање.
Али пре него што креирамо објекте и користимо их у Ц ++-у, прво морамо да научимо о класама .
Ц ++ класа
Класа је нацрт објекта.
О класи можемо размишљати као о скици (прототипу) куће. Садржи све детаље о подовима, вратима, прозорима итд. На основу ових описа градимо кућу. Кућа је објект.
Направите класу
Класа је дефинисана у језику Ц ++ помоћу кључне речи class
праћене називом класе.
Тело класе је дефинисано унутар коврџавих заграда и завршава се тачком и зарезом на крају.
class className ( // some data // some functions );
На пример,
class Room ( public: double length; double breadth; double height; double calculateArea()( return length * breadth; ) double calculateVolume()( return length * breadth * height; ) );
Овде смо дефинисали класу која се зове Room
.
Променљиве дужина, ширина и висина декларисане унутар класе познате су као чланови података . И, функције calculateArea()
и calculateVolume()
познати су као чланица функција једне класе.
Ц ++ објекти
Када се дефинише класа, дефинише се само спецификација за објекат; није додељена меморија или складиште.
Да бисмо користили функције података и приступа дефинисане у класи, треба да креирамо објекте.
Синтакса за дефинисање објекта у Ц ++
className objectVariableName;
Објекте Room
класе (дефинисане у горњем примеру) можемо креирати на следећи начин:
// sample function void sampleFunction() ( // create objects Room room1, room2; ) int main()( // create objects Room room3, room4; )
Овде Room
се креирају два предмета роом1 и роом2 класе sampleFunction()
. Слично томе, креирају се објекти роом3 и роом4 main()
.
Као што видимо, можемо створити објекте класе у било којој функцији програма. Такође можемо креирати објекте класе у самој класи или у другим класама.
Такође, из једне класе можемо створити онолико објеката колико желимо.
Чланови приступа подацима Ц ++ и функције чланова
Члановима података и функцијама чланова класе можемо приступити помоћу .
(тачканог) оператора. На пример,
room2.calculateArea();
То ће позвати calculateArea()
функцију унутар Room
класе за објект роом2.
Слично томе, члановима података може се приступити као:
room1.length = 5.5;
У овом случају иницијализује променљиву дужине роом1 на 5.5
.
Пример 1: Објекат и класа у програмирању на Ц ++
// 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; )
Оутпут
Area of Room = 1309 Volume of Room = 25132.8
In this program, we have used the Room
class and its object room1 to calculate the area and volume of a room.
In main()
, we assigned the values of length, breadth, and height with the code:
room1.length = 42.5; room1.breadth = 30.8; room1.height = 19.2;
We then called the functions calculateArea()
and calculateVolume()
to perform the necessary calculations.
Note the use of the keyword public
in the program. This means the members are public and can be accessed anywhere from the program.
As per our needs, we can also create private members using the private
keyword. The private members of a class can only be accessed from within the class. For example,
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.
On the other hand, b and function2()
are accessible from everywhere in the program.
Да бисте сазнали више о јавним и приватним кључним речима, посетите наш водич за модификаторе приступа Ц ++ Цласс.
Пример 2: Коришћење јавног и приватног у Ц ++ класи
// 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; )
Оутпут
Површина собе = 1309 Запремина собе = 25132,8
Горњи пример је готово идентичан првом примеру, осим што су променљиве класе сада приватне.
Пошто су променљиве сада приватне, не можемо им директно приступити main()
. Стога би употреба следећег кода била неваљана:
// invalid code obj.length = 42.5; obj.breadth = 30.8; obj.height = 19.2;
Уместо тога, ми користимо јавну функцију getData()
да покренете приватне варијабле преко параметара функције double len
, double brth
и double hgt
.
Да бисте сазнали више о објектима и класама, посетите ове теме:
- Ц ++ конструктори
- Како проследити и вратити објекат из функције?