|
|
|
|
|
- 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 est une Classe
Nom est une chaîne
Extension est une chaîne
Répertoire est une chaîne
FIN
InformationsFichier est une Classe
hérite de NomFichier
TailleFichier est un entier
DateFichier est une chaîne
HeureFichier est une chaîne
FIN
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 est une Classe
Nom est une chaîne
Extension est une chaîne
Répertoire est une chaîne
FIN
| 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 | PROCÉDURE 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.
Liste des exemples associés :
|
Exemples didactiques (WINDEV) : WD POO Simple
[ + ] L'exemple "WD POO Simple" est un exemple didactique sur la POO avec WINDEV. Cet exemple permet de voir le fonctionnement : - des classes, - des héritages, - des procédures virtuelles, - des diagrammes UML, - ...
|
|
Exemples didactiques (WINDEV) : WD Pilotage traitement de texte
[ + ] Le but de cet exemple est de proposer une interface universelle, permettant de piloter ces applications, sans se soucier de l'application à piloter. Cet exemple se base sur un concept de la programmation orientée objet : le polymorphisme. Cela consiste à utiliser des objets différents (objet LibreOffice et objet MicrosoftWord), sans savoir réellement lequel est utilisé.
|
Documentation également disponible pour…
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|