Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.
heritage [2015/02/16 16:25] woly |
heritage [2018/07/20 23:39] (Version actuelle) winjerome Ajout des liens vers les chapitres précédent/suivant |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ^ Chapitre précédent ^ [[programmez_avec_le_langage_c|Sommaire principal]] ^ Chapitre suivant ^ | + | ^ [[semantique_d_entite|Chapitre précédent]] ^ [[programmez_avec_le_langage_c|Sommaire principal]] ^ [[polymorphisme_et_pointeurs|Chapitre suivant]] ^ |
Cela ne va pas. Les explications sont confuses, pas dans le bonne ordre, les notions importantes ne sont pas présentées en premier. | Cela ne va pas. Les explications sont confuses, pas dans le bonne ordre, les notions importantes ne sont pas présentées en premier. | ||
- | 1. La sémantique d'entité n'est pas une nouvelle syntaxe pour écrire des classe, on y retrouve les principes déjà présentés dans la sémantique de valeur : fonctions et variables membres, accessibilités public/private, les constructeur/destructeur. | + | 1. La sémantique d'entité n'est pas une nouvelle syntaxe pour écrire des classes, on y retrouve les principes déjà présentés dans la sémantique de valeur : fonctions et variables membres, accessibilités public/private, les constructeurs/destructeur. |
2. Distinction entité/valeur ne se fait pas sur la syntaxe (les règles d'écriture des classes), mais sur la sémantique (comme on utilise chaque type de classe ; ou dit autrement, quels sont les services rendus par chaque type de classe). | 2. Distinction entité/valeur ne se fait pas sur la syntaxe (les règles d'écriture des classes), mais sur la sémantique (comme on utilise chaque type de classe ; ou dit autrement, quels sont les services rendus par chaque type de classe). | ||
3. Par exemple, pas de conversion, comparaison, affectation pour la sémantique d'entité. | 3. Par exemple, pas de conversion, comparaison, affectation pour la sémantique d'entité. | ||
Ligne 38: | Ligne 38: | ||
===== Rappel sur la visibilité des membres ===== | ===== Rappel sur la visibilité des membres ===== | ||
- | Pour rappel, les membres d'une classe peuvent avoir trois types de visibilité : publique, privé et protégé. Les visibilités publiques et privées ont déjà été utilisée dans la sémantique de valeur : les membres privés ne sont utilisables quand dans les autres fonctions membres de la même classe, les membres publiques sont utilisables en dehors de la classe. | + | Pour rappel, les membres d'une classe peuvent avoir trois types de visibilité : publique, privé et protégé. Les visibilités publiques et privées ont déjà été utilisées dans la sémantique de valeur : les membres privés ne sont utilisables quand dans les autres fonctions membres de la même classe, les membres publics sont utilisables en dehors de la classe. |
<code cpp> | <code cpp> | ||
Ligne 116: | Ligne 116: | ||
===== Visibilité dans les membres de la classe dérivée ===== | ===== Visibilité dans les membres de la classe dérivée ===== | ||
- | Concernant l'accès depuis une fonction membre de la classe enfant, l'accès aux membres de la classe parente est déterminée selon la visibilité de ces membres dans la classe parente. On connait déjà les visibilité publique et privée, qui autorise ou interdise l'accès aux membres depuis l'extérieur de la classe. Ces deux visibilités ont également un sens dans l'héritage : | + | Concernant l'accès depuis une fonction membre de la classe enfant, l'accès aux membres de la classe parente est déterminée selon la visibilité de ces membres dans la classe parente. On connait déjà les visibilités publique et privée, qui autorisent ou interdisent l'accès aux membres depuis l'extérieur de la classe. Ces deux visibilités ont également un sens dans l'héritage : |
- | * un membre publique d'une classe parente sera accessible dans les fonctions membres des classes dérivées ; | + | * un membre public d'une classe parente sera accessible dans les fonctions membres des classes dérivées ; |
* un membre privé d'une classe parente ne sera pas accessible dans les fonctions membres des classes dérivées. | * un membre privé d'une classe parente ne sera pas accessible dans les fonctions membres des classes dérivées. | ||
Ligne 165: | Ligne 165: | ||
<note>Il n'existe pas de visibilité permettant d'avoir accès aux membres de la classe parente depuis l'extérieur de classe enfant, mais pas dans la classe enfant. Cela n'aurait pas trop de sens d'avoir une telle visibilité.</note> | <note>Il n'existe pas de visibilité permettant d'avoir accès aux membres de la classe parente depuis l'extérieur de classe enfant, mais pas dans la classe enfant. Cela n'aurait pas trop de sens d'avoir une telle visibilité.</note> | ||
- | Donc pour résumé, dans les fonctions membres des classes enfants, on peut accéder aux membres publiques et protégés des classes parentes, pas aux membres privés. | + | Donc pour résumé, dans les fonctions membres des classes enfants, on peut accéder aux membres publics et protégés des classes parentes, pas aux membres privés. |
- | ===== Héritage publique et privé ===== | + | ===== Héritage public et privé ===== |
Il faut également regarder l'accès aux membres de la classe parente depuis l'extérieur de la classe enfant. En plus de la visibilité publique, protégée et privée de chaque membre de la classe parente, il faut tenir compte de la visibilité de l'héritage. | Il faut également regarder l'accès aux membres de la classe parente depuis l'extérieur de la classe enfant. En plus de la visibilité publique, protégée et privée de chaque membre de la classe parente, il faut tenir compte de la visibilité de l'héritage. | ||
Ligne 192: | Ligne 192: | ||
- | ^ Chapitre précédent ^ [[programmez_avec_le_langage_c|Sommaire principal]] ^ Chapitre suivant ^ | + | ^ [[semantique_d_entite|Chapitre précédent]] ^ [[programmez_avec_le_langage_c|Sommaire principal]] ^ [[polymorphisme_et_pointeurs|Chapitre suivant]] ^ |
{{tag> Cours C++}} | {{tag> Cours C++}} |