[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
Cours Langage C++ : Héritage et polymorphisme
Programmation Orienté Objet
Thierry Vaira
BTS IRIS Avignon
tvaira@free.fr?v0.1Sommaire
1Classes et objets
2L"héritage
3Polymorphisme
4Classe abstraite
5Transtypage
tv (BTS IRIS Avignon)Cours C/C++tvaira@free.fr?v0.1 2 / 37Rappels
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 / 37Rappels
Classifier
Regrouper des objets suivants des critères de ressemblance s"appelleclasser(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"unautre 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 / 37Rappels
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 / 37L"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 / 37L"héritage
Personne
est la classe parente ou mère deEtudiant
en anglais superclass classPersonne {
private :stringnom; public :stringgetNom()const{returnnom; }Etudiant
est la classe fille ou dérivée dePersonne
Etudiant
hérite ou descend dePersonne
classEtudiant :
publicPersonne {
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:" classPersonne
has no member named getINE tv (BTS IRIS Avignon)Cours C/C++tvaira@free.fr?v0.1 8 / 37L"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 / 37L"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 / 37L"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écessitel"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 / 37L"héritage
Principes (2/2)
Classe
de base classPersonne {
private :stringnom; public stringgetNom()const; voidafficher()const{ cout << nom << endl; }Classe
dérivée classEtudiant :
publicPersonne {
Cours Langage C++ : Héritage et polymorphisme
Programmation Orienté Objet
Thierry Vaira
BTS IRIS Avignon
tvaira@free.fr?v0.1Sommaire
1Classes et objets
2L"héritage
3Polymorphisme
4Classe abstraite
5Transtypage
tv (BTS IRIS Avignon)Cours C/C++tvaira@free.fr?v0.1 2 / 37Rappels
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 / 37Rappels
Classifier
Regrouper des objets suivants des critères de ressemblance s"appelleclasser(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"unautre 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 / 37Rappels
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 / 37L"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 / 37L"héritage
Personne
est la classe parente ou mère deEtudiant
en anglais superclass classPersonne {
private :stringnom; public :stringgetNom()const{returnnom; }Etudiant
est la classe fille ou dérivée dePersonne
Etudiant
hérite ou descend dePersonne
classEtudiant :
publicPersonne {
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:" classPersonne
has no member named getINE tv (BTS IRIS Avignon)Cours C/C++tvaira@free.fr?v0.1 8 / 37L"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 / 37L"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 / 37L"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écessitel"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 / 37L"héritage
Principes (2/2)
Classe
de base classPersonne {
private :stringnom; public stringgetNom()const; voidafficher()const{ cout << nom << endl; }Classe
dérivée classEtudiant :
publicPersonne {
- classe abstraite sans méthode abstraite
- classe abstraite définition
- classe abstraite definition
- classe abstraite exemple
- classe abstraite python