Programmazione D - Classi e oggetti
Le classi sono la caratteristica centrale della programmazione D che supporta la programmazione orientata agli oggetti e sono spesso chiamate tipi definiti dall'utente.
Una classe viene utilizzata per specificare la forma di un oggetto e combina la rappresentazione dei dati e i metodi per manipolare tali dati in un unico pacchetto pulito. I dati e le funzioni all'interno di una classe sono chiamati membri della classe.
Definizioni di classe D.
Quando si definisce una classe, si definisce un progetto per un tipo di dati. Questo in realtà non definisce alcun dato, ma definisce cosa significa il nome della classe, cioè di cosa sarà composto un oggetto della classe e quali operazioni possono essere eseguite su tale oggetto.
Una definizione di classe inizia con la parola chiave classseguito dal nome della classe; e il corpo di classe, racchiuso da un paio di parentesi graffe. Una definizione di classe deve essere seguita da un punto e virgola o da un elenco di dichiarazioni. Ad esempio, abbiamo definito il tipo di dati Box utilizzando la parola chiaveclass come segue -
class Box {
public:
double length; // Length of a box
double breadth; // Breadth of a box
double height; // Height of a box
}
La parola chiave publicdetermina gli attributi di accesso dei membri della classe che la seguono. È possibile accedere a un membro pubblico dall'esterno della classe in qualsiasi punto all'interno dell'ambito dell'oggetto classe. Puoi anche specificare i membri di una classe comeprivate o protected di cui parleremo in una sottosezione.
Definizione di oggetti D.
Una classe fornisce i progetti per gli oggetti, quindi fondamentalmente un oggetto viene creato da una classe. Dichiari gli oggetti di una classe con esattamente lo stesso tipo di dichiarazione con cui dichiari le variabili dei tipi di base. Le seguenti istruzioni dichiarano due oggetti della classe Box:
Box Box1; // Declare Box1 of type Box
Box Box2; // Declare Box2 of type Box
Entrambi gli oggetti Box1 e Box2 hanno la propria copia dei membri dati.
Accesso ai membri dei dati
È possibile accedere ai membri dei dati pubblici degli oggetti di una classe utilizzando l'operatore di accesso diretto ai membri (.). Proviamo il seguente esempio per chiarire le cose:
import std.stdio;
class Box {
public:
double length; // Length of a box
double breadth; // Breadth of a box
double height; // Height of a box
}
void main() {
Box box1 = new Box(); // Declare Box1 of type Box
Box box2 = new Box(); // Declare Box2 of type Box
double volume = 0.0; // Store the volume of a box here
// box 1 specification
box1.height = 5.0;
box1.length = 6.0;
box1.breadth = 7.0;
// box 2 specification
box2.height = 10.0;
box2.length = 12.0;
box2.breadth = 13.0;
// volume of box 1
volume = box1.height * box1.length * box1.breadth;
writeln("Volume of Box1 : ",volume);
// volume of box 2
volume = box2.height * box2.length * box2.breadth;
writeln("Volume of Box2 : ", volume);
}
Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:
Volume of Box1 : 210
Volume of Box2 : 1560
È importante notare che non è possibile accedere direttamente ai membri privati e protetti utilizzando l'operatore di accesso diretto ai membri (.). Presto imparerai come accedere ai membri privati e protetti.
Classi e oggetti in D
Finora, hai un'idea molto basilare delle classi e degli oggetti D. Ci sono altri concetti interessanti relativi alle classi D e agli oggetti che discuteremo in varie sottosezioni elencate di seguito:
Sr.No. | Concetto e descrizione |
---|---|
1 | Funzioni dei membri della classe Una funzione membro di una classe è una funzione che ha la sua definizione o il suo prototipo all'interno della definizione della classe come qualsiasi altra variabile. |
2 | Modificatori di accesso alla classe Un membro della classe può essere definito come pubblico, privato o protetto. Per impostazione predefinita, i membri sarebbero considerati privati. |
3 | Costruttore e distruttore Un costruttore di classi è una funzione speciale in una classe che viene chiamata quando viene creato un nuovo oggetto della classe. Un distruttore è anche una funzione speciale che viene chiamata quando l'oggetto creato viene cancellato. |
4 | Il puntatore this in D Ogni oggetto ha un puntatore speciale this che punta all'oggetto stesso. |
5 | Puntatore alle classi D. Un puntatore a una classe viene eseguito esattamente allo stesso modo di un puntatore a una struttura. In effetti una classe è in realtà solo una struttura con funzioni al suo interno. |
6 | Membri statici di una classe Sia i membri dati che i membri funzione di una classe possono essere dichiarati come statici. |