В този урок ще научим за обектите и класовете и как да ги използваме в 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 ++
- Как да предам и върна обект от функция?