III - Les classes
1. La définition d'une classe
Définir une classe, c'est définir un nouveau type.2. Les constructeurs
Exemple 1Exemple 2
Exemple 3
3. L'héritage
Visibilité de classe de base- public
- protected (seul les sous-classes peuvent voir les attributs protected)
- private
Visibilité de classe de base |
Trois formes d'héritage | ||
---|---|---|---|
public | protected | private | |
public | public | protected | private |
protected | protected | protected | private |
private | non-accessible | non-accessible | non-accessible |
Exemple :
4. Le polymorphisme
Par défaut, en C++, l'appel aux méthodes se détermine de façon statique lors de l'édition des liens. Cette approche ne permet pas le polymorphisme.
Exemple 1Il est possible de forcer le polymorphisme via la création d'une table virtuelle en utilisant le mot-clé virtual.
L'adresse des méthodes virtuelles auxquelles pointent les pointeurs dans la table virtuelles change selon la classe d'appartenance de l'objet.
5. L'héritage multiple
Les diagrammes suivants offrent une représentation visuelle du comportement des classes contenues dans les espaces nom faune1 et faune2.
6. Les classes abstraites
L'héritage multiple est à éviter sauf pour ce qui est des interfaces (en général, des classes abstraites pures).
Une classe abstraite pure équivaut à une interface. Aucune variable d'instance n'est créée, donc il n'y a pas de copies multiples.
Exemple 17. l'Identification dynamique
Exemple 1L'exemple suivant utilise la surcharge de fonctions pour permettre l'appel de la méthode appropriée au type de l'objet passé en paramètre.
Exemple 2
L'exemple suivant utilise le RTTI (Run-Time Type Identification) pour déterminer le type d'un objet passé et appelé la bonne méthode.