C ++ osztály és objektum példával

Mi az osztály?

A C ++ osztály egyesíti az adatokat és az adatok manipulálásának módszereit. Az osztályok meghatározzák az objektumok formáját is. Az osztályban szereplő adatokat és módszereket osztálytagként ismerjük. Az osztály egy felhasználó által definiált adattípus. Az osztálytagok eléréséhez az osztály egy példányát használjuk. Az osztály egy objektum tervrajzaként tekinthető meg.

Az osztály legyen a ház prototípusa. Megmutatja az ajtók, ablakok, padlók stb. Elhelyezkedését és méretét. Ezekből a leírásokból házat építhetünk. A ház lesz a tárgy. A prototípusból sok ház készíthető. Ezenkívül számos objektumot is létrehozhat egy osztályból.

A fenti ábrán egyetlen ház prototípusunk van. Ebből a prototípusból két különböző tulajdonságú házat hoztunk létre.

Ebben az oktatóanyagban megtudhatja:

  • Mi az osztály?
  • Osztálypélda
  • Privát és nyilvános kulcsszavak
  • Object Definition
  • Adattagok elérése
  • Osztálytag funkciók
  • Kivitelezők és rombolók

Osztálynyilatkozat

A C + nyelven egy osztályt az osztály kulcsszóval definiálunk. Ezt követnie kell az osztály nevének. Ezután az osztálytestet hozzáadjuk a göndör zárójelek közé {}.

Szintaxis:

class class-name{// data// functions};
  • Az osztálynév az osztályhoz rendelendő név.
  • Az adatok az osztály adatai, általában változóként deklarálva.
  • A függvények az osztályfüggvények.

Privát és nyilvános kulcsszavak

Biztosan találkozott ezzel a két kulcsszóval. Ezek hozzáférés-módosítók.

  • Magán:

Amikor a privát kulcsszót használjuk egy függvény vagy osztály meghatározásához, az priváttá válik. Ilyenek csak az osztályon belül érhetők el.

  • Nyilvános:

A nyilvános kulcsszó viszont nyilvánossá teszi az adatokat / funkciókat. Ezek az osztályon kívülről elérhetők.

Object Definition

Az objektumok osztályokból jönnek létre. Az osztályobjektumok deklarálása hasonló módon történik, mint a változók deklarálása. Az osztály nevének el kell kezdődnie, amelyet az objektum neve követ. Az osztálytípus objektuma.

Szintaxis:

class-name object-name;
  • Az osztálynév annak az osztálynak a neve, amelyből objektumot kell létrehozni.
  • Az objektumnév az új objektumhoz rendelendő név.

Az objektum osztályból történő létrehozásának ezt a folyamatát példányosításnak nevezzük.

Adattagok elérése

Az osztály nyilvános tagjainak eléréséhez a (.) Dot operátort használjuk. Ezek a tagok nyilvános hozzáférés-módosítóval vannak jelölve.

1. példa:

#include using namespace std;class Phone {public:double cost;int slots;};int main() {Phone Y6;Phone Y7;Y6.cost = 100.0;Y6.slots = 2;Y7.cost = 200.0;Y7.slots = 2;cout << "Cost of Huawei Y6 : " << Y6.cost << endl;cout << "Cost of Huawei Y7 : " << Y7.cost << endl;cout << "Number of card slots for Huawei Y6 : " << Y6.slots << endl;cout << "Number of card slots for Huawei Y7 : " << Y7.slots << endl;return 0;}

Kimenet:

Itt van egy képernyőkép a kódról:

Kód Magyarázat:

  1. A funkcióinak használata érdekében vegye fel az iostream fejléc fájlt a kódunkba.
  2. Az std névtér beépítése a kódunkba, hogy az osztályait hívás nélkül használhassa.
  3. Nyújtson be egy Telefon nevű osztályt.
  4. A nyilvános hozzáférés módosítója segítségével a létrehozni kívánt változókat nyilvánosan hozzáférhetőként jelöljük meg.
  5. Nyújtsa be a kettős adattípus változó költségét.
  6. Nyújtson be egy egész változót, amelynek neve slot.
  7. Az osztálytest vége.
  8. A main () függvény meghívása. A program logikáját hozzá kell adni a törzséhez.
  9. Hozzon létre egy telefon típusú Y6 nevű objektumot. Ezt nevezzük példányosításnak.
  10. Hozzon létre egy telefon típusú Y7 nevű objektumot. Ezt nevezzük példányosításnak.
  11. Hozzáférés a Telefon osztály változó / tagköltségéhez az Y6 objektum használatával. Az érték 100,0. Az Y6 költsége most 100,0.
  12. A telefon osztály változó- / taghelyeihez az Y6 objektum segítségével férhet hozzá. Az érték 2-re van állítva. Az Y6 rései most 2-re vannak állítva.
  13. Hozzáférés a Telefon osztály változó / tagköltségéhez az Y7 objektum használatával. Az érték 200,0. Az Y7 költsége most 200,0.
  14. Hozzáférés a Telefon osztály változó- / taghelyeihez az Y7 objektum segítségével. Az érték 2-re van állítva. Az Y7 rései most 2-re vannak állítva.
  15. Nyomtassa ki az Y6 költségét a konzolra a többi szöveg mellett.
  16. Nyomtassa ki az Y7 költségét a konzolra a többi szöveg mellett.
  17. Nyomtassa ki az Y6 rések számát a többi szöveg mellett.
  18. Nyomtassa ki az Y7 rések számát a többi szöveg mellett.
  19. A programnak eredményt kell adnia a sikeres befejezés után.
  20. A fő () függvény törzsének vége.

Mi az a privát osztály?

A privátként megjelölt osztálytagokhoz csak az osztályon belül definiált funkciók férhetnek hozzá. Az osztályon kívül definiált objektumok vagy funkciók nem férhetnek hozzá közvetlenül az ilyen tagokhoz. A privát osztály tagjához csak tag és barát funkciók férhetnek hozzá.

Mi az a védett osztály?

A védettként megjelölt osztálytagok előnyben vannak a privátként megjelöltekkel szemben. A definíciójuk osztályán belüli funkciók segítségével érhetők el. Ezenkívül származtatott osztályokból is elérhetők.

2. példa:

#include using namespace std;class ClassA {public:void set_a(int val);int get_a(void);private:int a;};int ClassA::get_a(void) {return a;}void ClassA::set_a(int val) {a = val;}int main() {ClassA a;a.set_a(20);cout << "Value of a is: " << a.get_a();return 0;}

Kimenet:

Itt van egy képernyőkép a kódról:

Kód Magyarázat:

  1. A funkcióinak használatához vegye fel az iostream fejlécfájlt kódunkba.
  2. Vegye fel az std névteret a kódunkba, hogy az osztályait hívás nélkül használhassa.
  3. Hozzon létre egy ClassA nevű osztályt.
  4. A nyilvános hozzáférés módosítójával jelölje meg a létrehozandó osztálytagot nyilvánosan hozzáférhetőként.
  5. Hozza létre a set_a () nevű függvényt, amely egy egész egész értéket vesz fel.
  6. Hozzon létre egy get_a () nevű függvényt.
  7. A privát hozzáférés módosítóval jelölje meg a létrehozandó osztálytagot privát hozzáférhetőként.
  8. Nyújtsa be az a nevű egész változót.
  9. Az osztálytest vége.
  10. Használja az osztály nevét és a hatókör felbontás operátort a get_a () függvény eléréséhez. Meg akarjuk határozni, hogy a függvény mit csinál, amikor meghívják.
  11. A get_a () függvénynek vissza kell adnia az a változó értékét, amikor meghívja.
  12. A get_a () függvény definíciójának vége.
  13. Használja az osztály nevét és a hatókör felbontás operátort a set_a () függvény eléréséhez. Meg akarjuk határozni, hogy a függvény mit csinál, amikor meghívják.
  14. A val változó értékének hozzárendelése az a változóhoz.
  15. A set_a () függvény definíciójának vége.
  16. Hívja meg a main () függvényt. A program logikát hozzá kell adni ennek a függvénynek a törzséhez.
  17. Hozzon létre egy ClassA példányt, és adja meg neki a nevet.
  18. Használja a fenti osztálypéldányt és a set_a () függvényt, hogy 20 értéket rendeljen az a változóhoz.
  19. Nyomtasson egy szöveget az a változó értéke mellett a konzolon. Az a változó értékét a get_a () függvény meghívásával kapjuk meg.
  20. A programnak a sikeres befejezés után vissza kell térnie az értékre.
  21. A funkciótest vége main ().

3. példa:

#include using namespace std;class ParentClass {protected:int value;};class ChildClass : public ParentClass {public:void setId(int x) {value = x;}void displayValue() {cout << "Value is: " << value << endl;}};int main() {ChildClass c;c.setId(21);c.displayValue();return 0;}

Kimenet:

Itt van egy képernyőkép a kódról:

Kód Magyarázat:

  1. A funkcióinak használatához vegye fel az iostream fejlécfájlt kódunkba.
  2. Vegye fel az std névteret a kódunkba, hogy az osztályait hívás nélkül használhassa.
  3. Hozzon létre egy ParentClass nevű osztályt.
  4. A védett hozzáférés-módosítóval jelölje meg a létrehozandó osztálytagot védettként.
  5. Hozzon létre egy egész változó nevű értéket.
  6. Az osztálytest vége.
  7. Hozzon létre egy új osztályt ChildClass néven, amely örökli a ParentClass-ot.
  8. A védett hozzáférés-módosítóval jelölje meg a létrehozandó osztálytagot a gyermekosztályok számára hozzáférhetőként.
  9. Hozza létre a setId () nevű függvényt, amely egy egész x értéket vesz fel.
  10. Az x változó értékének hozzárendelése a változó értékéhez.
  11. A setId () függvény definíciójának vége.
  12. Hozzon létre egy displayValue () nevű függvényt.
  13. Nyomtassa ki a konzolra az elnevezett változó értékét más szöveg mellé.
  14. A displayValue () függvény törzsének vége.
  15. A ChildClass nevű osztály törzsének vége.
  16. Hívja meg a main () függvényt. A program logikát hozzá kell adni ennek a függvénynek a törzséhez.
  17. Hozzon létre egy ChildClass példányt, és adja meg neki a c nevet.
  18. A fenti osztálypéldány és a setId () függvény segítségével 21 értéket rendelhet az x változóhoz.
  19. A fenti osztálypéldány segítségével hívja meg a displayValue () nevű függvényt.
  20. A programnak a sikeres befejezés után vissza kell térnie az értékre.
  21. A funkciótest vége main ().

Osztálytag funkciók

A funkciók segítenek az adatok manipulálásában. Az osztálytagok funkciói kétféleképpen határozhatók meg:

  • Az osztálymeghatározás belsejében
  • Az osztály meghatározásán kívül

Ha egy funkciót osztálymeghatározáson kívül akarunk definiálni, akkor a hatókörfeloldás operátort kell használnunk (: :). Ehhez mellékelni kell az osztály- és függvényneveket.

2. példa:

#include #include using namespace std;class Guru99{public:string tutorial_name;int id;void printname();void printid(){cout << "Tutorial id is: "<< id;}};void Guru99::printname(){cout << "Tutorial name is: " << tutorial_name;}int main() {Guru99 guru99;guru99.tutorial_name = "C++";guru99.id = 1001;guru99.printname();cout << endl;guru99.printid();return 0;}

Kimenet:

Itt van egy képernyőkép a kódról:

Kód Magyarázat:

  1. Tartsa be az iostream fejléc fájlt programunkba a funkcióinak használatához.
  2. Felvesse a programba a karakterlánc fejléc fájlt a funkcióinak használatához.
  3. Vegye fel az std névteret a kódunkba, hogy az osztályait hívás nélkül használhassa.
  4. Hozzon létre egy Guru99 nevű osztályt.
  5. Használja a nyilvános hozzáférés módosítóját az általunk létrehozni kívánt tagok nyilvánosan elérhetőként megjelölésére.
  6. Hozzon létre egy tutorial_name nevű karakterlánc-változót.
  7. Hozzon létre egy id nevű egész változót.
  8. Hozzon létre egy printname () nevű függvényt. Ezt a függvényt az osztálydefiníció nem határozza meg.
  9. Hozzon létre egy nyomtatott () nevű függvényt. Ezt a funkciót az osztálydefiníció határozza meg. Testét az osztálydefiníción belül adtuk hozzá.
  10. Nyomtassa ki a változó id értékét a konzolon lévő egyéb szöveg mellé. Ne feledje, hogy ez hozzá lett adva a printid () függvény törzséhez. Csak akkor hajtódik végre, amikor a printid () függvény meghívásra kerül.
  11. A printid () függvény törzsének vége.
  12. A Guru99 osztály testének vége.
  13. A printname () függvény definíciójának kezdete.
  14. Nyomtassa ki a tutorial_name változó értékét a konzolra más szöveg mellé. Ne feledje, hogy ezt hozzáadta a printname () törzséhez. Csak akkor hajtódik végre, amikor a printname () függvény meghívásra kerül.
  15. A printname () függvény definíciójának vége.
  16. Hívja meg a main () függvényt. A program logikát hozzá kell adni ennek a függvénynek a törzséhez.
  17. Hozzon létre egy példányt a Guru99 osztályról, és adja meg neki a guru99 nevet.
  18. Használja a fenti példányt C ++ érték hozzárendeléséhez a tutorial_name változóhoz.
  19. A guru99 példány segítségével 1001 értéket rendelhet az id változóhoz.
  20. A guru99 példány segítségével hívja meg a printname () függvényt.
  21. Hívja a end (end line) parancsot, hogy új üres sort nyomtasson a konzolra.
  22. A guru99 példány segítségével hívja meg a printid () függvényt.
  23. A programnak a sikeres befejezés után vissza kell térnie az értékre.
  24. A fő () függvény törzsének vége.

Kivitelezők és rombolók

Mi az a kivitelezők?

A konstrukciók speciális funkciók, amelyek inicializálják az objektumokat. A C ++ fordítók meghívnak egy konstruktort objektum létrehozásakor. A konstruktorok segítenek értékek hozzárendelésében az osztály tagjainak. Természetesen ez azután történik, hogy kiosztottak némi memóriaterületet.

Mi az a romboló?

A rombolók viszont segítenek elpusztítani az osztálytárgyakat.

A konstruktor nevének hasonlónak kell lennie az osztály nevéhez. A kivitelezőknek nincs visszatérési típusuk.

A konstruktort meg lehet határozni az osztálytesten belül vagy kívül. Ha az osztálytörzsön kívül van megadva, akkor azt meg kell adni az osztály nevével és a hatókörfeloldási operátorral (: :).

3. példa:

#include using namespace std;class ClassA {public:ClassA() {cout << "Class constructor called"<

Kimenet:

Itt van egy képernyőkép a kódról:

Kód Magyarázat:

  1. A funkciók használatához illessze be az iostream fejlécfájlt a kódba.
  2. Vegye fel az std névteret a kódunkba, hogy az osztályait hívás nélkül használhassa.
  3. Hozzon létre egy ClassA nevű osztályt.
  4. A nyilvános hozzáférés módosítójával jelölje meg a létrehozni kívánt tagot nyilvánosan hozzáférhetőként.
  5. Hozzon létre egy konstruktort az osztályhoz.
  6. A konzolra nyomtatandó szöveg, amikor a konstruktort hívják. Az endl egy C ++ kulcsszó, ami végvonalat jelent. Az egérmutatót a következő sorra mozgatja.
  7. Az osztály konstruktor testének vége.
  8. Hozzon létre egy rombolót az osztály számára.
  9. A konzolra nyomtatandó szöveg, amikor a destruktort hívják. Az endl egy C ++ kulcsszó, ami végvonalat jelent. Az egér kurzort a következő sorra mozgatja.
  10. A romboló testének vége.
  11. Az osztálytest vége.
  12. Hívja meg a main () függvényt. A program logikát hozzá kell adni ennek a függvénynek a törzséhez.
  13. Hozzon létre egy osztályobjektumot, és adja meg a nevet. A konstruktort hívják.
  14. Hozzon létre egy p nevű egész változót, és rendeljen hozzá 1 értéket.
  15. Hozzon létre egy if utasításblokkot a p változó segítségével.
  16. Hozzon létre egy osztályobjektumot, és adja meg a b nevet. A destruktort hívják.
  17. Az if utasítás törzsének vége.
  18. A fő () függvény törzsének vége.

Összegzés:

  • A C ++ objektumorientált.
  • Az osztályok alkotják a C ++ fő jellemzőit, amelyek objektumorientálttá teszik.
  • A C ++ osztály egyesíti az adatokat és az adatok manipulálásának módszereit.
  • Az osztály egy objektum tervrajza.
  • Az osztályok meghatározzák az objektum formáját.
  • Az osztályban szereplő adatokat és módszereket osztálytagként ismerjük.
  • Az osztálytagok eléréséhez használja az osztály egy példányát.
  • Osztály létrehozásához az osztály kulcsszót használjuk.
  • Az osztálytag funkciók meghatározhatók osztályon belül vagy kívül.

érdekes cikkek...