C++ Clasă și obiect cu exemplu

Ce este o clasă?

A C++ clasa combină datele și metodele de manipulare a datelor într-una singură. Clasele determină și formele obiectelor. Datele și metodele conținute într-o clasă sunt cunoscute ca membri ai clasei. O clasă este un tip de date definit de utilizator. Pentru a accesa membrii clasei, folosim o instanță a clasei. Puteți vedea o clasă ca un plan pentru un obiect.

O clasă să fie un prototip pentru o casă. Arată locația și dimensiunile ușilor, ferestrelor, podelelor etc. Din aceste descrieri, putem construi o casă. Casa devine obiectul. Este posibil să creați multe case din prototip. De asemenea, este posibil să creați multe obiecte dintr-o clasă.

C++ Clasă

În figura de mai sus, avem un singur prototip de casă. Din acest prototip, am creat două case cu caracteristici diferite.

Declarație de clasă

În C+, o clasă este definită folosind cuvântul cheie class. Acesta ar trebui să fie urmat de numele clasei. Corpul clasei este apoi adăugat între acolade { }.

Sintaxă

class class-name
   {
   // data
   // functions
   };
  • Numele-clasă este numele de atribuit clasei.
  • Datele sunt datele pentru clasă, în mod normal declarate ca variabile.
  • Funcțiile sunt funcțiile de clasă.

Cuvinte cheie private și publice

Trebuie să fi întâlnit aceste două cuvinte cheie. Sunt modificatori de acces.

  • Privat:

Când cuvântul cheie privat este folosit pentru a defini o funcție sau o clasă, acesta devine privat. Acestea sunt accesibile doar din cadrul clasei.

  • f) Public:

Cuvântul cheie public, pe de altă parte, face publice datele/funcțiile. Acestea sunt accesibile din afara clasei.

Definirea obiectului

Obiectele sunt create din clase. Obiectele de clasă sunt declarate într-un mod similar cu care sunt declarate variabilele. Numele clasei trebuie să înceapă, urmat de numele obiectului. Obiectul tipului de clasă.

Sintaxă

class-name object-name;
  • Numele-clasă este numele clasei din care urmează să fie creat un obiect.
  • Numele-obiect este numele care trebuie atribuit noului obiect.

Acest proces de creare a unui obiect dintr-o clasă este cunoscut ca instanțiere.

Accesarea membrilor de date

Pentru a accesa membrii publici ai unei clase, folosim operatorul (.)punct. Aceștia sunt membri marcați cu modificator de acces public.

Exemplu 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;
}

ieșire:

Accesarea membrilor de date

Iată o captură de ecran a codului:

Accesarea membrilor de date

Explicarea codului:

  1. Includeți fișierul antet iostream în codul nostru pentru a utiliza funcțiile acestuia.
  2. Includerea spațiului de nume std în codul nostru pentru a-și folosi clasele fără a-l apela.
  3. Declarați o clasă numită Telefon.
  4. Utilizarea modificatorului de acces public pentru a marca variabilele pe care urmează să le creăm ca fiind accesibile public.
  5. Declarați costul variabil al unui tip de date dublu.
  6. Declarați o variabilă întreagă numită sloturi.
  7. Sfârșitul corpului clasei.
  8. Apelarea funcției main(). Logica programului ar trebui adăugată în corpul său.
  9. Creați un obiect numit Y6 de tip Telefon. Aceasta se numește instanțiere.
  10. Creați un obiect numit Y7 de tip Telefon. Aceasta se numește instanțiere.
  11. Accesați costul variabil/membru al clasei Telefon folosind obiectul Y6. Valoarea este setată la 100.0. Costul lui Y6 este acum setat la 100.0.
  12. Accesați sloturile variabile/membre ale clasei Phone folosind obiectul Y6. Valoarea este setată la 2. Sloturile pentru Y6 sunt acum setate la 2.
  13. Accesați costul variabil/membru al clasei Telefon folosind obiectul Y7. Valoarea este setată la 200.0. Costul lui Y7 este acum setat la 200.0.
  14. Accesați sloturile variabile/membre ale clasei Phone folosind obiectul Y7. Valoarea este setată la 2. Sloturile pentru Y7 sunt acum setate la 2.
  15. Tipăriți costul Y6 pe consolă alături de alt text.
  16. Tipăriți costul Y7 pe consolă alături de alt text.
  17. Tipăriți numărul de sloturi pentru Y6 alături de alt text.
  18. Tipăriți numărul de sloturi pentru Y7 alături de alt text.
  19. Programul trebuie să returneze o valoare la finalizarea cu succes.
  20. Sfârșitul corpului funcției main().

Ce este o clasă privată?

Membrii clasei marcați ca private pot fi accesați numai de funcțiile definite în cadrul clasei. Orice obiect sau funcție definită în afara clasei nu poate accesa direct astfel de membri. Un membru al clasei private este accesat numai de funcțiile de membru și de prieteni.

Ce este o clasă protejată?

Membrii clasei marcați ca protejați au un avantaj față de cei marcați ca private. Ele pot fi accesate prin funcții din clasa definiției lor. În plus, ele pot fi accesate din clase derivate.

Exemplu 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;
}

ieșire:

Accesarea membrilor de date

Iată o captură de ecran a codului:

Accesarea membrilor de date

Explicația codului:

  1. Includeți fișierul antet iostream în codul nostru pentru a utiliza funcțiile acestuia.
  2. Includeți spațiul de nume std în codul nostru pentru a-i folosi clasele fără a-l apela.
  3. Creați o clasă numită ClassA.
  4. Utilizați modificatorul de acces public pentru a marca membrul clasei care urmează să fie creat ca fiind accesibil public.
  5. Creați funcția numită set_a() care ia o valoare întreagă val.
  6. Creați o funcție numită get_a().
  7. Utilizați modificatorul de acces privat pentru a marca membrul clasei care urmează să fie creat ca accesibil privat.
  8. Declarați o variabilă întreagă numită a.
  9. Sfârșitul corpului clasei.
  10. Utilizați numele clasei și operatorul de rezoluție a domeniului pentru a accesa funcția get_a(). Vrem să definim ce face funcția atunci când este invocată.
  11. Funcția get_a() ar trebui să returneze valoarea variabilei a când este invocată.
  12. Sfârșitul definiției funcției get_a().
  13. Utilizați numele clasei și operatorul de rezoluție a domeniului pentru a accesa funcția set_a(). Vrem să definim ce face funcția atunci când este invocată.
  14. Atribuirea valorii variabilei val variabilei a.
  15. Sfârșitul definiției funcției set_a().
  16. Apelați funcția main(). Logica programului ar trebui adăugată în corpul acestei funcții.
  17. Creați o instanță de ClassA și dați-i numele a.
  18. Utilizați instanța de clasă de mai sus și funcția set_a() pentru a atribui o valoare de 20 variabilei a.
  19. Imprimarea unui text alături de valoarea variabilei a pe consolă. Valoarea variabilei a se obține prin apelarea funcției get_a().
  20. Programul trebuie să returneze valoare după finalizarea cu succes.
  21. Sfârșitul corpului funcției main().

Exemplu 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;
}

ieșire:

Accesarea membrilor de date

Iată o captură de ecran a codului:

Accesarea membrilor de date

Explicația codului:

  1. Includeți fișierul antet iostream în codul nostru pentru a utiliza funcțiile acestuia.
  2. Includeți spațiul de nume std în codul nostru pentru a-i folosi clasele fără a-l apela.
  3. Creați o clasă numită ParentClass.
  4. Utilizați modificatorul de acces protejat pentru a marca membrul clasei care urmează să fie creat ca protejat.
  5. Creați o variabilă întreagă numită valoare.
  6. Sfârșitul corpului clasei.
  7. Creați o nouă clasă numită ChildClass care moștenește ParentClass.
  8. Utilizați modificatorul de acces protejat pentru a marca membrul clasei care urmează să fie creat ca accesibil pentru clasele secundare.
  9. Creați funcția numită setId() care ia o valoare întreagă x.
  10. Atribuirea valorii variabilei x valorii variabilei.
  11. Sfârșitul definiției funcției setId().
  12. Creați o funcție numită displayValue().
  13. Tipăriți valoarea variabilei numită valoare pe consolă alături de alt text.
  14. Sfârșitul corpului funcției displayValue().
  15. Sfârșitul corpului clasei numită ChildClass.
  16. Apelați funcția main(). Logica programului ar trebui adăugată în corpul acestei funcții.
  17. Creați o instanță ChildClass și dați-i numele c.
  18. Utilizați instanța de clasă de mai sus și funcția setId() pentru a atribui o valoare de 21 variabilei x.
  19. Utilizați instanța clasei de mai sus pentru a apela funcția numită displayValue().
  20. Programul trebuie să returneze valoare după finalizarea cu succes.
  21. Sfârșitul corpului funcției main().

Funcții ale membrilor clasei

Funcțiile ne ajută să manipulăm datele. Funcțiile membre ale clasei pot fi definite în două moduri:

  • În interiorul definiției clasei
  • În afara definiției clasei

Dacă o funcție urmează să fie definită în afara unei definiții de clasă, trebuie să folosim operatorul de rezoluție a domeniului (::). Aceasta ar trebui să fie însoțită de numele claselor și ale funcției.

Exemplu 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;
}

ieșire:

Funcții ale membrilor clasei

Iată o captură de ecran a codului:

Funcții ale membrilor clasei

Explicația codului:

  1. Includeți fișierul antet iostream în programul nostru pentru a utiliza funcțiile acestuia.
  2. Includeți fișierul antet șir în programul nostru pentru a utiliza funcțiile acestuia.
  3. Includeți spațiul de nume std în codul nostru pentru a-i folosi clasele fără a-l apela.
  4. Creați o clasă numită Guru99.
  5. Utilizați modificatorul de acces public pentru a marca membrii clasei pe care urmează să îi creăm ca fiind accesibili publicului.
  6. Creați o variabilă șir numită tutorial_name.
  7. Creați o variabilă întreagă numită id.
  8. Creați o funcție numită printname(). Această funcție nu este definită în definiția clasei.
  9. Creați o funcție numită printed(). Această funcție este definită în definiția clasei. Corpul său a fost adăugat în definiția clasei.
  10. Tipăriți valoarea variabilei id alături de alt text de pe consolă. Rețineți că acest lucru a fost adăugat în corpul funcției printid(). Acesta va fi executat numai atunci când funcția printid() este apelată.
  11. Sfârșitul corpului funcției printid().
  12. Sfârșitul corpului clasei Guru99.
  13. Începutul definirii funcției printname().
  14. Tipăriți valoarea variabilei tutorial_name pe consolă alături de alt text. Rețineți că acest lucru a fost adăugat în corpul funcției printname(). Acesta va fi executat numai atunci când funcția printname() este apelată.
  15. Sfârșitul definiției funcției printname().
  16. Apelați funcția main(). Logica programului ar trebui adăugată în corpul acestei funcții.
  17. Creați o instanță a clasei Guru99 și dându-i numele guru99.
  18. Utilizați instanța de mai sus pentru a atribui o valoare pentru C++ la variabila tutorial_name.
  19. Utilizați instanța guru99 pentru a atribui o valoare de 1001 variabilei id.
  20. Utilizați instanța guru99 pentru a apela funcția printname() .
  21. Apelați comanda end (end line) pentru a imprima o nouă linie goală pe consolă.
  22. Utilizați instanța guru99 pentru a apela funcția printid().
  23. Programul trebuie să returneze valoare după finalizarea cu succes.
  24. Sfârșitul corpului funcției main().

Constructori și Destructori

Ce este Constructorii?

Constructurile sunt funcții speciale care inițializează obiecte. The C++ compilatoare apelează un constructor la crearea unui obiect. Constructorii ajută la atribuirea de valori membrilor clasei. Desigur, asta după ce li s-a alocat un spațiu de memorie.

Ce este Destructors?

Destructorii, pe de altă parte, ajută la distrugerea obiectelor de clasă.

Numele constructorului trebuie să fie similar cu numele clasei. Constructorii nu au un tip de returnare.

Constructorul poate fi definit în interiorul sau în afara corpului clasei. Dacă este definit în afara corpului clasei, ar trebui să fie definit cu numele clasei și operatorul de rezoluție a domeniului (::).

Exemplu 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; 
		}   
}

ieșire:

Constructori și Destructori

Iată o captură de ecran a codului:

Constructori și Destructori

Explicația codului:

  1. Includeți fișierul antet iostream în cod pentru a utiliza funcțiile acestuia.
  2. Includeți spațiul de nume std în codul nostru pentru a-i folosi clasele fără a-l apela.
  3. Creați o clasă numită ClassA.
  4. Utilizați modificatorul de acces public pentru a marca membrul pe care urmează să-l creăm ca fiind accesibil public.
  5. Creați un constructor pentru clasă.
  6. Text de imprimat pe consolă atunci când constructorul este apelat. Sfârșitul este a C++ cuvânt cheie, care înseamnă linia finală. Mută ​​cursorul mouse-ului pe linia următoare.
  7. Sfârșitul corpului constructorului clasei.
  8. Creați un destructor pentru clasă.
  9. Text de tipărit pe consolă când este apelat destructorul. Sfârșitul este a C++ cuvânt cheie, care înseamnă linia finală. Mută ​​cursorul mouse-ului pe linia următoare.
  10. Sfârșitul corpului distrugătorului.
  11. Sfârșitul corpului clasei.
  12. Apelați funcția main(). Logica programului ar trebui adăugată în corpul acestei funcții.
  13. Creați un obiect de clasă și dați-i numele a. Va fi apelat constructorul.
  14. Creați o variabilă întreagă numită p și atribuiți-i o valoare de 1.
  15. Creați un bloc de instrucțiuni if ​​folosind variabila p.
  16. Creați un obiect de clasă și dați-i numele b. Destructorul va fi chemat.
  17. Sfârșitul corpului declarației if.
  18. Sfârșitul corpului funcției main().

Rezumat

  • C++ este orientat pe obiecte.
  • Clasele formează principalele caracteristici ale C++ care o fac orientată pe obiecte.
  • A C++ clasa combină datele și metodele de manipulare a datelor într-una singură.
  • O clasă este un plan pentru un obiect.
  • Clasele determină forma unui obiect.
  • Datele și metodele conținute într-o clasă sunt cunoscute ca membri ai clasei.
  • Pentru a accesa membrii clasei, ar trebui să utilizați o instanță a clasei.
  • Pentru a crea o clasă, folosim cuvântul cheie class.
  • Funcțiile membre ale clasei pot fi definite în interiorul sau în afara unei clase.