[PDF] Cours_Python_SRI_advanced - IRIT









[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


213910[PDF] Cours_Python_SRI_advanced - IRIT

Cours_Python_SRI_advanced

September 25, 2020

1 Concepts avancés en python

Nous allons maintenant voir quelques facilités fournies par le langage python intr ospectiondes objets itérateurs générateurs gestion des classes et objets : classes abstraites, attributs/méthodes de classes décorateurs héritage multiple

1.1 Introspection

En python on peut avoir accès à certaines définitions internes des objets que l"on manipule.

???????1

1.2 Itérateurs

On a vu que l"on pouvait itérer directement sur des contenants comme des listes Supposons que l"on définisse un objet qui contient lui aussi un ensemble de valeurs quelconque 2 mais on voudrait directement itérer sur l"objet, qui est une collection de membres le seul champ sur lequel on veut pouvoir itérer??????? ? ? ?????? 3 Mais comment est défini l"itérateur sur la liste ? Il suffit que l"objet ait une méthode _next_(), qui est déjà défini sur les listes.

_next_() doit soulever une exception StopIteration quand il est censé s"arrêter (pas obligatoire...).

On peut le définir soi-même sur un objet:

4

2 Générateurs

un générateur est un moyen plus simple de définir des itérateurs.

le mot clef "yield" dans une fonction suffit à la définir la fonction comme générateur??????? ??????? ????

Un générateur permet de générer au fur et à mesure des besoins des valeurs à énumérer, sans tout

stocker explicitement.

La syntaxe cache en fait les choses suivantes:

la définition de l"initialisation de l"itérateur la définition de ce qu"il r envoieà chaque étape (next) l"exception quand on sort de ce qu"il doit énumér er ? 5 En fait, natural fait la même chose que la fonction range On peut définir un parcours d"un conteneur "à l"avance" ?6 7 ?8 A quoi ça sert ? à contrôler plus finement ce qui se passe

Exercice:

Analyse d"ADN

codon = 3 "lettr es,fin seulement {T AA,T AG,TGA}; début TTG A TGGTG 'code génétique": acide aminé codé par chaque codon

Faire un générateur qui analyse l"ADN codon par codon, en commençant au premier début valide

et en s"arrêtant à la première fin.

Faire un générateur qui envoie toutes les acides aminés codées sur un brin (bonus: il peut y avoir

plusieurs début/fin)? ??? ????? ?? ????? ????? ? ?? ???? ?????? ????11

2.1 Retour sur les définitions de classes

attributs de classes classes abstraite

Mais comment faire pour avoir une fonction partagée par toutes les instances sans l"instance elle-

même ? Impossible comme les attributs car le premier argument est toujours l"objet créé (self)

-> On a besoin d"autre chose (plus tard) 12

3 Classes Abstraites

Rappel: une classe abstraite est une classe qui définit une API susceptible de recevoir plusieurs

implémentations différentes (dans des sous-classes), et qui laisse donc certaines méthodes non

implémentées. En Java, on parle d""Interfaces". 13

Un inconvénient de cette méthode est qu"il n"y a aucun contrôle que les sous-classes définissent

14

3.1 Décorateurs

On a vu que l"on pouvait facilement définir des fonctions avec des fonctions en arguments ou même en résultat. Les fonctions sont des objets comme les autres (ou presque). Python fournit de plus une syntaxe spéciale pour faciliter les transformations de fonctions: les décorateurs.

Ce mécanisme va permettre de traiter les problèmes mentionnés auparavant sur la définition des

objets: méthode statique, méthode de classe, attributs protégés pratiques

Exemple: faisons une fonction qui aide à déclarer des fonctions "obsolètes" (en donnant un aver-

Inconvénient: ne marche que si la fonction a un seul argument. 15

Python fournit en fait une syntaxe plus pratique

Avantages des décorateurs : - plus concis -> plus clair ! - ne sépare pas la définition de la fonction

de ses modifications - permet de les empiler de façon lisible - autorise les arguments -> un outil d"abstraction très puissant 16 Trois décorateurs utiles sont prédéfinis: @pr operty:définit un attribut avec des accès/modifications contrôlées. @staticmethod: méthode d"une class partagée par toutes les instances @classmethod méthode de classe -> utiles pour héritage, permet de définir des méthodes statiques sans mettre le nom de classe explicitement et donc peut être repris par les sous- classes telle quelle Et un autre du module abc permet de définir des méthodes de classes abstraites @abc.abstractmethod

3.1.1 Attributs protégés

et si l"on voulait pr otégerdes attributs gar derune syntaxe simple pour l"accès et la modification ? réponse: le décorateur @property ???? 17 18

3.1.2 Méthode statique:

methode d"une classe qui ne dépend pas d"une instance si on déclar enormalement, on a une copie de la fonction à chaque instance Exemple: supposonsqu"onredéfinisseuneclassecomplexe, etqu"onveutuneméthodequidonne les racines enièmes de 1, i.e. En fait l"instance est inutile ici, on voudrait juste avoir les arguments n et k; On définit alors la méthode comme "statique" pour ne pas avoir besoin d"instance 19 Exercice: faire une méthode pour créer un complexe à partir d"une forme polaire (q, r)

3.1.3 Méthodes de classe

Cours_Python_SRI_advanced

September 25, 2020

1 Concepts avancés en python

Nous allons maintenant voir quelques facilités fournies par le langage python intr ospectiondes objets itérateurs générateurs gestion des classes et objets : classes abstraites, attributs/méthodes de classes décorateurs héritage multiple

1.1 Introspection

En python on peut avoir accès à certaines définitions internes des objets que l"on manipule.

???????1

1.2 Itérateurs

On a vu que l"on pouvait itérer directement sur des contenants comme des listes Supposons que l"on définisse un objet qui contient lui aussi un ensemble de valeurs quelconque 2 mais on voudrait directement itérer sur l"objet, qui est une collection de membres le seul champ sur lequel on veut pouvoir itérer??????? ? ? ?????? 3 Mais comment est défini l"itérateur sur la liste ? Il suffit que l"objet ait une méthode _next_(), qui est déjà défini sur les listes.

_next_() doit soulever une exception StopIteration quand il est censé s"arrêter (pas obligatoire...).

On peut le définir soi-même sur un objet:

4

2 Générateurs

un générateur est un moyen plus simple de définir des itérateurs.

le mot clef "yield" dans une fonction suffit à la définir la fonction comme générateur??????? ??????? ????

Un générateur permet de générer au fur et à mesure des besoins des valeurs à énumérer, sans tout

stocker explicitement.

La syntaxe cache en fait les choses suivantes:

la définition de l"initialisation de l"itérateur la définition de ce qu"il r envoieà chaque étape (next) l"exception quand on sort de ce qu"il doit énumér er ? 5 En fait, natural fait la même chose que la fonction range On peut définir un parcours d"un conteneur "à l"avance" ?6 7 ?8 A quoi ça sert ? à contrôler plus finement ce qui se passe

Exercice:

Analyse d"ADN

codon = 3 "lettr es,fin seulement {T AA,T AG,TGA}; début TTG A TGGTG 'code génétique": acide aminé codé par chaque codon

Faire un générateur qui analyse l"ADN codon par codon, en commençant au premier début valide

et en s"arrêtant à la première fin.

Faire un générateur qui envoie toutes les acides aminés codées sur un brin (bonus: il peut y avoir

plusieurs début/fin)? ??? ????? ?? ????? ????? ? ?? ???? ?????? ????11

2.1 Retour sur les définitions de classes

attributs de classes classes abstraite

Mais comment faire pour avoir une fonction partagée par toutes les instances sans l"instance elle-

même ? Impossible comme les attributs car le premier argument est toujours l"objet créé (self)

-> On a besoin d"autre chose (plus tard) 12

3 Classes Abstraites

Rappel: une classe abstraite est une classe qui définit une API susceptible de recevoir plusieurs

implémentations différentes (dans des sous-classes), et qui laisse donc certaines méthodes non

implémentées. En Java, on parle d""Interfaces". 13

Un inconvénient de cette méthode est qu"il n"y a aucun contrôle que les sous-classes définissent

14

3.1 Décorateurs

On a vu que l"on pouvait facilement définir des fonctions avec des fonctions en arguments ou même en résultat. Les fonctions sont des objets comme les autres (ou presque). Python fournit de plus une syntaxe spéciale pour faciliter les transformations de fonctions: les décorateurs.

Ce mécanisme va permettre de traiter les problèmes mentionnés auparavant sur la définition des

objets: méthode statique, méthode de classe, attributs protégés pratiques

Exemple: faisons une fonction qui aide à déclarer des fonctions "obsolètes" (en donnant un aver-

Inconvénient: ne marche que si la fonction a un seul argument. 15

Python fournit en fait une syntaxe plus pratique

Avantages des décorateurs : - plus concis -> plus clair ! - ne sépare pas la définition de la fonction

de ses modifications - permet de les empiler de façon lisible - autorise les arguments -> un outil d"abstraction très puissant 16 Trois décorateurs utiles sont prédéfinis: @pr operty:définit un attribut avec des accès/modifications contrôlées. @staticmethod: méthode d"une class partagée par toutes les instances @classmethod méthode de classe -> utiles pour héritage, permet de définir des méthodes statiques sans mettre le nom de classe explicitement et donc peut être repris par les sous- classes telle quelle Et un autre du module abc permet de définir des méthodes de classes abstraites @abc.abstractmethod

3.1.1 Attributs protégés

et si l"on voulait pr otégerdes attributs gar derune syntaxe simple pour l"accès et la modification ? réponse: le décorateur @property ???? 17 18

3.1.2 Méthode statique:

methode d"une classe qui ne dépend pas d"une instance si on déclar enormalement, on a une copie de la fonction à chaque instance Exemple: supposonsqu"onredéfinisseuneclassecomplexe, etqu"onveutuneméthodequidonne les racines enièmes de 1, i.e. En fait l"instance est inutile ici, on voudrait juste avoir les arguments n et k; On définit alors la méthode comme "statique" pour ne pas avoir besoin d"instance 19 Exercice: faire une méthode pour créer un complexe à partir d"une forme polaire (q, r)

3.1.3 Méthodes de classe


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