Sommaire

Classes et instances

L’objectif poursuivi par Bjarne Stroustrup était, rappelons-le, d’implémenter sur un compilateur C les classes décrites par le langage Simula. Ces deux derniers langages étant radicalement opposés dans leur approche, il fallait identifier une double continuité, notamment du côté du C.

Il fut aisé de remarquer que la programmation serait grandement simplifiée si certaines fonctions pouvaient migrer à l’intérieur des structures du C. De ce fait, il n’y aurait plus de structure à passer à ces fonctions puisqu’elles s’appliqueraient évidemment aux champs de la structure.

Toutefois, il fallait conserver un moyen de distinguer deux instances et c’est pour cette raison que l’on a modifié la syntaxe de l’opérateur point :

Programmation fonctionnelle

Programmation orientée objet

struct Point 
{ 
int x,y;
};
void afficher(Point p)
{  
 printf("%d,%d\n",p.x,p.y); 
}

struct Point 
{
int x,y;  
 void afficher() 
{  
printf("%d,%d\n",x,y); 
} 
};

Point p1; 
afficher(p1);

Point p1; 
p1.afficher();

Cette différence d’approche a plusieurs conséquences positives pour la programmation. Pour commencer, le programmeur n’a plus à effectuer un choix parmi les différents modes de passage de la structure à la fonction afficher(). Ensuite, nous allons pouvoir opérer une distinction entre les éléments (champs, ...