samedi 27 octobre 2012

Présentation Générale C++


Généralités

Puisque cela n’est pas foncièrement utile, je vous fais grâce de l’historique du langage C++. Vous devez juste savoir, éventuellement, qu’il a été conçu par Bjarne Stroustrup, ce qui aide pour trouver l’excellente bible du C++, écrite par lui-même[1].
Pour commencer cette présentation, parlons de quelques généralités, et d’abord du pourquoi du C++.
C’est avant tout une nécessité de répondre à des besoins générés par de gros projets. Ils nécessitent une façon de travailler plus rigoureuse, pour un code plus structuré, extensible, réutilisable et enfin si possible, portable. Ceci est assez limité lorsque l’on emploie un langage simplement structuré tel que C ou Turbo Pascal.

Programmation Orientée Objet

La Programmation Orientée Objet (P.O.O.) est une solution. Elle permet d’introduire le concept d’objet justement, qui consiste en un ensemble de données et de procédures qui agissent sur ces données.
Lorsque l’objet est parfaitement bien écrit, il introduit la notion fondamentale d’Encapsulation des données. Ceci signifie qu’il n’est plus possible pour l’utilisateur de l’objet, d’accéder directement aux données : il doit passer par des méthodes spécifiques écrites par le concepteur de l’objet, et qui servent d’interface entre l’objet et ses utilisateurs. L’intérêt de cette technique est évident : l’utilisateur ne peut pas intervenir directement sur l’objet, ce qui diminue les risques d’erreur, ce dernier devenant une "boîte noire".
Une autre notion importante en P.O.O. est l’héritage. Elle permet la définition d’une nouvelle classe à partir d’une classe existante. Il est alors possible de lui adjoindre de nouvelles données, de nouvelles fonctions membres (procédures) pour la spécialiser.

Différences entre C et C++

Nous allons parler ici d’un certain nombre de différences existant entre le C et le C++. Nous pourrions d’ailleurs plutôt utiliser le terme d’incompatibilités.

Les fonctions

Les fonctions en C peuvent être définies suivant deux modèles :

int CalculeSomme ( a, b )
int a; 
int b; 

     ... /* Fonction */ 
}    
int CalculeSomme ( int a, int b ) 

     ... /* Fonction */ 
}
Il faut simplement savoir que le C++ n’accepte que la seconde méthode.

Const

Le C++ a quelque peu modifié l’utilisation "C" de ce qualificatif. Pour rappel, "const" est utilisé pour définir une variable constante. C’est une bonne alternative à un define.
La portée en C++ est désormais plus locale. En C, un const permettait pour une variable globale d’être "visible" partout. C++ limite quant à lui la portée d’une telle variable, au fichier source contenant la déclaration.

Compatibilité de pointeurs

En C ANSI, un "void*" est compatible avec tout autre type de pointeurs, et inversement.
Par exemple, ceci est légal en C :
/* C */
void * pQqch;    /* Pointeur générique */
int * pEntier;    /* Pointeur sur un entier */
pEntier = pQqch;
pQqch = pEntier; 
Ces affectations font intervenir des conversions implicites. En C++, seule la conversion int* --› void* est implicite. L’autre reste possible, mais nécessite ce que l’on nomme un "cast" :
// C++ 
void * pQqch;             // Pointeur générique 
int * pEntier;            // Pointeur sur un entier 
pEntier = (int*)pQqch;  // "cast" en entier

Aucun commentaire:

Enregistrer un commentaire