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.
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:
Ecco uno screenshot del codice:
Spiegazione del codice:
- Includi il file header iostream nel nostro codice per poter utilizzare le sue funzioni.
- Includere lo spazio dei nomi std nel nostro codice per utilizzare le sue classi senza chiamarlo.
- Dichiarare una classe denominata Phone.
- Utilizzando il modificatore di accesso pubblico per contrassegnare le variabili che stiamo per creare come accessibili pubblicamente.
- Dichiara il costo variabile di un tipo di dati double.
- Dichiara una variabile intera denominata slots.
- Fine del corpo della classe.
- Chiamando la funzione main(). La logica del programma dovrebbe essere aggiunta all'interno del suo corpo.
- Crea un oggetto denominato Y6 di tipo Telefono. Questa è chiamata istanziazione.
- Crea un oggetto denominato Y7 di tipo Telefono. Questa è chiamata istanziazione.
- 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.
- 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.
- 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.
- 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.
- Stampa il costo di Y6 sulla console insieme ad altro testo.
- Stampa il costo di Y7 sulla console insieme ad altro testo.
- Stampa il numero di slot per Y6 insieme ad altro testo.
- Stampa il numero di slot per Y7 insieme ad altro testo.
- Il programma deve restituire un valore in caso di completamento positivo.
- 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:
Ecco uno screenshot del codice:
Spiegazione del codice:
- Includi il file di intestazione iostream nel nostro codice per utilizzare le sue funzioni.
- Includi lo spazio dei nomi std nel nostro codice per utilizzare le sue classi senza chiamarlo.
- Crea una classe denominata ClassA.
- Utilizza il modificatore di accesso pubblico per contrassegnare il membro della classe da creare come accessibile pubblicamente.
- Crea la funzione denominata set_a() che accetta un valore intero val.
- Crea una funzione denominata get_a().
- Utilizzare il modificatore di accesso privato per contrassegnare il membro della classe da creare come accessibile privatamente.
- Dichiarare una variabile intera denominata a.
- Fine del corpo della classe.
- 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.
- La funzione get_a() dovrebbe restituire il valore della variabile a quando richiamata.
- Fine della definizione della funzione get_a().
- 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.
- Assegnazione del valore della variabile val alla variabile a.
- Fine della definizione della funzione set_a().
- Chiama la funzione main(). La logica del programma dovrebbe essere aggiunta al corpo di questa funzione.
- Crea un'istanza di ClassA e dagli il nome a.
- Utilizza l'istanza della classe precedente e la funzione set_a() per assegnare un valore pari a 20 alla variabile a.
- Stampa del testo accanto al valore della variabile a sulla console. Il valore della variabile a si ottiene chiamando la funzione get_a().
- Il programma deve restituire valore in caso di completamento positivo.
- 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:
Ecco uno screenshot del codice:
Spiegazione del codice:
- Includi il file di intestazione iostream nel nostro codice per utilizzare le sue funzioni.
- Includi lo spazio dei nomi std nel nostro codice per utilizzare le sue classi senza chiamarlo.
- Crea una classe denominata ParentClass.
- Utilizzare il modificatore di accesso protetto per contrassegnare il membro della classe da creare come protetto.
- Crea una variabile intera denominata valore.
- Fine del corpo della classe.
- Crea una nuova classe denominata ChildClass che eredita ParentClass.
- Utilizzare il modificatore di accesso protetto per contrassegnare il membro della classe da creare come accessibile alle classi figlie.
- Crea la funzione denominata setId() che accetta un valore intero x.
- Assegnazione del valore della variabile x al valore della variabile.
- Fine della definizione della funzione setId().
- Crea una funzione denominata displayValue().
- Stampa il valore della variabile denominata value sulla console insieme ad altro testo.
- Fine del corpo della funzione displayValue().
- Fine del corpo della classe denominata ChildClass.
- Chiama la funzione main(). La logica del programma dovrebbe essere aggiunta al corpo di questa funzione.
- Creare un'istanza di ChildClass e darle il nome c.
- Utilizza l'istanza della classe precedente e la funzione setId() per assegnare un valore pari a 21 alla variabile x.
- Utilizzare l'istanza della classe precedente per chiamare la funzione denominata displayValue().
- Il programma deve restituire valore in caso di completamento positivo.
- 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:
Ecco uno screenshot del codice:
Spiegazione del codice:
- Includi il file header iostream nel nostro programma per utilizzare le sue funzioni.
- Includi il file di intestazione della stringa nel nostro programma per utilizzare le sue funzioni.
- Includi lo spazio dei nomi std nel nostro codice per utilizzare le sue classi senza chiamarlo.
- Crea una classe chiamata Guru99.
- Utilizza il modificatore di accesso pubblico per contrassegnare i membri della classe che stiamo per creare come accessibili pubblicamente.
- Crea una variabile stringa denominata nome_tutorial.
- Crea una variabile intera denominata id.
- Crea una funzione denominata printname(). Questa funzione non è definita all'interno della definizione della classe.
- 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.
- 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().
- Fine del corpo della funzione printid().
- Fine del corpo della classe Guru99.
- L'inizio della definizione della funzione printname().
- 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().
- Fine della definizione della funzione printname().
- Chiama la funzione main(). La logica del programma dovrebbe essere aggiunta al corpo di questa funzione.
- Crea un'istanza della classe Guru99 e assegnale il nome guru99.
- Utilizzare l'istanza precedente per assegnare un valore di C++ alla variabile nome_tutorial.
- Utilizza l'istanza guru99 per assegnare il valore 1001 alla variabile id.
- Utilizza l'istanza guru99 per chiamare la funzione printname() .
- Chiama il comando end (fine riga) per stampare una nuova riga vuota sulla console.
- Utilizza l'istanza guru99 per chiamare la funzione printid().
- Il programma deve restituire valore in caso di completamento positivo.
- 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:
Ecco uno screenshot del codice:
Spiegazione del codice:
- Includere il file di intestazione iostream nel codice per utilizzare le sue funzioni.
- Includi lo spazio dei nomi std nel nostro codice per utilizzare le sue classi senza chiamarlo.
- Crea una classe denominata ClassA.
- Utilizza il modificatore di accesso pubblico per contrassegnare il membro che stiamo per creare come accessibile pubblicamente.
- Crea un costruttore per la classe.
- 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.
- Fine del corpo del costruttore della classe.
- Crea un distruttore per la classe.
- 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.
- Fine del corpo del distruttore.
- Fine del corpo della classe.
- Chiama la funzione main(). La logica del programma dovrebbe essere aggiunta al corpo di questa funzione.
- Crea un oggetto di classe e dagli il nome a. Verrà chiamato il costruttore.
- Crea una variabile intera denominata p e assegnale il valore 1.
- Crea un blocco di istruzioni if utilizzando la variabile p.
- Creare un oggetto di classe e dargli il nome b. Verrà chiamato il distruttore.
- Fine del corpo dell'istruzione if.
- 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.