La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

INF1101 Algorithmes et structures de données1 Cours 3 Héritage.

Présentations similaires


Présentation au sujet: "INF1101 Algorithmes et structures de données1 Cours 3 Héritage."— Transcription de la présentation:

1 INF1101 Algorithmes et structures de données1 Cours 3 Héritage

2 INF1101 Algorithmes et structures de données2 L’héritage ConceptConcept Principe d’héritagePrincipe d’héritage Private, protected, publicPrivate, protected, public Surcharge de fonctionsSurcharge de fonctions ConstructeursConstructeurs Ordre des appels de constructeurs, destructeurs et agrégatOrdre des appels de constructeurs, destructeurs et agrégat Méthodes non héritéesMéthodes non héritées Dérivations publiques, protégées et privéesDérivations publiques, protégées et privées

3 INF1101 Algorithmes et structures de données3 Concept d’héritage ObjetGeo Sphere SphereCubeCylindre ObjetGeo: Super-classe ou classe de base. Classe très générale.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.Sphere, Cube, Cylindre: sous-classe ou classe dérivée. Classes plus spécifiques.

4 INF1101 Algorithmes et structures de données4 Principe d’héritage Afin de bien représenter une situation, il faut pouvoir montrer les nuances entre des objets, et effectuer certaines généralisations.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.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 d’une 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.En utilisant les classes dérivées d’une 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 INF1101 Algorithmes et structures de données5 Principe d’héritage (suite) On peut ainsi utiliser l’héritage pour les besoins de généralisation, de réutilisation.On peut ainsi utiliser l’hé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 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.La classe dérivée est plus spécifique que la classe en ajoutant des attributs et des fonctions membres.

6 INF1101 Algorithmes et structures de données6 Principe d’héritage (suite) L’héritage est une relation « est un » Un commerce « est un » immeubleUn commerce « est un » immeuble Une habitation « est un » immeubleUne habitation « est un » immeuble Mais il est faux de dire : Un immeuble est un commerceUn immeuble est un commerce Un immeuble est une habitationUn immeuble est une habitation

7 INF1101 Algorithmes et structures de données7 Principe de composition La composition ou agrégation est une relation « possède un » Un immeuble possède une adresse, Un immeuble possède une adresse, Un immeuble possède un point3D 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é d’Adresse) Un immeuble est une adresse (Immeuble est dérivé d’Adresse)

8 INF1101 Algorithmes et structures de données8 Autres relations La relation « utilise un » correspond à l’appel d’une fonction membre d’une classe dont un paramètre est un objet d’une autre classe.La relation « utilise un » correspond à l’appel d’une fonction membre d’une classe dont un paramètre est un objet d’une autre classe. La relation « connaît un » correspond à une composition par adresse ou une association.La relation « connaît un » correspond à une composition par adresse ou une association.

9 INF1101 Algorithmes et structures de données9 Principe d’héritage (suite) En C++, il existe l’héritage simple, et l’héritage multiple. Dans ce cours, nous ne nous intéresserons qu’à l’héritage simple.En C++, il existe l’héritage simple, et l’héritage multiple. Dans ce cours, nous ne nous intéresserons qu’à l’héritage simple. Dans la définition de la classe dérivée, afin d’utiliser l’héritage, on ajoute le symbole : après le nom de la classe en précisant par la suite quelle est la classe de base.Dans la définition de la classe dérivée, afin d’utiliser l’hé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 INF1101 Algorithmes et structures de données10 Les types d’attributs Les attributs private Lors de l’héritage public, les attributs privés de la classe de base restent privés pour les classes dérivées.Lors de l’hé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 d’accéder à ces attributs.Il faut donc utiliser les méthodes publiques de la classe de base afin d’accéder à ces attributs.

11 INF1101 Algorithmes et structures de données11 Les types d’attributs (suite) Les attributs ou méthodes publics Lors de l’héritage, Les attributs ou méthodes publics de la classe de base seront accessibles par les classes dérivées,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.et le resteront pour les clients de la classe dérivée.

12 INF1101 Algorithmes et structures de données12 Les types d’attributs (suite) Les attributs ou méthodes protected Lors de l’héritage: Les attributs protégés de la classe de base seront accessibles par les classes dérivées,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.mais ne seront pas accessibles par les clients de la classe dérivée. Ce type d’attribut est le plus utilisé lors de l’utilisation de l’héritage.Ce type d’attribut est le plus utilisé lors de l’utilisation de l’héritage.

13 INF1101 Algorithmes et structures de données13 Accès aux membres class ObjetGeo { public: ObjetGeo(); ObjetGeo(couleur& maCouleur); ObjetGeo(const ObjetGeo &copie); virtual ~ObjetGeo(); protected: couleurmaCouleur; };

14 INF1101 Algorithmes et structures de données14 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 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 ("::").Les fonctions redéfinies de la classe de base demeurent accessibles via l'opérateur de résolution de portée ("::").

15 INF1101 Algorithmes et structures de données15 Exemple de redéfinition de fonctions de base ObjetGeo... Afficher() Cube... Afficher() Soit la classe ObjetGeo avec sa classe dérivée Cube, toutes les deux possédant une fonction Afficher();

16 INF1101 Algorithmes et structures de données16 Redéfinition de fonctions void Cube::Afficher() { ObjetGeo::Afficher(); ObjetGeo::Afficher(); cout<< maHauteur <

17 INF1101 Algorithmes et structures de données17 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.ObjetGeo::Afficher();

18 INF1101 Algorithmes et structures de données18 Constructeur et destructeur Lors de la création d’un objet d’une classe dérivée, les constructeurs sont appelés dans l’ordre suivant: Les constructeurs des objets attributs de la classe de base,Les constructeurs des objets attributs de la classe de base, Le constructeur de la classe de base,Le constructeur de la classe de base, Les constructeurs des objets attributs de la classe dérivée;Les constructeurs des objets attributs de la classe dérivée; Le constructeur 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 INF1101 Algorithmes et structures de données19 La classe de base : ObjetGeo class ObjetGeo { public: ObjetGeo(); ObjetGeo(couleur& laCouleur); ObjetGeo(const ObjetGeo &copie); virtual ~ObjetGeo(); protected: couleur maCouleur; };

20 INF1101 Algorithmes et structures de données20 Constructeur de ObjetGeo ObjetGeo::ObjetGeo(couleur& laCouleur) : maCouleur(laCouleur) { }

21 INF1101 Algorithmes et structures de données21 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 INF1101 Algorithmes et structures de données22 Constructeur de Cube Cube::Cube(couleur& col, float uneLargeur, float uneLongueur, float uneHauteur) :ObjetGeo(col) :ObjetGeo(col){ maLargeur = uneLargeur; maLargeur = uneLargeur; maLongueur = uneLongueur; maLongueur = uneLongueur; maHauteur = uneHauteur; maHauteur = uneHauteur;}

23 INF1101 Algorithmes et structures de données23 Ordre des appels de constructeurs et agrégat Lorsqu’un objet d’une classe dérivée est construit, une instance de la classe de base est automatiquement créée.Lorsqu’un objet d’une classe dérivée est construit, une instance de la classe de base est automatiquement créée.

24 INF1101 Algorithmes et structures de données24 Méthodes non héritées Les classes dérivées n’héritent pas : Des constructeurs (défaut, paramètres, copie);Des constructeurs (défaut, paramètres, copie); Du destructeur;Du destructeur; De l’opérateur d’affectation;De l’opérateur d’affectation; Des relations d’amitié.Des relations d’amitié.

25 INF1101 Algorithmes et structures de données25 Opérateur d’assignation non hérité Si on a un opérateur= dans la classe de base;Si on a un opérateur= dans la classe de base; Si aucun opérateur= dans la classe dérivée;Si aucun opérateur= dans la classe dérivée; Alors, le compilateur va appeler l’opérateur= de la classe de base et recopie attribut par attribut les attributs de la classe dérivée.Alors, le compilateur va appeler l’opérateur= de la classe de base et recopie attribut par attribut les attributs de la classe dérivée.

26 INF1101 Algorithmes et structures de données26 Type d’héritage Il existe trois différents types d’héritage, soient : public, private et protected.Il existe trois différents types d’héritage, soient : public, private et protected. Le type d’héritage est spécifié après le symbole :Le type d’héritage est spécifié après le symbole : class Cylindre : private ObjetGeo Par défaut, le type d’héritage est privé.Par défaut, le type d’héritage est privé. Dans ce cours, nous nous contenterons d’utiliser l’héritage public.Dans ce cours, nous nous contenterons d’utiliser l’héritage public.

27 INF1101 Algorithmes et structures de données27 Type d’héritage (suite) Le type d’héritage permet de savoir : Quelles entités sont au courant qu’une certaine classe est en fait une classe dérivée d’une classe de base.Quelles entités sont au courant qu’une certaine classe est en fait une classe dérivée d’une classe de base. Comment les attributs de la classe de base seront accessibles.Comment les attributs de la classe de base seront accessibles.

28 INF1101 Algorithmes et structures de données28 Héritage public Classe de baseClasse dérivée private  protected  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 INF1101 Algorithmes et structures de données29 Héritage protected class ClasseDerivee : protected ClasseBase Classe de baseClasse dérivée private  protected  public  protected Les attributs public de la classe de base deviennent protégés pour la classe dérivée.

30 INF1101 Algorithmes et structures de données30 Héritage privé Classe de baseClasse dérivée private  protected  private public  private class ClasseDerivee : private ClasseBase Tous les attributs de la classe de base deviennent private pour la classe dérivée.


Télécharger ppt "INF1101 Algorithmes et structures de données1 Cours 3 Héritage."

Présentations similaires


Annonces Google