[PDF] Cours Langage C++ : Héritage et polymorphisme Programmation









[PDF] Cours 7 : Classes et méthodes abstraites - Loria

Le mécanisme des classes abstraites permet de définir des comportements (méthodes) qui devront être implémentés dans les classes filles mais sans 
Cours Classes abstraites


[PDF] Classes abstraites

déclarant une méthode sans la définir (c'est-à-dire sans en donner le code) Une classe abstraite est une classe qui ne permet pas
CM JAVA


[PDF] Classes et méthodes finales Classes abstraites

C'est une classe abstraite particulière: - Toutes les méthodes y sont abstraites - Ne possède aucun attribut uniquement des constantes Utilité - Permet de 
chapit


[PDF] Classes héritage polymorphisme en C++ - LaBRI

pour accéder directement aux attributs de l'objet sur lequel la méthode a été appelée Le C++ permet la programmation orientée objet c'est-à-dire qu'il 
support C B B classes





[PDF] Cours_Python_SRI_advanced - IRIT

gestion des classes et objets : classes abstraites attributs/méthodes de classes Exercice: définir un itérateur qui parcours une liste à l'envers
Cours Python SRI advanced


[PDF] Cours Langage C++ : Héritage et polymorphisme Programmation

même classe avec une signature différente Une redéfinition (overriding) permet de fournir une nouvelle définition d'une méthode d'une classe ascendante pour la
cours heritage


[PDF] 1 Définition d'une classe en Java - LIRMM

riable d'instance variable de classe constructeur méthode d'instance méthode de classe abstract // méthode abstraite ou virtuelle pure (VoirPL)
c classesJava


[PDF] Interfaces & Classes abstraites

une méthode sans implémentation est obligatoirement abstraite et est défini par le mot clé abstract public abstract void draw(); ❍Classe abstraite
module I Classes Abstraites Interfaces





[PDF] Introduction à la programmation

Mais alors pourquoi déclarer des méthodes abstraites? L'utilisation d'interfaces permet à des classes sans relation entre elles d'implémenter des
ProgrammationObjetV


213718[PDF] Cours Langage C   : Héritage et polymorphisme Programmation

Cours Langage C++ : Héritage et polymorphisme

Programmation Orienté Objet

Thierry Vaira

BTS IRIS Avignon

tvaira@free.fr?v0.1

Sommaire

1Classes et objets

2L"héritage

3Polymorphisme

4Classe abstraite

5Transtypage

tv (BTS IRIS Avignon)Cours C/C++tvaira@free.fr?v0.1 2 / 37

Rappels

Classes et objets

Les classes sont les éléments de base de laprogrammation orientée objet (POO)en C++. Dans une classe, on réunit : - des données variables : les données memb res,ou les attributsde la classe. - des fonctions :

les fonctions memb res,ou les méthodesde la classe.Une classeAapporte un nouveau typeAajouté aux types (pré)définis

de base par C++.Une variableacréée à partir du type de classeAest appeléeinstance (ouobjet) de la classe A.Exemple (non compilable*) : class A; //déclare une classe A (* car elle n "estpas définie )

A a1;//instancie un objet a1 de type A

A a2;//crée une instance a2 de type A tv (BTS IRIS Avignon)Cours C/C++tvaira@free.fr?v0.1 3 / 37

Rappels

Classifier

Regrouper des objets suivants des critères de ressemblance s"appelle

classer(classifier) :La classe est unedescription abstraite d"un ensemble d"objetstv (BTS IRIS Avignon)Cours C/C++tvaira@free.fr?v0.1 4 / 37

Rappels

État et comportement

Un objet posséde uneidentitéqui permet de distinguer un objet d"un

autre objet (son nom, une adresse mémoire).Un objet posséde unétat(les valeurs contenues dans les attributs

propres à cet objet).Un objet posséde uncomportement(l"utilisation de ses méthodes lui fera changer d"état). tv (BTS IRIS Avignon)Cours C/C++tvaira@free.fr?v0.1 5 / 37

Rappels

Droits d"accès aux membres

Les droits d"accès aux membres d"une classe concernent aussi bien les méthodes que les attributs.En C++, on dispose des droits d"accès suivants : - Accèspublic:on p eututiliser le memb rede n "importeoù dans le programme. - Accèsprivate:seule une fonction memb rede la même classe A peut utiliser ce membre; il est invisible de l"extérieur de A. - Accèsprotected:ce memb rep eutêtre utilisé pa rune fonction de cette même classe A, et pas ailleurs dans le programme (ressemble donc àprivate), mais il peut en plus être utilisé par une classe B qui hérite de A. tv (BTS IRIS Avignon)Cours C/C++tvaira@free.fr?v0.1 6 / 37

L"héritage

Définition

L"héritage(ouspécialisation, oudérivation) permet d"ajouter des propriétés à une classe existante pour en obtenir une nouvelle plus précise.L"idée est : "un Best unAavecdes choses en plus". Exemple : Un étudiantestune personne, et a donc un nom (et un prénom, ...). De plus, il a un numéro INE. tv (BTS IRIS Avignon)Cours C/C++tvaira@free.fr?v0.1 7 / 37

L"héritage

Personne

est la classe parente ou mère de

Etudiant

en anglais superclass class

Personne {

private :stringnom; public :stringgetNom()const{returnnom; }

Etudiant

est la classe fille ou dérivée de

Personne

Etudiant

hérite ou descend de

Personne

class

Etudiant :

public

Personne {

private :stringine; public :stringgetINE()const{returnine; }

Personne unePersonne; Etudiant unEtudiant;

unePersonne.getNom();//légal : unePersonne est une Personne unEtudiant.getINE();//légal : unEtudiant est un Etudiant unEtudiant.getNom();//légal : unEtudiant est une Personne ( parhéritage ) unePersonne.getINE();//illégal : unePersonne n "estpas un Etudiant ( erreur:" class

Personne

has no member named getINE tv (BTS IRIS Avignon)Cours C/C++tvaira@free.fr?v0.1 8 / 37

L"héritage

Types d"héritage

Remarque : Les constructeurs, le destructeur, de même que l"opérateur= de la classe de base ne sont pas hérités dans la classe dérivée. tv (BTS IRIS Avignon)Cours C/C++tvaira@free.fr?v0.1 9 / 37

L"héritage

Conversion automatique (1/2)

Si B hérite de A, alors toutes les instances de B sont aussi des instances de A, et il est donc possible de faire :Personne unePersonne; Etudiant unEtudiant; unePersonne = unEtudiant;//Ok !

Propriété

conservée lorsqu on utilise des pointeurs Personne *pUnePersonne; Etudiant *pUnEtudiant = &unEtudiant; pUnePersonne = pUnEtudiant;//pointer sur un B c "estavant tout pointer sur un A

Évidement

l inverse n est pas vrai unEtudiant = unePersonne;//ERREUR !

Pareil

pour les pointeurs pUnePersonne = &unePersonne; pUnEtudiant = pUnePersonne;//ERREUR ! pointer sur un A n est pas pointer sur un B tv (BTS IRIS Avignon)Cours C/C++tvaira@free.fr?v0.1 10 / 37

L"héritage

Conversion automatique (2/2)

Conclusion :Traiter un type dérivé comme s"il était son type de base est appelétranstypage ascendantou surtypage (upcasting). A l"opposé, letranstypage descendant(downcast) pose un problème particulier car leur vérification n"est possible qu"à l"exécution. Il nécessite

l"utilisation d"opérateur decast:dynamic_cast(vu plus tard).tv (BTS IRIS Avignon)Cours C/C++tvaira@free.fr?v0.1 11 / 37

L"héritage

Principes (1/2)

L"héritage permet :

la réutilisation du code déjà écrit l"ajout de nouvelles fonctionnalités la modification d"un comportement existant (redéfinition) Remarque : la suppression de membres en utilisation l"héritage privé (private).tv (BTS IRIS Avignon)Cours C/C++tvaira@free.fr?v0.1 12 / 37

L"héritage

Principes (2/2)

Classe

de base class

Personne {

private :stringnom; public stringgetNom()const; voidafficher()const{ cout << nom << endl; }

Classe

dérivée class

Etudiant :

public

Personne {

Cours Langage C++ : Héritage et polymorphisme

Programmation Orienté Objet

Thierry Vaira

BTS IRIS Avignon

tvaira@free.fr?v0.1

Sommaire

1Classes et objets

2L"héritage

3Polymorphisme

4Classe abstraite

5Transtypage

tv (BTS IRIS Avignon)Cours C/C++tvaira@free.fr?v0.1 2 / 37

Rappels

Classes et objets

Les classes sont les éléments de base de laprogrammation orientée objet (POO)en C++. Dans une classe, on réunit : - des données variables : les données memb res,ou les attributsde la classe. - des fonctions :

les fonctions memb res,ou les méthodesde la classe.Une classeAapporte un nouveau typeAajouté aux types (pré)définis

de base par C++.Une variableacréée à partir du type de classeAest appeléeinstance (ouobjet) de la classe A.Exemple (non compilable*) : class A; //déclare une classe A (* car elle n "estpas définie )

A a1;//instancie un objet a1 de type A

A a2;//crée une instance a2 de type A tv (BTS IRIS Avignon)Cours C/C++tvaira@free.fr?v0.1 3 / 37

Rappels

Classifier

Regrouper des objets suivants des critères de ressemblance s"appelle

classer(classifier) :La classe est unedescription abstraite d"un ensemble d"objetstv (BTS IRIS Avignon)Cours C/C++tvaira@free.fr?v0.1 4 / 37

Rappels

État et comportement

Un objet posséde uneidentitéqui permet de distinguer un objet d"un

autre objet (son nom, une adresse mémoire).Un objet posséde unétat(les valeurs contenues dans les attributs

propres à cet objet).Un objet posséde uncomportement(l"utilisation de ses méthodes lui fera changer d"état). tv (BTS IRIS Avignon)Cours C/C++tvaira@free.fr?v0.1 5 / 37

Rappels

Droits d"accès aux membres

Les droits d"accès aux membres d"une classe concernent aussi bien les méthodes que les attributs.En C++, on dispose des droits d"accès suivants : - Accèspublic:on p eututiliser le memb rede n "importeoù dans le programme. - Accèsprivate:seule une fonction memb rede la même classe A peut utiliser ce membre; il est invisible de l"extérieur de A. - Accèsprotected:ce memb rep eutêtre utilisé pa rune fonction de cette même classe A, et pas ailleurs dans le programme (ressemble donc àprivate), mais il peut en plus être utilisé par une classe B qui hérite de A. tv (BTS IRIS Avignon)Cours C/C++tvaira@free.fr?v0.1 6 / 37

L"héritage

Définition

L"héritage(ouspécialisation, oudérivation) permet d"ajouter des propriétés à une classe existante pour en obtenir une nouvelle plus précise.L"idée est : "un Best unAavecdes choses en plus". Exemple : Un étudiantestune personne, et a donc un nom (et un prénom, ...). De plus, il a un numéro INE. tv (BTS IRIS Avignon)Cours C/C++tvaira@free.fr?v0.1 7 / 37

L"héritage

Personne

est la classe parente ou mère de

Etudiant

en anglais superclass class

Personne {

private :stringnom; public :stringgetNom()const{returnnom; }

Etudiant

est la classe fille ou dérivée de

Personne

Etudiant

hérite ou descend de

Personne

class

Etudiant :

public

Personne {

private :stringine; public :stringgetINE()const{returnine; }

Personne unePersonne; Etudiant unEtudiant;

unePersonne.getNom();//légal : unePersonne est une Personne unEtudiant.getINE();//légal : unEtudiant est un Etudiant unEtudiant.getNom();//légal : unEtudiant est une Personne ( parhéritage ) unePersonne.getINE();//illégal : unePersonne n "estpas un Etudiant ( erreur:" class

Personne

has no member named getINE tv (BTS IRIS Avignon)Cours C/C++tvaira@free.fr?v0.1 8 / 37

L"héritage

Types d"héritage

Remarque : Les constructeurs, le destructeur, de même que l"opérateur= de la classe de base ne sont pas hérités dans la classe dérivée. tv (BTS IRIS Avignon)Cours C/C++tvaira@free.fr?v0.1 9 / 37

L"héritage

Conversion automatique (1/2)

Si B hérite de A, alors toutes les instances de B sont aussi des instances de A, et il est donc possible de faire :Personne unePersonne; Etudiant unEtudiant; unePersonne = unEtudiant;//Ok !

Propriété

conservée lorsqu on utilise des pointeurs Personne *pUnePersonne; Etudiant *pUnEtudiant = &unEtudiant; pUnePersonne = pUnEtudiant;//pointer sur un B c "estavant tout pointer sur un A

Évidement

l inverse n est pas vrai unEtudiant = unePersonne;//ERREUR !

Pareil

pour les pointeurs pUnePersonne = &unePersonne; pUnEtudiant = pUnePersonne;//ERREUR ! pointer sur un A n est pas pointer sur un B tv (BTS IRIS Avignon)Cours C/C++tvaira@free.fr?v0.1 10 / 37

L"héritage

Conversion automatique (2/2)

Conclusion :Traiter un type dérivé comme s"il était son type de base est appelétranstypage ascendantou surtypage (upcasting). A l"opposé, letranstypage descendant(downcast) pose un problème particulier car leur vérification n"est possible qu"à l"exécution. Il nécessite

l"utilisation d"opérateur decast:dynamic_cast(vu plus tard).tv (BTS IRIS Avignon)Cours C/C++tvaira@free.fr?v0.1 11 / 37

L"héritage

Principes (1/2)

L"héritage permet :

la réutilisation du code déjà écrit l"ajout de nouvelles fonctionnalités la modification d"un comportement existant (redéfinition) Remarque : la suppression de membres en utilisation l"héritage privé (private).tv (BTS IRIS Avignon)Cours C/C++tvaira@free.fr?v0.1 12 / 37

L"héritage

Principes (2/2)

Classe

de base class

Personne {

private :stringnom; public stringgetNom()const; voidafficher()const{ cout << nom << endl; }

Classe

dérivée class

Etudiant :

public

Personne {


  1. classe abstraite sans méthode abstraite
  2. classe abstraite définition
  3. classe abstraite definition
  4. classe abstraite exemple
  5. classe abstraite python