CSI2772 - Concepts avancés de programmation en C++

Version Imprimable

III - Les classes

1. La définition d'une classe

Définir une classe, c'est définir un nouveau type.



Haut de la page

2. Les constructeurs

Exemple 1




Haut de la page

Exemple 2



Exemple 3



Haut de la page

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 :




Haut de la page

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 1





Il 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.







Haut de la page

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.

Haut de la page

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 1





Haut de la page

7. l'Identification dynamique

Exemple 1

L'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.









Haut de la page

Collaboratrices: Emilie Lavigne et Sophie-Catherine Jeaurond