|
|
|
|
|
- Présentation
- Syntaxes
- Héritage d'une classe
- Détail de la syntaxe
- Syntaxe conservée pour compatibilité
- Redéfinition de méthodes
- Exemple
- Exemple
- Syntaxe pour appeler une méthode de la classe de base
- Syntaxe 1
- Syntaxe 2
- Syntaxe 3
- Remarque
L'organisation hiérarchique en classes et sous-classes a permis de créer la notion d'héritage. Autrement dit un objet de la sous-classe A (classe dérivée) qui possède les mêmes caractéristiques que la classe B (classe ancêtre), plus certaines qui lui sont propres, hérite d'emblée des caractéristiques de la classe B sans qu'il soit nécessaire de dupliquer les programmes dans l'objet de la sous-classe A. Ainsi le nombre de lignes de code diminue. L'héritage est le mécanisme par lequel la classe en cours de description utilise les méthodes et les membres définies dans les classes existantes. - La classe existante est appelée Classe ancêtre ou Classe de base.
- La nouvelle classe est appelée Classe dérivée. La classe dérivée englobe la classe ancêtre et y ajoute de nouvelles méthodes, de nouveaux membres et de nouvelles propriétés.
Le but de l'héritage est de récupérer pour une classe, les méthodes développées pour une autre classe, en y ajoutant les spécificités de la nouvelle classe. Une classe dérivée permet à ses objets d'accéder à toutes les méthodes, à tous les membres et à toutes les propriétés de ses classes ancêtres; tout se passe comme si les méthodes, les membres et les propriétés des classes ancêtres faisaient partie de la classe dérivée. Caractéristiques d'un héritage : - Un héritage peut être multiple. Dans ce cas, la classe dérivée peut être dérivée de plusieurs classes ancêtres.
- Un héritage peut être privé ou public (par défaut).
Si l'héritage est public, il est possible d'accéder aux méthodes, aux propriétés et aux membres hérités depuis l'extérieur de la classe. Si l'héritage est privé, seules les méthodes de la classe dérivée peuvent accéder aux méthodes, aux propriétés et aux membres hérités. - Comme dans tous les langages, le polymorphisme ne fonctionne qu'avec des objets dynamiques.
Héritage d'une classe <NomClasseDérivée> est une classe [PRIVE, PROTEGE, PUBLIC] Hérite de <NomClasseAncêtre> <Nom Membre classe Dérivée> est <Type du membre> ... FIN Détail de la syntaxe <NomClasseDérivée> Nom identifiant la classe dérivée en cours de déclaration.
PRIVE, PROTEGE, PUBLIC Mot-clé optionnel. Indique si l'héritage est privé ou non. Si ce mot n'est pas précisé, l'héritage est public.
<NomClasseAncêtre> Nom de la classe ancêtre.
<Nom Membre classe Dérivée> Nom du membre de la classe dérivée. Ce membre sera utilisable uniquement dans un objet de la classe dérivée.
<Type du membre> Type du membre, choisi parmi les types disponibles.
NomFichier is Class
Nom is string
Extension is string
Répertoire is string
END
InformationsFichier is Class
inherits from NomFichier
TailleFichier is int
DateFichier is string
HeureFichier is string
END
Syntaxe conservée pour compatibilité <NomClasseDérivée> est une classe [PRIVE, PROTEGE, PUBLIC] Un objet <NomClasseAncêtre> <Nom Membre classe Dérivée> est <Type du membre> ... FIN Dans une classe dérivée, une méthode de la classe de base peut être redéfinie en créant dans la classe dérivée une méthode de même nom que celle de la classe de base. La redéfinition de méthode permet de modifier le comportement de la méthode définie dans la classe de base; la classe dérivée peut éventuellement redéfinir la méthode en fonction de ses besoins. Par défaut, la méthode redéfinie est une méthode virtuelle. Remarque : la surcharge d'une méthode (utilisation de deux méthodes de même nom dans la même classe) est gérée en WLangage. Pour plus de détails, consultez Surcharge de prototype/Multisyntaxe. Note : le mot-clé Objet permet d'accéder à l'objet courant à l'intérieur d'une méthode Exemple La classe InfoFichier hérite de la classe NomFichier. Ces deux classes ont une méthode Affiche. La méthode Affiche de la classe NomFichier est utilisée par la méthode Affiche de la classe InfoFichier. | | Classe NomFichier | Classe InfoFichier | Déclaration de la classe | Déclaration de la classe | NomFichier is Class
Nom is string
Extension is string
Répertoire is string
END
| InformationsFichier est une Classe
hérite de NomFichier
TailleFichier est un entier
DateFichier est une chaîne
HeureFichier est une chaîne
FIN
| Méthode Affiche | Méthode Affiche | PROCEDURE Affiche()
Trace(:Nom)
Trace(:Extension)
Trace(:Répertoire)
| PROCÉDURE AFFICHE()
Ancêtre:Affiche()
Trace(:TailleFichier)
Trace(:DateFichier)
Trace(:HeureFichier)
|
Exemple Le polymorphisme ne fonctionne qu'avec des objets dynamiques. Dans cet exemple, une classe virtuelle animal est créée. Deux classes (lapin et chat) héritent de cette classe. On veut réaliser une liste des objets différents (des lapins et des chats).
Animal est une Classe
FIN
Chat est une Classe
hérite de Animal
FIN
Lapin est une Classe
hérite de Animal
FIN
ListeA est un tableau de 16 animal dynamiques
ListeA[1] = allouer un chat
ListeA[1] = allouer un lapin
Syntaxe pour appeler une méthode de la classe de base Syntaxe 1 Ancêtre:<Nom de la Méthode>() Détail de la syntaxe
Ancêtre mot-clé permettant d'indiquer que la méthode à utiliser est la méthode de la classe ancêtre immédiatement précédente (utilisable dans le cas d'un seul héritage). Pour appeler une méthode d'une classe de base quelque soit son niveau dans l'ordre d'héritage, il est nécessaire d'utiliser la syntaxe 2.
<Nom de la méthode> Nom de la méthode à utiliser dans la classe ancêtre. Syntaxe 2 <Classe de base>:<Nom de la Méthode>() Détail de la syntaxe
<Classe de base> Nom de la classe ancêtre dans laquelle la méthode à utiliser a été définie.
<Nom de la méthode> Nom de la méthode à utiliser dans la classe ancêtre. Syntaxe 3 :<Classe de base>:<Nom de la Méthode>() Détail de la syntaxe
<Classe de base> Nom de la classe ancêtre dans laquelle la méthode à utiliser a été définie.
<Nom de la méthode> Nom de la méthode à utiliser dans la classe ancêtre.
Documentation également disponible pour…
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|