Provo a spiegarti le classi in modo diverso da come te le ha spiegate Dvdrigato:
Una classe intanto, e questo te lo ha detto anche @
Dvdxseo, è un oggetto e come tale esiste solo ed esclusivamente nei linguaggi orientati agli oggetti. Essendo un oggetto occupa memoria e la quantità di memoria occupata dipende da quello che sta dentro : che siano altre classi - è possibile inserire molte altre classi all'interno di una classe -, metodi, variabili e quant'altro. La cosa particolare delle classi nel C++ - e non nel C, ricordiamo che il C è un linguaggio procedurale nato con il metodo top-down, la sua evoluzione nel C++ ne ha ampliato la potenzialità e la funzionalità - sta nel fatto che possiede una cosa che non possiedono gli altri linguaggi ovvero i distruttori - alt, gli altri linguaggi possiedono i distruttori ma il programmatore non ne scrive il corpo cioè cosa succede quando la classe viene virtualmente distrutta -. Ti faccio una rapida spiegazione con il relativo esempio :
Se voglio creare una classe in C++ innanzitutto devo darle il nome, il che è molto importante perché non sono è corretto dal punto di vista logico ma serve anche al programmatore - e in generale a chiunque legge il codice - di capire cosa rappresenta quella classe - ogni oggetto rappresenta qualcosa, nell'esempio di Dvdxseo quella classe rappresenta dei libri -. Per creare una classe basta scrivere :
PS: noterai il punto e virgola dopo la chiusura delle parentesi.
All'interno di questa classe puoi mettere tutto ciò che ti serve per scrivere il tuo programma. Calma però, questo non significa che se devi creare un metodo che ti faccia una somma tra i numeri e la classe ha a che fare con dei libri non ha senso inserire quel metodo in quella classe, perciò riformulo l'affermazione : all'interno di questa classe puoi mettere tutto ciò che serve per scrivere il tuo programma
in relazione alla funzionalità - ovvero a quello che fa - la classe. Quando si
richiama una classe si dice che si
istanzia, ovvero la si crea, dunque occuperà memoria. Per fare questo basta scrivere nella porzione di codice in cui mi serve crearla :
Come vedi all'interno della classe
MyClass ho creato due metodi, rispettivamente il costruttore - il primo, che "costruisce" ovvero crea la classe, la istanzia, quello che dicevo prima - e il secondo che è il distruttore - serve per rilasciare la memoria occupata dalla classe -. Nel main() invece ho scritto
*myclass con l'asterisco perché - ancora non sei arrivato a questo argomento - le classi sono dei puntatori, i puntatori sono dei tipi di dati che rappresentano il riferimento in memoria - in questo caso - della classe. Non approfondisco perché ti confonderai, per adesso prendi per buona questa scrittura. Andando avanti : ho dichiarato il costruttore e il distruttore come
public, in modo che la classe potrà essere creata in qualsiasi parte del programma; poi se la variabile booleana
say_hello viene settata come
true - come da esempio - allora il programma scriverà
Hi master! altrimenti non scriverà niente, successivamente dopo aver stampato il messaggio la classe viene distrutta.
In realtà ci sarebbe molto alto da dire sulle classi, non posso scriverti tutto. Procedi gradualmente, ancora per le classi è troppo presto.
Per quanto riguarda la differenza tra una classe e una struttura in realtà sono molto simili, ma la classe è molto più versatile perché permette la
protezione di suoi elementi attraverso le keyword
public,
private e quant'altro. Possono gestire un numero infinito di elementi se dichiarate come template ma questo per ora lascialo perdere, è un po' presto. Infine supportano le fondamenta della programmazione orientata agli oggetti : ereditarietà - ovvero costruire classi che derivano da altre classi -, polimorfismo - le classi template di cui parlavo poco fa - e l'incapsulamento - ovvero la protezione dei suoi elementi -.