C++ Classe e oggetto con esempio

Cos'è una classe?

A C++ La classe combina dati e metodi per manipolare i dati in uno solo. Le classi determinano anche le forme degli oggetti. I dati e i metodi contenuti in una classe sono noti come membri della classe. Una classe è un tipo di dati definito dall'utente. Per accedere ai membri della classe, utilizziamo un'istanza della classe. Puoi vedere una classe come un progetto per un oggetto.

Una classe è un prototipo per una casa. Mostra la posizione e le dimensioni di porte, finestre, pavimenti, ecc. Da queste descrizioni, possiamo costruire una casa. La casa diventa l'oggetto. È possibile creare molte case dal prototipo. Inoltre, è possibile creare molti oggetti da una classe.

C++ Classe

Nella figura sopra, abbiamo un prototipo di casa singola. Da questo prototipo abbiamo realizzato due case con caratteristiche diverse.

Dichiarazione di classe

In C+, una classe viene definita utilizzando la parola chiave class. Questo dovrebbe essere seguito dal nome della classe. Il corpo della classe viene quindi aggiunto tra parentesi graffe { }.

Sintassi

class class-name
   {
   // data
   // functions
   };
  • Il nome-classe è il nome da assegnare alla classe.
  • I dati sono i dati della classe, normalmente dichiarati come variabili.
  • Le funzioni sono le funzioni della classe.

Parole chiave private e pubbliche

Devi esserti imbattuto in queste due parole chiave. Sono modificatori di accesso.

  • Privato:

Quando la parola chiave private viene utilizzata per definire una funzione o una classe, diventa privata. Questi sono accessibili solo dall'interno della classe.

  • Pubblico:

La parola chiave public, invece, rende pubblici i dati/funzioni. Questi sono accessibili dall'esterno della classe.

Definizione dell'oggetto

Gli oggetti vengono creati dalle classi. Gli oggetti classe vengono dichiarati in modo simile a come vengono dichiarate le variabili. Il nome della classe deve iniziare, seguito dal nome dell'oggetto. L'oggetto del tipo di classe.

Sintassi

class-name object-name;
  • Il nome della classe è il nome della classe da cui deve essere creato un oggetto.
  • Il nome-oggetto è il nome da assegnare al nuovo oggetto.

Questo processo di creazione di un oggetto da una classe è noto come istanziazione.

Accesso ai dati dei membri

Per accedere ai membri pubblici di una classe, utilizziamo l'operatore (.)punto. Questi sono i membri contrassegnati con il modificatore di accesso pubblico.

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

Produzione:

Accesso ai dati dei membri

Ecco uno screenshot del codice:

Accesso ai dati dei membri

Spiegazione del codice:

  1. Includi il file header iostream nel nostro codice per poter utilizzare le sue funzioni.
  2. Includere lo spazio dei nomi std nel nostro codice per utilizzare le sue classi senza chiamarlo.
  3. Dichiarare una classe denominata Phone.
  4. Utilizzando il modificatore di accesso pubblico per contrassegnare le variabili che stiamo per creare come accessibili pubblicamente.
  5. Dichiara il costo variabile di un tipo di dati double.
  6. Dichiara una variabile intera denominata slots.
  7. Fine del corpo della classe.
  8. Chiamando la funzione main(). La logica del programma dovrebbe essere aggiunta all'interno del suo corpo.
  9. Crea un oggetto denominato Y6 di tipo Telefono. Questa è chiamata istanziazione.
  10. Crea un oggetto denominato Y7 di tipo Telefono. Questa è chiamata istanziazione.
  11. Accedi al costo variabile/associato della classe Telefono utilizzando l'oggetto Y6. Il valore è impostato su 100.0. Il costo di Y6 è ora impostato su 100.0.
  12. Accedi agli slot variabili/membro della classe Phone utilizzando l'oggetto Y6. Il valore è impostato su 2. Gli slot per Y6 sono ora impostati su 2.
  13. Accedi al costo variabile/associato della classe Telefono utilizzando l'oggetto Y7. Il valore è impostato su 200.0. Il costo di Y7 è ora impostato su 200.0.
  14. Accedi agli slot variabili/membro della classe Phone utilizzando l'oggetto Y7. Il valore è impostato su 2. Gli slot per Y7 sono ora impostati su 2.
  15. Stampa il costo di Y6 sulla console insieme ad altro testo.
  16. Stampa il costo di Y7 sulla console insieme ad altro testo.
  17. Stampa il numero di slot per Y6 insieme ad altro testo.
  18. Stampa il numero di slot per Y7 insieme ad altro testo.
  19. Il programma deve restituire un valore in caso di completamento positivo.
  20. Fine del corpo della funzione main().

Cos'è una lezione privata?

I membri della classe contrassegnati come privati ​​sono accessibili solo tramite le funzioni definite all'interno della classe. Qualsiasi oggetto o funzione definita all'esterno della classe non può accedere direttamente a tali membri. Un membro di una classe privata è accessibile solo tramite le funzioni membro e amico.

Cos'è una classe protetta?

I membri della classe contrassegnati come protetti hanno un vantaggio rispetto a quelli contrassegnati come privati. È possibile accedervi tramite funzioni all'interno della classe della loro definizione. Inoltre, è possibile accedervi dalle classi derivate.

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

Produzione:

Accesso ai dati dei membri

Ecco uno screenshot del codice:

Accesso ai dati dei membri

Spiegazione del codice:

  1. Includi il file di intestazione iostream nel nostro codice per utilizzare le sue funzioni.
  2. Includi lo spazio dei nomi std nel nostro codice per utilizzare le sue classi senza chiamarlo.
  3. Crea una classe denominata ClassA.
  4. Utilizza il modificatore di accesso pubblico per contrassegnare il membro della classe da creare come accessibile pubblicamente.
  5. Crea la funzione denominata set_a() che accetta un valore intero val.
  6. Crea una funzione denominata get_a().
  7. Utilizzare il modificatore di accesso privato per contrassegnare il membro della classe da creare come accessibile privatamente.
  8. Dichiarare una variabile intera denominata a.
  9. Fine del corpo della classe.
  10. Utilizzare il nome della classe e l'operatore di risoluzione dell'ambito per accedere alla funzione get_a(). Vogliamo definire cosa fa la funzione quando viene invocata.
  11. La funzione get_a() dovrebbe restituire il valore della variabile a quando richiamata.
  12. Fine della definizione della funzione get_a().
  13. Utilizzare il nome della classe e l'operatore di risoluzione dell'ambito per accedere alla funzione set_a(). Vogliamo definire cosa fa la funzione quando viene invocata.
  14. Assegnazione del valore della variabile val alla variabile a.
  15. Fine della definizione della funzione set_a().
  16. Chiama la funzione main(). La logica del programma dovrebbe essere aggiunta al corpo di questa funzione.
  17. Crea un'istanza di ClassA e dagli il nome a.
  18. Utilizza l'istanza della classe precedente e la funzione set_a() per assegnare un valore pari a 20 alla variabile a.
  19. Stampa del testo accanto al valore della variabile a sulla console. Il valore della variabile a si ottiene chiamando la funzione get_a().
  20. Il programma deve restituire valore in caso di completamento positivo.
  21. Fine del corpo della funzione main().

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

Produzione:

Accesso ai dati dei membri

Ecco uno screenshot del codice:

Accesso ai dati dei membri

Spiegazione del codice:

  1. Includi il file di intestazione iostream nel nostro codice per utilizzare le sue funzioni.
  2. Includi lo spazio dei nomi std nel nostro codice per utilizzare le sue classi senza chiamarlo.
  3. Crea una classe denominata ParentClass.
  4. Utilizzare il modificatore di accesso protetto per contrassegnare il membro della classe da creare come protetto.
  5. Crea una variabile intera denominata valore.
  6. Fine del corpo della classe.
  7. Crea una nuova classe denominata ChildClass che eredita ParentClass.
  8. Utilizzare il modificatore di accesso protetto per contrassegnare il membro della classe da creare come accessibile alle classi figlie.
  9. Crea la funzione denominata setId() che accetta un valore intero x.
  10. Assegnazione del valore della variabile x al valore della variabile.
  11. Fine della definizione della funzione setId().
  12. Crea una funzione denominata displayValue().
  13. Stampa il valore della variabile denominata value sulla console insieme ad altro testo.
  14. Fine del corpo della funzione displayValue().
  15. Fine del corpo della classe denominata ChildClass.
  16. Chiama la funzione main(). La logica del programma dovrebbe essere aggiunta al corpo di questa funzione.
  17. Creare un'istanza di ChildClass e darle il nome c.
  18. Utilizza l'istanza della classe precedente e la funzione setId() per assegnare un valore pari a 21 alla variabile x.
  19. Utilizzare l'istanza della classe precedente per chiamare la funzione denominata displayValue().
  20. Il programma deve restituire valore in caso di completamento positivo.
  21. Fine del corpo della funzione main().

Funzioni dei membri della classe

Le funzioni ci aiutano a manipolare i dati. Le funzioni membro della classe possono essere definite in due modi:

  • All'interno della definizione della classe
  • Al di fuori della definizione di classe

Se una funzione deve essere definita al di fuori di una definizione di classe, dobbiamo utilizzare l'operatore di risoluzione dell'ambito (::). Questo dovrebbe essere accompagnato dai nomi delle classi e delle funzioni.

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

Produzione:

Funzioni dei membri della classe

Ecco uno screenshot del codice:

Funzioni dei membri della classe

Spiegazione del codice:

  1. Includi il file header iostream nel nostro programma per utilizzare le sue funzioni.
  2. Includi il file di intestazione della stringa nel nostro programma per utilizzare le sue funzioni.
  3. Includi lo spazio dei nomi std nel nostro codice per utilizzare le sue classi senza chiamarlo.
  4. Crea una classe chiamata Guru99.
  5. Utilizza il modificatore di accesso pubblico per contrassegnare i membri della classe che stiamo per creare come accessibili pubblicamente.
  6. Crea una variabile stringa denominata nome_tutorial.
  7. Crea una variabile intera denominata id.
  8. Crea una funzione denominata printname(). Questa funzione non è definita all'interno della definizione della classe.
  9. Crea una funzione denominata stampato(). Questa funzione è definita all'interno della definizione della classe. Il suo corpo è stato aggiunto all'interno della definizione della classe.
  10. Stampa il valore dell'ID variabile insieme ad altro testo sulla console. Nota che questo è stato aggiunto nel corpo della funzione printid(). Verrà eseguito solo quando viene chiamata la funzione printid().
  11. Fine del corpo della funzione printid().
  12. Fine del corpo della classe Guru99.
  13. L'inizio della definizione della funzione printname().
  14. Stampa il valore della variabile tutorial_name sulla console insieme ad altro testo. Nota che questo è stato aggiunto nel corpo della funzione printname(). Verrà eseguito solo quando viene chiamata la funzione printname().
  15. Fine della definizione della funzione printname().
  16. Chiama la funzione main(). La logica del programma dovrebbe essere aggiunta al corpo di questa funzione.
  17. Crea un'istanza della classe Guru99 e assegnale il nome guru99.
  18. Utilizzare l'istanza precedente per assegnare un valore di C++ alla variabile nome_tutorial.
  19. Utilizza l'istanza guru99 per assegnare il valore 1001 alla variabile id.
  20. Utilizza l'istanza guru99 per chiamare la funzione printname() .
  21. Chiama il comando end (fine riga) per stampare una nuova riga vuota sulla console.
  22. Utilizza l'istanza guru99 per chiamare la funzione printid().
  23. Il programma deve restituire valore in caso di completamento positivo.
  24. Fine del corpo della funzione main().

Costruttori e distruttori

Cosa sono i Costruttori?

I costrutti sono funzioni speciali che inizializzano gli oggetti. IL C++ compilatori chiama un costruttore durante la creazione di un oggetto. I costruttori aiutano ad assegnare valori ai membri della classe. Naturalmente, questo avviene dopo che è stato loro assegnato dello spazio di memoria.

Cosa sono i distruttori?

I distruttori invece aiutano a distruggere gli oggetti della classe.

Il nome del costruttore deve essere simile al nome della classe. I costruttori non hanno un tipo restituito.

Il costruttore può essere definito all'interno o all'esterno del corpo della classe. Se definito all'esterno del corpo della classe, deve essere definito con il nome della classe e l'operatore di risoluzione dell'ambito (::).

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

Produzione:

Costruttori e distruttori

Ecco uno screenshot del codice:

Costruttori e distruttori

Spiegazione del codice:

  1. Includere il file di intestazione iostream nel codice per utilizzare le sue funzioni.
  2. Includi lo spazio dei nomi std nel nostro codice per utilizzare le sue classi senza chiamarlo.
  3. Crea una classe denominata ClassA.
  4. Utilizza il modificatore di accesso pubblico per contrassegnare il membro che stiamo per creare come accessibile pubblicamente.
  5. Crea un costruttore per la classe.
  6. Testo da stampare sulla console quando viene chiamato il costruttore. La fine è a C++ parola chiave, che significa riga di fine. Sposta il cursore del mouse sulla riga successiva.
  7. Fine del corpo del costruttore della classe.
  8. Crea un distruttore per la classe.
  9. Testo da stampare sulla console quando viene chiamato il distruttore. La fine è a C++ parola chiave, che significa riga di fine. Sposta il cursore del mouse sulla riga successiva.
  10. Fine del corpo del distruttore.
  11. Fine del corpo della classe.
  12. Chiama la funzione main(). La logica del programma dovrebbe essere aggiunta al corpo di questa funzione.
  13. Crea un oggetto di classe e dagli il nome a. Verrà chiamato il costruttore.
  14. Crea una variabile intera denominata p e assegnale il valore 1.
  15. Crea un blocco di istruzioni if ​​utilizzando la variabile p.
  16. Creare un oggetto di classe e dargli il nome b. Verrà chiamato il distruttore.
  17. Fine del corpo dell'istruzione if.
  18. Fine del corpo della funzione main().

Sintesi

  • C++ è orientato agli oggetti.
  • Le classi costituiscono le caratteristiche principali di C++ che lo rendono orientato agli oggetti.
  • A C++ La classe combina dati e metodi per manipolare i dati in uno solo.
  • Una classe è un progetto per un oggetto.
  • Le classi determinano la forma di un oggetto.
  • I dati e i metodi contenuti in una classe sono noti come membri della classe.
  • Per accedere ai membri della classe, dovresti utilizzare un'istanza della classe.
  • Per creare una classe, utilizziamo la parola chiave class.
  • Le funzioni membro della classe possono essere definite all'interno o all'esterno di una classe.