C ++ klasės ir objektai

Šioje pamokoje su pavyzdžiais sužinosime apie objektus ir klases bei kaip juos naudoti C ++.

Ankstesnėse pamokose mes sužinojome apie funkcijas ir kintamuosius. Kartais pageidautina susieti susijusias funkcijas ir duomenis vienoje vietoje, kad būtų logiška ir lengviau dirbti.

Tarkime, turime saugoti stačiakampio formos kambario ilgį, plotį ir aukštį bei apskaičiuoti jo plotą ir tūrį.

Norėdami atlikti šią užduotį, mes galime sukurti tris kintamuosius, tarkime, ilgį, plotį ir aukštį kartu su funkcijomis calculateArea()ir calculateVolume().

Tačiau C ++, užuot kūrę atskirus kintamuosius ir funkcijas, šiuos susijusius duomenis ir funkcijas taip pat galime apvynioti vienoje vietoje (kurdami objektus ). Ši programavimo paradigma yra žinoma kaip objektinis programavimas.
Tačiau prieš kurdami objektus ir juos naudodami C ++, pirmiausia turime sužinoti apie klases .

C ++ klasė

Klasė yra objekto projektas.
Klasę galime įsivaizduoti kaip namo eskizą (prototipą). Jame yra visa išsami informacija apie grindis, duris, langus ir kt. Remdamiesi šiais aprašais, mes pastatome namą. Namas yra objektas.

Sukurkite klasę

Klasė apibrėžiama C ++, naudojant raktinį žodį, classpo kurio nurodomas klasės pavadinimas.

Klasės kūnas apibrėžiamas garbanotųjų skliaustų viduje, o jo galą užbaigia kabliataškis.

 class className ( // some data // some functions );

Pavyzdžiui,

 class Room ( public: double length; double breadth; double height; double calculateArea()( return length * breadth; ) double calculateVolume()( return length * breadth * height; ) );

Čia mes apibrėžėme klasę, pavadintą Room.

Klasėje deklaruoti kintamieji ilgis, plotis ir aukštis yra žinomi kaip duomenų nariai . Ir, funkcijos calculateArea()ir calculateVolume()yra žinomas kaip nario, funkcijos yra A klasės.

C ++ objektai

Kai klasė apibrėžta, apibrėžta tik objekto specifikacija; nėra skirta atminties ar atminties.

Norėdami naudoti klasėje apibrėžtas duomenų ir prieigos funkcijas, turime sukurti objektus.

Sintaksė objektui apibrėžti C ++

 className objectVariableName;

RoomKlasės objektus (apibrėžtus aukščiau pateiktame pavyzdyje) galime sukurti taip:

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

Čia, dviejų objektų room1 ir room2 šio Roomklasėje yra sukurta sampleFunction(). Panašiai kuriami objektai room3 ir room4 main().

Kaip matome, galime sukurti klasės objektus bet kurioje programos funkcijoje. Mes taip pat galime sukurti klasės objektus pačioje klasėje arba kitose klasėse.

Be to, iš vienos klasės galime sukurti tiek objektų, kiek norime.

C ++ prieigos duomenų nariai ir narių funkcijos

Duomenų narius ir klasės nario funkcijas galime pasiekti naudodami .(taško) operatorių. Pavyzdžiui,

 room2.calculateArea();

Tai iškvies calculateArea()funkciją Roomobjekto „room2“ klasės viduje .

Panašiai prie duomenų narių galima prisijungti kaip:

 room1.length = 5.5;

Šiuo atveju jis inicijuoja 1 kambario ilgio kintamąjį 5.5.

1 pavyzdys: objektas ir klasė programuojant 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; )

Rezultatas

 Kambario plotas = 1309 Kambario tūris = 25132.8

Šioje programoje naudojome Roomklasę ir jos objektų kambarį1, kad apskaičiuotume kambario plotą ir tūrį.

Į main()kodą priskyrėme ilgio, pločio ir aukščio vertes:

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

Tada mes iškvietėme funkcijas calculateArea()ir atlikome calculateVolume()reikiamus skaičiavimus.

Atkreipkite dėmesį į raktinio žodžio publicnaudojimą programoje. Tai reiškia, kad nariai yra vieši ir su jais galima susipažinti bet kurioje programos vietoje.

Pagal savo poreikius mes taip pat galime sukurti privačius narius naudodami privateraktinį žodį. Prie privačių klasės narių galima pasiekti tik kurso viduje. Pavyzdžiui,

 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.

Kita vertus, b ir function2()yra prieinami iš bet kurios programos vietos.

Norėdami sužinoti daugiau apie viešuosius ir privačius raktinius žodžius, apsilankykite mūsų C ++ klasės prieigos modifikatorių pamokoje.

2 pavyzdys: viešojo ir privataus lygio naudojimas C ++ klasėje

 // 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; )

Rezultatas

 Kambario plotas = 1309 Kambario tūris = 25132.8

Ankstesnis pavyzdys yra beveik identiškas pirmajam pavyzdžiui, išskyrus tai, kad klasės kintamieji dabar yra privatūs.

Kadangi dabar kintamieji yra privatūs, negalime prie jų tiesiogiai prisijungti main(). Taigi naudoti šį kodą būtų neteisinga:

 // invalid code obj.length = 42.5; obj.breadth = 30.8; obj.height = 19.2;

Vietoj to, mes naudojame visuomenės funkcija getData()inicijuoti privačių kintamuosius per funkcijos parametrų double len, double brthir double hgt.

Norėdami sužinoti daugiau apie objektus ir klases, apsilankykite šiose temose:

  • C ++ konstruktoriai
  • Kaip perduoti ir grąžinti objektą iš funkcijos?

Įdomios straipsniai...