poo_cpp3.pdf

(73 KB) Pobierz
Héritage (1)
Le troisième aspect essentiel
17
des objets est la notion
d’héritage
L’héritage est une technique extrêmement efficace
permettant la
l’enrichissement
des classes par la création de classes
plus spécifiques, appelées
sous-classes,
à partir de classes
plus générales déjà existantes, appelées
sur-classes
18
.
sur-classe
héritage
enrichissement
sous-classe
sous-classe
sous-classe
17. Après l’encapsulation (données + comportements) et l’abstraction (classes v.s. instances).
18. Les
sur-classes
sont également appelées classes
parentes,
et les
sous-classes
classes
enfants.
Informatique II
Programmation Orientée Objet (en C++)
– 49 –
Héritage (2)
Plus précisement, lorsqu’une sous-classe est définie
[à partir d’une sur-classe], elle va
hériter
de l’ensemble des attributs
et méthodes de sa sur-classe, c’est-à-dire que ces attributs et méthodes
seront disponibles pour les instances de la sous-classe, sans qu’il soit
nécessaire de les redéfinir explicitement.
19
Naturellement, des attributs et/ou méthodes supplémentaires peuvent être définis
par la sous-classe, et constituent l’enrichissement apportée par cette classe.
L’héritage permet donc à la fois d’expliciter les relations structurelles et sémantiques
existant entre classes, et de réduire les redondances de description
et de stockage des propriétés.
19. Plus précisement, les instances de la sous-classe seront également des instances de la sur-classe, et en auront donc [au moins] toutes les caractéris-
tiques; c’est le concept de polymorphisme objet, qui sera abordé un peu plus loin dans ce cours.
Informatique II
Programmation Orientée Objet (en C++)
– 50 –
Héritage (3)
Exemple 1:
Supposons que l’on souhaite considérer, en plus de l’ensemble
tout à fait général des rectangles, celui particulier des
rectangles admettant une surface, représentée par une couleur.
avec contours
carrés
Une façon élégante de procéder est d’étendre la classe
Rectangle
précédemment définie en une sous-classe
R e c t a n g l e P l e i n
, c o n t e n a n t u n n o u ve l a t t r i bu t
couleur,
correspondant à une couleur.
rectangles
avec surface
Exemple 2:
Supposons maintenant que l’on considère que la
couleur
est une
propriété fondamentale des
figures géométriques,
et que l’on
veuille définir, en plus des rectangles, la classe des
cercles.
cercles
Une façon élégante de procéder est de définir en premier
l i e u l a s u r- c l a s s e d e s fi g u r e s g é o m é t r i q u e s
FigureGeometrique
, admettant l’attribut
couleur
, et
d’enrichir cette classe en deux sous-classes distinctes,
celles des rectangles (
Rectangle
) et celle des cercles
(
Cercle
).
Informatique II
figures
géométrique
Rectangles
Programmation Orientée Objet (en C++)
– 51 –
Héritage (4)
Par transitivité, les instances d’une classe enfant possèdent
les attributs et méthodes définis dans la sous-classe et dans l’ensemble
des classes dont la sous-classe hérite (i.e. la classe parente,
la parente de la classe parente, etc.)
20
.
De ce fait, la notion d’enrichissement par héritage
(i.e. définition de sous-classes) permettent de créer un
réseau de dépendances
entre classes, organisé en une
structure arborescente
21
où chacun des noeuds
(qui représente une classe donnée) hérite des propriétés de l’ensemble des noeuds
subordonnant, c’est-à-dire les noeuds faisant partie du chemin remontant
jusqu’à la racine.
20. L’ensemble de ces classes est souvent appelé «l’ascendance» de la sous-classe
21. Du moins tant qu’on se limite à un héritage simple (1 seul parent)
Informatique II
Programmation Orientée Objet (en C++)
– 52 –
Héritage (5)
22
Rectangle
Figure
Géométrique
(hé
rite
de
Figure
Géométrique
)
partitionnement
hérite de
Rectangle
Classe X
Classe X
Cercle
r
ite
de
Sphère
spécialisation
Classe X
Sphère
Classe X
Cylindre
Cercle
Cyclindre
22. Il est d’usage dans les méthodes Objets d’orienter les arcs de la classe enfant vers la classe parente, afin de bien marquer le sens des dépendances.
Informatique II
Programmation Orientée Objet (en C++)
– 53 –
Zgłoś jeśli naruszono regulamin