POO/C++ - Eric Lecolinet - Telecom ParisTech
Index
Programmation orientée objet
Sommaire
Liens et références
Brève historique
Brève historique (2)
C++ versus C
C++ versus Java
En résumé
Références et liens
Compilateurs
Programme C++
Premier chapitre
Déclarations et définitions
Déclaration de classe
Implémentation de classe
Instanciation
Instanciation
Comparaison avec Java
Accès aux variables d'instance
Appel des méthodes d'instance
Constructeurs
Constructeurs (suite)
Constructeur par défaut
Destruction
Destructeur
delete & destructeur
delete & destructeur
Surcharge (overloading)
Paramètres par défaut
Variables de classe
Définition des variables de classe
Méthodes de classe
Namespaces
using namespace
Bibliothèque standard d'E/S
Encapsulation / droits d'accès
Encapsulation / droits d'accès (2)
Encapsulation / droits d'accès (3)
struct
Méthodes d'instance: où est la magie ?
Le
this
des méthodes d'instance
Inlines
Point d'entrée du programme
Terminologie
Chapitre 2 : Héritage
Règles d'héritage
Exemple (déclarations)
Exemple (implémentation)
Remarques
Headers et inclusions multiples
Headers et inclusions multiples (2)
Polymorphisme
Polymorphisme et liaison dynamique
Méthodes virtuelles
Méthodes virtuelles: redéfinition
Méthodes virtuelles: surcharge
Pourquoi des méthodes virtuelles ?
Pourquoi des méthodes NON virtuelles ?
Méthode abstraite
Classe abstraite
Classes abstraites (2)
Exemple
Traitements génériques
Bénéfices du polymorphisme (1)
Bénéfices du polymorphisme (2)
Interfaces
Exemple d'interface
Complément: factorisation du code
Classes imbriquées (1)
Classes imbriquées (2)
Méthodes virtuelles: comment ça marche ?
Chapitre 3 : Mémoire
Mémoire
Mémoire et objets
Création et destruction des objets
Création et destruction des objets (2)
. versus ->
Objets contenant des objets
Création de l'objet
Destruction de l'objet
Initialisation et affectation
Initialisation et affectation
Interdire la copie d'objets
Redéfinir la copie d'objets (copie profonde)
Compléments
Chapitre 4 : Constance
Pointeurs et littéraux
Méthodes "const"
Remarques
Conversion de constance
Conversion de constance
Cast et const_cast<>
Constance logique et constance physique
Chapitre 5 : Passage par valeur et par référence
Passage par valeur
Comment recupérer une valeur ?
Passage par référence
Cas des "gros arguments"
Cas des "gros arguments"
1ere tentative
Passage par
const
référence
Synthèse
Valeur de retour des fonctions
Remarque
Rappel
Comparaison avec C et Java
Comparaison avec C
Comparaison avec Java : Types de base
Comparaison avec Java : Objets
Comparaison avec Java : Objets (Suite)
Comparaison avec Java : Objets (Solution)
Preferer les références aux pointeurs
Copie : références vs. pointeurs
Cas des conteneurs de la STL
Cas des conteneurs de la STL (2)
Cas des conteneurs de la STL (3)
Chapitre 8 : Surcharge des opérateurs et Smart Pointers
Surcharge des opérateurs
Cas (particulièrement) intéressants
Smart Pointers, comptage de références
Smart Pointers "Intrusifs"
Ou est la magie ?
Implémentations et limitations
Exemple d'implementation
Doxygen
Chapitre 6 : Templates et STL
Templates (2)
Standard Template Library (STL)
STL (2)
Exemple de vecteur
Exemple de liste
Deux problèmes éventuels ...
1) Passer les conteneurs par référence
2) Détruire les objets pointés
Enlever des élements de std::list
Détruire des élements tout en consultant la liste
Exemple d'utilisation d'un "algorithme"
Chapitre 7 : Compléments
Doxygen
Transtypage vers les super-classes
Transtypage vers les super-classes
Transtypage vers les sous-classes
Transtypage vers les sous-classes
Une solution qui a ses limites
Une mauvaise solution
Une mauvaise solution
Bonne solution: Transtypage dynamique
Typage statique et typage dynamique
Autres operateurs de transtypage
RTTI
RTTI (2)
Types incomplets
Types incomplets
Types incomplets : mauvaise solution
Types incomplets : bonne solution
Pointeurs de fonctions et de méthodes
Chapitre 9 : Traitement des erreurs
Exceptions
Exceptions (2)
Exceptions (3)
Exceptions (4)
Chapitre 10 : Héritage multiple
Constructeurs
Ambiguités
"using"
Duplication de bases
Bases virtuelles
Classes imbriquées (inner classes)
Plus d'infos