Cours 3 - PowerPoint PPT Presentation

1 / 30
About This Presentation
Title:

Cours 3

Description:

Ordre des appels de constructeurs, destructeurs et agr gat. M thodes non h rit es ... sont un m canisme simple pour d finir une nouvelle classe en ajoutant ... – PowerPoint PPT presentation

Number of Views:22
Avg rating:3.0/5.0
Slides: 31
Provided by: sak50
Category:
Tags: ajoutant | cours

less

Transcript and Presenter's Notes

Title: Cours 3


1
Cours 3
Héritage
2
Lhéritage
  • Concept
  • Principe dhéritage
  • Private, protected, public
  • Surcharge de fonctions
  • Constructeurs
  • Ordre des appels de constructeurs, destructeurs
    et agrégat
  • Méthodes non héritées
  • Dérivations publiques, protégées et privées

3
Concept dhéritage
ObjetGeo
Sphere
Cube
Cylindre
  • ObjetGeo Super-classe ou classe de base. Classe
    très générale.
  • Sphere, Cube, Cylindre sous-classe ou classe
    dérivée. Classes plus spécifiques.

4
Principe dhéritage
  • Afin de bien représenter une situation, il faut
    pouvoir montrer les nuances entre des objets, et
    effectuer certaines généralisations.
  • Les classes dérivées sont un mécanisme simple
    pour définir une nouvelle classe en ajoutant des
    facilités à une classe existante sans
    reprogrammer ou recompiler la classe de base.
  • En utilisant les classes dérivées dune classe
    existante, on définit une interface commune aux
    classes dérivées de telle manière que les objets
    de ces classes dérivées sont manipulés de façon
    identique par certaines parties du programme.

Réutilisation
5
Principe dhéritage (suite)
  • On peut ainsi utiliser lhéritage pour les
    besoins de généralisation, de réutilisation.
  • La classe dérivée hérite des attributs et des
    fonctions de la classe de base.
  • La classe dérivée est plus spécifique que la
    classe en ajoutant des attributs et des fonctions
    membres.


6
Principe dhéritage (suite)
  • Lhéritage est une relation  est un 
  • Un commerce  est un  immeuble
  • Une habitation  est un  immeuble
  • Mais il est faux de dire
  • Un immeuble est un commerce
  • Un immeuble est une habitation

7
Principe de composition
  • La composition ou agrégation est une
  • relation  possède un 
  • Un immeuble possède une adresse,
  • Un immeuble possède un point3D
  • Il serait faux de concevoir le logiciel en
  • énonçant que
  • Un immeuble est une adresse (Immeuble est
    dérivé dAdresse)

8
Autres relations
  • La relation  utilise un  correspond à lappel
    dune fonction membre dune classe dont un
    paramètre est un objet dune autre classe.
  • La relation  connaît un  correspond à une
    composition par adresse ou une association.

9
Principe dhéritage (suite)
  • En C, il existe lhéritage simple, et
    lhéritage multiple. Dans ce cours, nous ne nous
    intéresserons quà lhéritage simple.
  • Dans la définition de la classe dérivée, afin
    dutiliser lhéritage, on ajoute le symbole
    après le nom de la classe en précisant par la
    suite quelle est la classe de base.
  • Ex class Sphere public ObjetGeo
  • ...


10
Les types dattributs
  • Les attributs private
  • Lors de lhéritage public, les attributs privés
    de la classe de base restent privés pour les
    classes dérivées.
  • Il faut donc utiliser les méthodes publiques de
    la classe de base afin daccéder à ces attributs.


11
Les types dattributs (suite)
  • Les attributs ou méthodes publics
  • Lors de lhéritage,
  • Les attributs ou méthodes publics de la classe de
    base seront accessibles par les classes dérivées,
  • et le resteront pour les clients de la classe
    dérivée.


12
Les types dattributs (suite)
  • Les attributs ou méthodes protected
  • Lors de lhéritage
  • Les attributs protégés de la classe de base
    seront accessibles par les classes dérivées,
  • mais ne seront pas accessibles par les clients de
    la classe dérivée.
  • Ce type dattribut est le plus utilisé lors de
    lutilisation de lhéritage.


13
Accès aux membres
  • class ObjetGeo
  • public
  • ObjetGeo()
  • ObjetGeo(couleur maCouleur)
  • ObjetGeo(const ObjetGeo copie)
  • virtual ObjetGeo()
  • protected
  • couleur maCouleur

14
Redéfinition des fonctions de base
  • Les fonctions de la classe de base peuvent être
    redéfinies dans la classe dérivée.
  • Les fonctions redéfinies de la classe de base
    demeurent accessibles via l'opérateur de
    résolution de portée ("").


15
Exemple de redéfinition de fonctions de base

Soit la classe ObjetGeo avec sa classe dérivée
Cube, toutes les deux possédant une fonction
Afficher()

ObjetGeo

. . .
Cube
Afficher()
. . .
Afficher()
16
Redéfinition de fonctions
void ObjetGeoAfficher() coutltlt"Couleur"
maCouleur.ecrire(cout) coutltltendl
void CubeAfficher() ObjetGeoAfficher(
) coutltlt maHauteur ltltmaLongueur
ltltmaLargeur
Appel de la fonction Afficher() de ObjetGeo
17
Redéfinition de fonctions(suite)
  • ObjetGeo MonObjet(couleur(100,0,0))
  • // fonction Afficher de ObjetGeo
  • MonObjet.Afficher()
  • Cube MonCube (couleur(100,0,0),5,5,5)
  • // fonction Afficher de Cube
  • MonCube.Afficher()
  • // fonction Afficher de ObjetGeo
  • MonCube.ObjetGeoAfficher()

18
Constructeur et destructeur
  • Lors de la création dun objet dune classe
  • dérivée, les constructeurs sont appelés dans
  • lordre suivant
  • Les constructeurs des objets attributs de la
    classe de base,
  • Le constructeur de la classe de base,
  • Les constructeurs des objets attributs de la
    classe dérivée
  • Le constructeur de la classe dérivée.
  • Les destructeurs sont appelés en ordre inverse
    des constructeurs.

19
La classe de base ObjetGeo
  • class ObjetGeo
  • public
  • ObjetGeo()
  • ObjetGeo(couleur laCouleur)
  • ObjetGeo(const ObjetGeo copie)
  • virtual ObjetGeo()
  • protected
  • couleur maCouleur

20
Constructeur de ObjetGeo
  • ObjetGeoObjetGeo(couleur laCouleur)
  • maCouleur(laCouleur)

21
Classe dérivée Cube
  • class Cube public ObjetGeo
  • public
  • Cube()
  • Cube(couleur col, float uneLargeur, float
    uneLongueur, float uneHauteur)
  • Cube(const Cube copie)
  • Cube()
  • . . .
  • private
  • float maLargeur
  • float maLongueur
  • float maHauteur

22
Constructeur de Cube
  • CubeCube(couleur col, float uneLargeur,
    float uneLongueur, float uneHauteur)
  • ObjetGeo(col)
  • maLargeur uneLargeur
  • maLongueur uneLongueur
  • maHauteur uneHauteur

23
Ordre des appels de constructeurs et agrégat
  • Lorsquun objet dune classe dérivée est
    construit, une instance de la classe de base est
    automatiquement créée.


24
Méthodes non héritées
  • Les classes dérivées nhéritent pas
  • Des constructeurs(défaut, paramètres, copie)
  • Du destructeur
  • De lopérateur daffectation
  • Des relations damitié.

25
Opérateur dassignation non hérité
  • Si on a un opérateur dans la classe de base
  • Si aucun opérateur dans la classe dérivée
  • Alors, le compilateur va appeler lopérateur de
    la classe de base et recopie attribut par
    attribut les attributs de la classe dérivée.

26
Type dhéritage
  • Il existe trois différents types dhéritage,
    soient public, private et protected.
  • Le type dhéritage est spécifié après le symbole
  • class Cylindre private ObjetGeo
  • Par défaut, le type dhéritage est privé.
  • Dans ce cours, nous nous contenterons dutiliser
    lhéritage public.


27
Type dhéritage (suite)
  • Le type dhéritage permet de savoir
  • Quelles entités sont au courant quune certaine
    classe est en fait une classe dérivée dune
    classe de base.
  • Comment les attributs de la classe de base seront
    accessibles.


28
Héritage public
class ClasseDerivee public ClasseBase
Les attributs private, protected et public de la
classe de base restent les mêmes pour la classe
dérivée.
29
Héritage protected
class ClasseDerivee protected ClasseBase
Les attributs public de la classe de base
deviennent protégés pour la classe dérivée.
30
Héritage privé
class ClasseDerivee private ClasseBase
Tous les attributs de la classe de base
deviennent private pour la classe dérivée.
Write a Comment
User Comments (0)
About PowerShow.com