Programmation en D - Classes et objets

Les classes sont la caractéristique centrale de la programmation D qui prend en charge la programmation orientée objet et sont souvent appelées types définis par l'utilisateur.

Une classe est utilisée pour spécifier la forme d'un objet et combine la représentation des données et les méthodes de manipulation de ces données dans un package soigné. Les données et les fonctions d'une classe sont appelées membres de la classe.

Définitions de classe D

Lorsque vous définissez une classe, vous définissez un plan pour un type de données. Cela ne définit en fait aucune donnée, mais définit ce que signifie le nom de la classe, c'est-à-dire en quoi consiste un objet de la classe et quelles opérations peuvent être effectuées sur un tel objet.

Une définition de classe commence par le mot-clé classsuivi du nom de la classe; et le corps de la classe, entouré par une paire d'accolades. Une définition de classe doit être suivie d'un point-virgule ou d'une liste de déclarations. Par exemple, nous avons défini le type de données Box à l'aide du mot-cléclass comme suit -

class Box { 
   public: 
      double length;   // Length of a box 
      double breadth;  // Breadth of a box 
      double height;   // Height of a box 
}

Le mot clé publicdétermine les attributs d'accès des membres de la classe qui la suivent. Un membre public est accessible depuis l'extérieur de la classe n'importe où dans la portée de l'objet de classe. Vous pouvez également spécifier les membres d'une classe commeprivate ou protected dont nous discuterons dans une sous-section.

Définition d'objets D

Une classe fournit les plans pour les objets, donc fondamentalement un objet est créé à partir d'une classe. Vous déclarez des objets d'une classe avec exactement le même type de déclaration que vous déclarez des variables de types de base. Les instructions suivantes déclarent deux objets de la classe Box -

Box Box1;          // Declare Box1 of type Box 
Box Box2;          // Declare Box2 of type Box

Les deux objets Box1 et Box2 ont leur propre copie des membres de données.

Accès aux données membres

Les membres de données publiques des objets d'une classe sont accessibles à l'aide de l'opérateur d'accès direct aux membres (.). Essayons l'exemple suivant pour clarifier les choses -

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

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -

Volume of Box1 : 210 
Volume of Box2 : 1560

Il est important de noter que les membres privés et protégés ne sont pas accessibles directement à l'aide de l'opérateur d'accès direct aux membres (.). Bientôt, vous apprendrez comment accéder aux membres privés et protégés.

Classes et objets en D

Jusqu'à présent, vous avez une idée très basique des classes et objets D. Il existe d'autres concepts intéressants liés aux classes et objets D que nous discuterons dans diverses sous-sections énumérées ci-dessous -

N ° Sr. Concept et description
1 Fonctions des membres de la classe

Une fonction membre d'une classe est une fonction qui a sa définition ou son prototype dans la définition de classe comme toute autre variable.

2 Modificateurs d'accès aux classes

Un membre de classe peut être défini comme public, privé ou protégé. Par défaut, les membres seraient considérés comme privés.

3 Constructeur et destructeur

Un constructeur de classe est une fonction spéciale dans une classe qui est appelée lorsqu'un nouvel objet de la classe est créé. Un destructeur est également une fonction spéciale qui est appelée lorsque l'objet créé est supprimé.

4 Le pointeur this en D

Chaque objet a un pointeur spécial this qui pointe vers l'objet lui-même.

5 Pointeur vers les classes D

Un pointeur vers une classe se fait exactement de la même manière qu'un pointeur vers une structure. En fait, une classe n'est en réalité qu'une structure contenant des fonctions.

6 Membres statiques d'une classe

Les membres de données et les membres de fonction d'une classe peuvent être déclarés comme statiques.