C ++ класове и обекти

В този урок ще научим за обектите и класовете и как да ги използваме в C ++ с помощта на примери.

В предишни уроци научихме за функциите и променливите. Понякога е желателно да поставите свързани функции и данни на едно място, така че да е логично и да се работи по-лесно.

Да предположим, че трябва да съхраним дължината, широчината и височината на правоъгълна стая и да изчислим нейната площ и обем.

За да се справим с тази задача, можем да създадем три променливи, да речем, дължина, ширина и височина, заедно с функциите calculateArea()и calculateVolume().

Въпреки това, в C ++, вместо да създаваме отделни променливи и функции, ние също можем да обвиваме тези свързани данни и функции на едно място (чрез създаване на обекти ). Тази парадигма за програмиране е известна като обектно-ориентирано програмиране.
Но преди да можем да създадем обекти и да ги използваме в C ++, първо трябва да научим за класовете .

C ++ клас

Класът е план за обекта.
Можем да възприемаме клас като скица (прототип) на къща. Той съдържа всички подробности за подовете, вратите, прозорците и др. Въз основа на тези описания ние изграждаме къщата. Къщата е обектът.

Създайте клас

Класът се дефинира в C ++, като се използва ключова дума, 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()са известни като функции-членове на клас.

C ++ обекти

Когато се дефинира клас, се дефинира само спецификацията за обекта; не е разпределена памет или памет.

За да използваме функциите за данни и достъп, дефинирани в класа, трябва да създадем обекти.

Синтаксис за дефиниране на обект в C ++

 className objectVariableName;

Можем да създадем обекти от Roomклас (дефинирани в горния пример), както следва:

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

Тук Roomса създадени два обекта room1 и room2 от класа sampleFunction(). По същия начин обектите room3 и room4 се създават в main().

Както виждаме, можем да създаваме обекти от клас във всяка функция на програмата. Можем също така да създаваме обекти от клас в самия клас или в други класове.

Също така можем да създадем колкото обекти искаме от един клас.

C ++ членове за достъп до данни и функции на членове

Можем да осъществим достъп до членовете на данните и членовите функции на клас, като използваме .(точков) оператор. Например,

 room2.calculateArea();

Това ще извика calculateArea()функцията вътре в Roomкласа за обект room2.

По същия начин членовете на данните могат да бъдат достъпни като:

 room1.length = 5.5;

В този случай той инициализира променливата за дължина на room1 до 5.5.

Пример 1: Обект и клас в програмирането на 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; )

Изход

 Площ на стаята = 1309 Обем на стаята = 25132,8

В тази програма използвахме Roomкласа и неговия обект room1, за да изчислим площта и обема на стая.

В main(), ние присвоихме стойностите на дължина, широчина и височина с кода:

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

След това извикахме функциите calculateArea()и calculateVolume()да извършим необходимите изчисления.

Обърнете внимание на използването на ключовата дума publicв програмата. Това означава, че членовете са публични и могат да бъдат достъпни навсякъде от програмата.

Според нашите нужди можем да създадем и частни членове, използвайки privateключовата дума. Частните членове на клас могат да бъдат достъпни само от класа. Например,

 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.

От друга страна, b и function2()са достъпни отвсякъде в програмата.

За да научите повече за публичните и частните ключови думи, моля, посетете нашия урок за модификатори на достъп до клас C ++.

Пример 2: Използване на публично и частно в клас 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; )

Изход

 Площ на стаята = 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.

За да научите повече за обекти и класове, посетете следните теми:

  • Конструктори на C ++
  • Как да предам и върна обект от функция?

Интересни статии...