Télécharger ce cours intitulé Introduction au C++ et à la programmation objet, support de formation sur 111 pages pour tout les niveaux crée par par Emmanuel Courcelle.
Si vous êtes programmeur, mais habitué aux langages de programmation ‘procéduraux’ (pascal, fortran, C, perl, etc.), ce tutoriel en pdf est pour vous: il essaie d’expliquer comment on peut passer de la programmation procédurale à la programmation objet, via la programmation structurée.
Plan de cours
- Poser un problème
- La programmation objets expliquée aux programmeurs
- L’approche procédurale
- Qu’est-ce qu’une fonction ?
- Variables locales ou globales
- L’approche modulaire
- Encapsulation des données
- Prototypage
- L’approche objets
- Des objets intégrés au système de typage
- La solution du C++
- Opérations sur les objets
- La méthode par l’héritage
- Définir des piles de n’importe quoi
- Des bibliothèques d’objets
- La programmation objets expliquée aux gens normaux
- Programme principal
- Des programmes plus robustes
- Classes et objets
- Le comportement d’un objet
- L’identité d’un objet
- Au coeur des langages C/C++
- Les expressions
- Les instructions
- L’instruction conditionnelle if
- L’instruction switch
- L’instruction while
- L’instruction de boucle for
- L’instruction do… while
- Les constantes en langage C
- Constantes flottantes
- Déclarations de variables
- La structure d’une déclaration de variables
- Les types de base
- Types dérivés
- Les tableaux
- Les structures
- Opérateurs et expressions
- Les fonctions
- Pointeurs (*), références (&), descripteur const
- Pointeurs et tableaux
- Pointeurs sur une structure
- Allocation dynamique de la mémoire en C
Extrait de cours
Avant de se précipiter sur son clavier pour écrire un programme, il convient de réfléchir afin de poser correctement le problème… Or, la manière même dont le problème sera posé influe sur l’écriture du programme. D’où la notion de ‘paradigme de programmation’. Or, s’il est possible d’implémenter tous les paradigmes en utilisant n’importe quel langage, cela sera plus ou moins facile selon le langage utilisé. Ainsi, il est possible de programmer en objet en utilisant le C… mais le C++, conçu dans cet objectif, supporte la programmation objet, par sa syntaxe d’une part, par les contrôles apportés tant au moment de la compilation que lors de l’exécution d’autre part.
Profitez de ce manuel de formation en PDF pour comprendre mieux le C++ et enrichir votre connaissance.
Commencez à télécharger ce cours adapté pour vous et à apprendre C++.
Un objet de type "shape"Suposons que nous voulions définir une série d'objets permettant de dessiner des formes à l'écran ("circle", "triangle", "square"). Nous pouvons procéder de plusieurs manières:La méthode "tout à plat"C'est celle correspondant aux couteaux de cuisine ci-dessus: il suffit de définir trois objets différents, un pour chaque forme désirée. On aura alors des déclarations du style:class circle;class triangle;class square;Si mettre tout sur le même plan est stupide dans la vie quotidienne, ce n'est pas plus malin dans un programme informatique… mais en outre, cette méthode conduira à réécrire sans arrêt la même chose… justement ce que le C++ voudrait éviter.La méthode étiquetteDéjà un peu mieux… elle consiste à considérer qu'un cercle, un triangle, un carré sont des formes: nous créons donc une classe appelée shape , définie de la manière suivante:enum kind {circle, triangle, square};class shape { point center; color col; kind k;public: point where() {return center}; void draw();};Du point-de-vue de la conception, cela revient à dire qu'un cercle est une forme ayant l'étiquette "circle"… pas mal, mais pas fameux, car cela revient aussi à dire qu'il n'y a pas plus de différence entre un cercle rouge et un cercle noir qu'entre un cercle et un carré… même sans être un as en géométrie, on sent bien que cela ne correspond pas à la réalité…Du point-de-vue de l'écriture du code, la fonction draw va tester le champ kind , et suivant les cas dessinera un cercle, un triangle, un carré… cela présente quelques sérieux inconvénients:• Plus le nombre de formes sera grand, plus la fonction draw sera longue. • Si je rajoute une nouvelle forme (ellipse, par exemple), je vais devoir modifier la fonction draw… avec tous les risques d'ajout d'erreurs. Au fond, pour reprendre l'exemple concret précédent, tout se passe comme si les ingénieurs de Renault, lorsqu'ils ont conçu la Safrane, avaient réouvert le dossier de la Twingo et avaient modifié des dessins de celle-ci, en ajoutant des erreurs. Résultat: le jour de la sortie de la Safrane, les Twingo qui sortent de l'usine ont trois roues…En fait, ce qui manque ici, c'est de distinguer entre propriétés génériques, communes à tous les objets de type shape, et propriétés spécifiques à certaines formes.La méthode par l'héritageL'héritage est précisément l'outil qui va nous permettre d'implémenter cette distinction: cela passera par la définition de 4 classes. Une classe "abstraite" comportant toutes les propriétés génériques, et trois classes comportant les propriétés spécifiques de chaque forme particulière. Voici le code de la classe de base:class shape { point center; color col;public: point where() { return center; }; virtual void draw()=0;}La classe de baseLa déclaration de fonction draw signifie qu'une forme doit pouvoir être dessinée, mais on ne sait pas encore, à ce 10 Cours C++ – Emmanuel Courcelle / CUTIS / Formation permanente du C.N.R.S. – Janvier 2013 –