La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

5. Les modules Découpage d’une application en modules

Présentations similaires


Présentation au sujet: "5. Les modules Découpage d’une application en modules"— Transcription de la présentation:

1 5. Les modules Découpage d’une application en modules
8 décembre 2018 5. Les modules Découpage d’une application en modules Les inclusions multiples L’inclusion circulaire Joan S. Morales - Introduction à l'algo. et la programmation

2 Le découpage d’une application en modules
Après avoir découpé l’application en sous-programmes, on regroupe les sous-programmes qui ont un lien entre eux dans un module Un module est composé d’un fichier .cpp et d’un fichier .h (.h pour header, en-tête) Les prototypes et constantes sont placés dans le .h et les définitions dans le .cpp Si un fichier a besoin d’utiliser une constante ou un sous-programme, il doit inclure le .h correspondant avec #include Joan S. Morales - Introduction à l'algo. et la programmation

3 Le découpage d’une application en modules (suite)
Un projet ne doit contenir qu’un seul programme principal (main) Exemples de modules: sdlclg.cpp et sdlclg.h cmath (*) iostream (*) string (*) (*) Les modules dont on veut garder le code source secret sont plutôt distribués sous la forme de fichiers d’en-têtes et de fichiers .lib. Joan S. Morales - Introduction à l'algo. et la programmation

4 Avant le découpage Joan S. Morales - Introduction à l'algo. et la programmation

5 Après le découpage Joan S. Morales - Introduction à l'algo. et la programmation

6 #include"" ou #include<> ?
Les fichiers entourés des symboles < et > sont présumés se trouver dans les répertoires définis dans les paramètres du projet, alors que ceux entourés de guillemets sont présumés se trouver dans le même répertoire que le fichier qui effectue le #include On peut utiliser des chemins relatifs (#include "../sdlclg.h" ), jamais de chemins absolus! Joan S. Morales - Introduction à l'algo. et la programmation

7 Les inclusions multiples
a.h: #include "b.h“ const int A = Nb * 10;   b.h: const int Nb = 2; a.cpp: #include "a.h" #include "b.h"   int main() { // ... } b.h(1): error C2374: ‘Nb' : redéfinition; initialisation multiple  Joan S. Morales - Introduction à l'algo. et la programmation

8 La solution (*) Pour tous les fichiers d’en-têtes (.h), on ajoute au tout début du fichier: #ifndef NOM_DU_FICHIER_H #define NOM_DU_FICHIER_H Et à la toute fin du fichier: #endif (*) Cette solution est générale et fonctionne pour tous les compilateurs. Avec le compilateur de MS Visual Studio, on peut utiliser simplement #pragma once en tête du fichier. Joan S. Morales - Introduction à l'algo. et la programmation

9 Le pré-processeur en action...
#ifndef A_H const int A = Nb * 10; #endif Le pré-processeur en action... Vrai #define A_H #ifndef B_H #endif Vrai #include "b.h" #define B_H const int Nb = 2; #include "a.h" #ifndef B_H #endif Faux #define B_H const int Nb = 2; #include "b.h" int main() { // ... } Joan S. Morales - Introduction à l'algo. et la programmation

10 L’inclusion circulaire
a.h: #include "b.h"   const int A = 2*B; b.h: #include "a.h"   const int B = 2*A; b.h(1): error C1014: fichiers Include trop nombreux : profondeur = 1024 Joan S. Morales - Introduction à l'algo. et la programmation

11 Les bonnes pratiques... Inclure seulement les fichiers d’en-têtes vraiment nécessaires dans les .h Inclure seulement les fichiers d’en-têtes vraiment nécessaires dans les .cpp Portez attention à la structure de votre programme pour éviter les inclusions circulaires Ne jamais inclure de fichier .cpp!!! Ne jamais utiliser de chemins absolus pour inclure un .h Joan S. Morales - Introduction à l'algo. et la programmation


Télécharger ppt "5. Les modules Découpage d’une application en modules"

Présentations similaires


Annonces Google