C++ Luokka ja objekti esimerkin kanssa

Mikä on luokka?

A C++ luokka yhdistää tiedot ja menetelmät tietojen käsittelemiseksi yhdeksi. Luokat määräävät myös objektien muodot. Luokkaan sisältyvät tiedot ja menetelmät tunnetaan luokan jäseninä. Luokka on käyttäjän määrittämä tietotyyppi. Käyttääksemme luokan jäseniä käytämme luokan esiintymää. Voit nähdä luokan objektin suunnitelmana.

Luokka on talon prototyyppi. Se näyttää ovien, ikkunoiden, lattioiden jne sijainnin ja koot. Näistä kuvauksista voimme rakentaa talon. Talosta tulee esine. Prototyypistä on mahdollista luoda monia taloja. Lisäksi on mahdollista luoda useita objekteja luokasta.

C++ luokka

Yllä olevassa kuvassa meillä on yhden talon prototyyppi. Tästä prototyypistä olemme luoneet kaksi taloa, joissa on erilaisia ​​ominaisuuksia.

Luokkailmoitus

C+:ssa luokka määritellään luokka-avainsanalla. Tämän jälkeen tulee kirjoittaa luokan nimi. Luokan runko lisätään sitten aaltosulkeiden väliin { }.

Syntaksi

class class-name
   {
   // data
   // functions
   };
  • Luokan nimi on nimi, joka annetaan luokalle.
  • Data on luokan dataa, joka yleensä ilmoitetaan muuttujina.
  • Funktiot ovat luokkafunktioita.

Yksityiset ja julkiset avainsanat

Olet varmaan törmännyt näihin kahteen avainsanaan. Ne ovat pääsyn muokkaajia.

  • yksityinen:

Kun yksityistä avainsanaa käytetään funktion tai luokan määrittämiseen, siitä tulee yksityinen. Sellaiset ovat käytettävissä vain luokasta käsin.

  • Julkinen:

Julkinen avainsana puolestaan ​​tekee tiedoista/funktioista julkisia. Näihin pääsee käsiksi luokan ulkopuolelta.

Objektin määritelmä

Objektit luodaan luokista. Luokkaobjektit ilmoitetaan samalla tavalla kuin muuttujat. Luokan nimen tulee alkaa ja sen jälkeen objektin nimi. Luokkatyypin objekti.

Syntaksi

class-name object-name;
  • Luokan nimi on sen luokan nimi, josta objekti luodaan.
  • Objektin nimi on nimi, joka annetaan uudelle objektille.

Tätä objektin luomisprosessia luokasta kutsutaan instanssiksi.

Tietojen jäsenten käyttö

Luokan julkisiin jäseniin pääsemiseksi käytämme (.)piste-operaattoria. Nämä ovat jäseniä, jotka on merkitty julkisen käyttöoikeuden muokkaajalla.

Esimerkki 1

#include <iostream>
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;
}

lähtö:

Tietojen jäsenten käyttö

Tässä on kuvakaappaus koodista:

Tietojen jäsenten käyttö

Koodin selitys:

  1. Sisällytä iostream-otsikkotiedosto koodiimme, jotta voit käyttää sen toimintoja.
  2. std-nimiavaruuden sisällyttäminen koodiimme käyttääksemme sen luokkia kutsumatta sitä.
  3. Ilmoita luokka nimeltä Puhelin.
  4. Julkisen käyttöoikeuden muokkaimen käyttäminen merkitsemään muuttujat, joita olemme luomassa, julkisesti saatavilla oleviksi.
  5. Ilmoita kaksoistietotyypin muuttuvat kustannukset.
  6. Ilmoita kokonaislukumuuttuja nimeltä slots.
  7. Luokan rungon loppu.
  8. Main()-funktion kutsuminen. Ohjelmalogiikka tulisi lisätä sen runkoon.
  9. Luo objekti nimeltä Y6, jonka tyyppi on Puhelin. Tätä kutsutaan instantiaatioksi.
  10. Luo objekti nimeltä Y7, jonka tyyppi on Puhelin. Tätä kutsutaan instantiaatioksi.
  11. Pääset luokan Puhelin muuttuja-/jäsenkustannuksiin objektilla Y6. Arvoksi on asetettu 100.0. Y6:n hinta on nyt 100.0.
  12. Siirry luokan Puhelin muuttuja-/jäsenpaikkoihin objektin Y6 avulla. Arvoksi on asetettu 2. Y6:n paikat on nyt asetettu arvoon 2.
  13. Pääset luokan Puhelin muuttuja-/jäsenkustannuksiin objektilla Y7. Arvoksi on asetettu 200.0. Y7:n hinta on nyt 200.0.
  14. Siirry luokan Puhelin muuttuja-/jäsenpaikkoihin objektin Y7 avulla. Arvoksi on asetettu 2. Y7:n paikat on nyt asetettu arvoon 2.
  15. Tulosta Y6:n hinta konsoliin muun tekstin viereen.
  16. Tulosta Y7:n hinta konsoliin muun tekstin viereen.
  17. Tulosta Y6-paikkojen määrä muun tekstin viereen.
  18. Tulosta Y7-paikkojen määrä muun tekstin viereen.
  19. Ohjelman on palautettava arvo, kun se on suoritettu onnistuneesti.
  20. Main()-funktion rungon loppu.

Mikä on yksityinen luokka?

Yksityisiksi merkittyjä luokan jäseniä voi käyttää vain luokassa määritellyillä toiminnoilla. Mikään luokan ulkopuolella määritelty objekti tai funktio ei voi käyttää tällaisia ​​jäseniä suoraan. Yksityisen luokan jäseneen pääsee vain jäsen- ja ystävätoimintojen kautta.

Mikä on suojattu luokka?

Suojatuiksi merkityillä luokan jäsenillä on etuoikeus yksityisiksi merkittyihin verrattuna. Niitä voidaan käyttää määritellyn luokan funktioilla. Lisäksi niihin pääsee käsiksi johdetuista luokista.

Esimerkki 2

#include <iostream>
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;
}

lähtö:

Tietojen jäsenten käyttö

Tässä on kuvakaappaus koodista:

Tietojen jäsenten käyttö

Koodin selitys:

  1. Sisällytä iostream-otsikkotiedosto koodiimme käyttääksesi sen toimintoja.
  2. Sisällytä std-nimiavaruus koodiimme käyttääksesi sen luokkia kutsumatta sitä.
  3. Luo luokka nimeltä ClassA.
  4. Käytä julkisen käyttöoikeuden muokkaajaa merkitäksesi luotava luokan jäsen julkisesti käytettäväksi.
  5. Luo funktio nimeltä set_a(), joka ottaa yhden kokonaisluvun arvon val.
  6. Luo funktio nimeltä get_a().
  7. Käytä yksityisen käyttöoikeuden muokkaajaa merkitäksesi luotava luokan jäsen yksityisesti käytettävissä olevaksi.
  8. Ilmoita kokonaislukumuuttuja nimeltä a.
  9. Luokan rungon loppu.
  10. Käytä luokan nimeä ja laajuuden resoluutiooperaattoria päästäksesi funktioon get_a(). Haluamme määrittää, mitä toiminto tekee, kun sitä kutsutaan.
  11. Funktio get_a() palauttaa muuttujan a arvon, kun sitä kutsutaan.
  12. Funktion get_a() määritelmän loppu.
  13. Käytä luokan nimeä ja laajuuden resoluutiooperaattoria päästäksesi funktioon set_a(). Haluamme määrittää, mitä toiminto tekee, kun sitä kutsutaan.
  14. Muuttujan val arvon antaminen muuttujalle a.
  15. Funktion set_a() määritelmän loppu.
  16. Kutsu main()-funktiota. Ohjelmalogiikka tulisi lisätä tämän funktion runkoon.
  17. Luo ClassA esiintymä ja anna sille nimi a.
  18. Käytä yllä olevaa luokkainstanssia ja funktiota set_a() määrittääksesi muuttujalle a arvon 20.
  19. Tulostetaan tekstiä konsoliin muuttujan a arvon rinnalle. Muuttujan a arvo saadaan kutsumalla get_a()-funktiota.
  20. Ohjelman on palautettava arvo, kun se on suoritettu onnistuneesti.
  21. Funktion main() rungon loppu.

Esimerkki 3

#include <iostream>
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;
}

lähtö:

Tietojen jäsenten käyttö

Tässä on kuvakaappaus koodista:

Tietojen jäsenten käyttö

Koodin selitys:

  1. Sisällytä iostream-otsikkotiedosto koodiimme käyttääksesi sen toimintoja.
  2. Sisällytä std-nimiavaruus koodiimme käyttääksesi sen luokkia kutsumatta sitä.
  3. Luo luokka nimeltä ParentClass.
  4. Käytä suojatun käyttöoikeuden muokkaajaa merkitäksesi luotava luokan jäsen suojatuksi.
  5. Luo kokonaislukumuuttuja nimeltä arvo.
  6. Luokan rungon loppu.
  7. Luo uusi luokka nimeltä ChildClass, joka perii ParentClassin.
  8. Käytä suojatun käyttöoikeuden muokkaajaa merkitäksesi luotava luokan jäsen lapsiluokkien käytettäväksi.
  9. Luo funktio nimeltä setId(), joka ottaa yhden kokonaisluvun arvon x.
  10. Muuttujan x arvon määrittäminen muuttujan arvoon.
  11. Funktion setId() määritelmän loppu.
  12. Luo funktio nimeltä displayValue().
  13. Tulosta muuttujan arvo nimetty arvo konsoliin muun tekstin rinnalle.
  14. Funktion displayValue() rungon loppu.
  15. Luokan rungon loppu nimeltä ChildClass.
  16. Kutsu main()-funktiota. Ohjelmalogiikka tulisi lisätä tämän funktion runkoon.
  17. Luo ChildClass-esiintymä ja anna sille nimi c.
  18. Käytä yllä olevaa luokkaesiintymää ja funktiota setId() määrittääksesi muuttujalle x arvon 21.
  19. Käytä yllä olevaa luokkaesiintymää kutsuaksesi funktiota nimeltä displayValue().
  20. Ohjelman on palautettava arvo, kun se on suoritettu onnistuneesti.
  21. Funktion main() rungon loppu.

Luokan jäsentoiminnot

Toiminnot auttavat meitä käsittelemään tietoja. Luokan jäsenfunktiot voidaan määrittää kahdella tavalla:

  • Luokan määritelmän sisällä
  • Luokan määritelmän ulkopuolella

Jos funktio halutaan määritellä luokkamäärittelyn ulkopuolella, meidän on käytettävä laajuuden resoluutiooperaattoria (::). Tähän tulee liittää luokan ja funktion nimet.

Esimerkki 2

#include <iostream>
#include <string>
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;
}

lähtö:

Luokan jäsentoiminnot

Tässä on kuvakaappaus koodista:

Luokan jäsentoiminnot

Koodin selitys:

  1. Sisällytä iostream-otsikkotiedosto ohjelmaamme käyttääksesi sen toimintoja.
  2. Sisällytä merkkijonootsikkotiedosto ohjelmaamme käyttääksesi sen toimintoja.
  3. Sisällytä std-nimiavaruus koodiimme käyttääksesi sen luokkia kutsumatta sitä.
  4. Luo luokka nimeltä Guru99.
  5. Käytä julkisen käyttöoikeuden muokkausta merkitäksesi luomamme jäsenet julkisesti saatavilla oleviksi.
  6. Luo merkkijonomuuttuja nimeltä tutorial_name.
  7. Luo kokonaislukumuuttuja nimeltä id.
  8. Luo funktio nimeltä printname(). Tätä funktiota ei ole määritetty luokan määritelmässä.
  9. Luo funktio nimeltä printed(). Tämä funktio on määritelty luokan määritelmässä. Sen runko on lisätty luokan määritelmään.
  10. Tulosta muuttujan id arvo muun tekstin rinnalle konsoliin. Huomaa, että tämä on lisätty printid()-funktion runkoon. Se suoritetaan vain, kun printid()-funktiota kutsutaan.
  11. Funktion printid() rungon loppu.
  12. Luokan Guru99 rungon loppu.
  13. Funktion printname() määrittelyn alku.
  14. Tulosta muuttujan tutorial_name arvo konsoliin muun tekstin rinnalle. Huomaa, että tämä on lisätty printname()-funktion runkoon. Se suoritetaan vain, kun printname()-funktiota kutsutaan.
  15. Tulostusnimi()-funktion määritelmän loppu.
  16. Kutsu main()-funktiota. Ohjelmalogiikka tulisi lisätä tämän funktion runkoon.
  17. Luo esiintymä luokasta Guru99 ja anna sille nimi guru99.
  18. Käytä yllä olevaa esiintymää arvon määrittämiseen C++ muuttujaan tutorial_name.
  19. Käytä guru99-instanssia määrittääksesi arvon 1001 muuttujalle id.
  20. Käytä ilmentymää guru99 kutsuaksesi funktiota printname() .
  21. Soita end (end line) -komento tulostaaksesi uuden tyhjän rivin konsoliin.
  22. Käytä instanssia guru99 kutsuaksesi funktiota printid().
  23. Ohjelman on palautettava arvo, kun se on suoritettu onnistuneesti.
  24. Main()-funktion rungon loppu.

Rakentajat ja tuhoajat

Mikä on rakentajat?

Rakenteet ovat erikoisfunktioita, jotka alustavat objektit. The C++ kerääjiä kutsuu konstruktoria objektia luodessaan. Rakentajat auttavat määrittämään arvoja luokan jäsenille. Tietenkin tämä tapahtuu sen jälkeen, kun niille on varattu jonkin verran muistitilaa.

Mikä on Destructors?

Destruktorit toisaalta auttavat tuhoamaan luokkaobjekteja.

Rakentajan nimen on oltava samanlainen kuin luokan nimi. Rakentajilla ei ole palautustyyppiä.

Konstruktori voidaan määrittää luokan rungon sisällä tai ulkopuolella. Jos se määritellään luokan rungon ulkopuolella, se tulee määrittää luokan nimellä ja laajuuden resoluutiooperaattorilla (::).

Esimerkki 3

#include <iostream>  
using namespace std;
class ClassA {
public:
	ClassA() {
		cout << "Class constructor called"<<endl;
	}
	~ClassA() {
		cout << "Class destructor called"<<endl;
	}
};

int main() {
	ClassA a;
	int p = 1;
		if (p) {
			ClassA b; 
		}   
}

lähtö:

Rakentajat ja tuhoajat

Tässä on kuvakaappaus koodista:

Rakentajat ja tuhoajat

Koodin selitys:

  1. Sisällytä iostream-otsikkotiedosto koodiin käyttääksesi sen toimintoja.
  2. Sisällytä std-nimiavaruus koodiimme käyttääksesi sen luokkia kutsumatta sitä.
  3. Luo luokka nimeltä ClassA.
  4. Käytä julkisen käyttöoikeuden muokkaajaa merkitäksesi jäsen, jonka olemme luomassa, julkisesti käytettäväksi.
  5. Luo luokalle konstruktori.
  6. Konsoliin tulostettava teksti, kun konstruktoria kutsutaan. Loppu on a C++ avainsana, joka tarkoittaa loppuriviä. Se siirtää hiiren osoittimen seuraavalle riville.
  7. Luokkakonstruktorin rungon loppu.
  8. Luo luokalle tuhoaja.
  9. Konsoliin tulostettava teksti, kun destructoria kutsutaan. Loppu on a C++ avainsana, joka tarkoittaa loppuriviä. Se siirtää hiiren osoittimen seuraavalle riville.
  10. Tuhoajan rungon pää.
  11. Luokan rungon loppu.
  12. Kutsu main()-funktiota. Ohjelmalogiikka tulisi lisätä tämän funktion runkoon.
  13. Luo luokkaobjekti ja anna sille nimi a. Rakentaja kutsutaan.
  14. Luo kokonaislukumuuttuja nimeltä p ja anna sille arvo 1.
  15. Luo if-lauselohko käyttämällä muuttujaa p.
  16. Luo luokkaobjekti ja anna sille nimi b. Tuhoaja kutsutaan.
  17. if-lauseen rungon loppu.
  18. Main()-funktion rungon loppu.

Yhteenveto

  • C++ on oliosuuntautunut.
  • Luokat muodostavat pääpiirteet C++ jotka tekevät siitä oliokeskeisen.
  • A C++ luokka yhdistää tiedot ja menetelmät tietojen käsittelemiseksi yhdeksi.
  • Luokka on suunnitelma objektille.
  • Luokat määräävät objektin muodon.
  • Luokkaan sisältyvät tiedot ja menetelmät tunnetaan luokan jäseninä.
  • Voit käyttää luokan jäseniä käyttämällä luokan esiintymää.
  • Luodaksemme luokan käytämme luokan avainsanaa.
  • Luokan jäsenfunktiot voidaan määrittää luokan sisällä tai ulkopuolella.