PROGRAMMATION ORIENTÉE OBJET (POO) « Apparue dans les années 1960, la programma
PROGRAMMATION ORIENTÉE OBJET (POO) « Apparue dans les années 1960, la programmation orientée objet (POO) est un paradigme de programmation ; c’est-à-dire une façon de concevoir un programme informatique, reposant sur l’idée qu’un programme est composé d’objets interagissant les uns avec les autres. En définitive, un objet est une donnée. Une donnée constituée de diverses propriétés, et pouvant être manipulée par différentes opérations. » 1 A. TERMINOLOGIE ET SYNTAXE : Classes, instances de classe et méthodes de classe Un exemple simple : Médor est un chien. Pendant une journée typique, il fait diverses actions : il mange, il court, il dort, etc. I. LA SYNTAXE En POO on pourra écrire cela : • Médor = Chien() • Médor.mange() • Médor.court() • Médor.dort() De plus, Médor a diverses qualités ou attributs ou propriétés (taille, couleur de poil,etc). On peut exprimer ceci comme suit : • Médor.taille = "grand" • Médor. couleurDePoil = "noir&blanc" II. TERMINOLOGIE En POO on utilise les termes suivants : classe, instance de classe (ou objet), attributs et méthodes de classe. • Chien est une classe d'objets • Médor est une instance de classe (ou objet) de la classe « Chien » • mange(), court() et dort() sont des méthodes de la classe Chien ; les méthodes sont des fonctions qui appartiennent à une classe. • taille et couleurDePoil sont des attributs (ou propriétés) d’une instance donnée La relation entre un attribut ou une méthode et l’objet est indiquée par un point écrit entre les deux. 1 :https://zestedesavoir.com/tutoriels/pdf/1253/la-programmation-orientee-objet-en-python.pdf Classe : description des caractéristiques d'un objet. Elle décrit les variables que comportent tous les objets de la même classe. Instance : tout objet créé à partir de cette classe. La classe est une sorte de "moule" pour les instances d'objets. Méthodes : ce sont des fonctions internes à une classe agissant sur les instances de la classe. B. PROGRAMMES ORIENTÉS OBJET I. PREMIER PROGRAMME EN POO A) LE CODE # nom programme : p_classe_personne # création classe Personne avec deux attributs class Personne: def __init__(self,n,a): self.nom = n self.age = a # création d'une instance dans la classe Personne p1 = Personne("Albert",27) print("nom et âge de p1 : ", p1.nom , " " , p1.age) # création d'un nouvel objet de type Personne p2 = Personne("Evelyne",47) print("nom et âge de p2 : " ,p2.nom, " " , p2.age) # modifier les attributs de objet p1 p1.age = 28 p1.nom =" Einstein" print("nom et âge modifiés de p1 : " , p1.nom, " " ,p1.age) B) QUE FAIT CE PROGRAMME ? Il crée une classe nommée Personne puis : • Il définit pour cette classe deux attributs : nom et age • Il crée une instance de la classe Personne nommée p1 • Il crée un deuxième objet de cette classe nommée p2 • Il modifie les attributs de l'objet p1 II. SYNTAXE PYTHON ET POO A) DÉFINIR UNE CLASSE class Nomclasse : Par convention le nom d’une classe commence toujours par une majuscule, mais ce n'est pas une obligation. Ne pas oublier les « : » pour marquer le début de bloc Dans le même bloc il faut définir les attributs et méthodes de la classe. B) DÉFINIR LES ATTRIBUTS DE CLASSE def __init__(self,param1, param2, ...): self.variable1=param1 self.variable2=param2 ... Le mot "self" est obligatoire. La fonction –init--() est une fonction spéciale qui porte le nom de constructeur qui sert à initialiser les attributs d’une classe. Ce constructeur existe toujours en programmation orientée objet. Cette méthode spéciale exécutée lors de l'instanciation de la classe permet de créer l'objet en créant les variables que contient l'objet, en définissant leur valeur initiale ou en effectuant certaines opérations. De manière analogue, il existe le destructeur appelé lors de la destruction de l'objet. C) DÉFINIR UNE MÉTHODE DE CLASSE def méthode(self): return expression Il faut au minimum le paramètre "self" (mais il peut y en avoir d’autres). Le mot "self" sera expliqué ci- dessous. expression est construite à partir des attributs. D) CRÉER UNE INSTANCE DE CLASSE nomObjet = NomClasse(arguments) E) MODIFIER LES ATTRIBUTS D'UN OBJET nomObjet.attribut = nouvelle valeur F) APPLIQUER UNE MÉTHODE À UN OBJET nomObjet.méthode() III. LE MOT SELF Une des particularités des méthodes est que l’objet appelant est passé comme premier argument de la fonction telle que définie dans la classe. Ainsi, lorsqu’on écrit Médor.mange() par exemple, l’objet Médor est passé de manière implicite à mange(). Aussi une méthode possède toujours à minima le paramètre self et lorsqu'on appelle la méthode, il n'y a aucun argument à saisir. Par exemple, si la fonction --init--() comprend trois paramètres (dont self), il faut alors passer deux arguments pour créer une nouvelle instance de classe. IV. CLASSES ET PRINCIPE D’ENCAPSULATION Le principe d'encapsulation est un des concepts clés de la programmation objet. Les classes permettent de mettre en place ce qu'on appelle l'encapsulation du code c'est-à-dire le compartimentage des variables et des fonctions. En effet chaque objet créé à partir d’une classe possède ses attributs et méthodes qui ne sont pas accessibles à l'extérieur de l'objet. Cette technique permet de regrouper des données au sein d'une classe et de pouvoir les lire et les manipuler par le biais de méthodes qui forment une interface pour les éléments environnant l'objet. De ce fait, les variables et les méthodes contenues au sein d'une classe peuvent être placées dans trois niveaux de visibilité en fonction de la portée souhaitée : Public La variable ou fonction est accessible à tous. Protégé Les attributs sont accessibles uniquement à la classe et les classes filles. Privé Les attributs ne sont visibles que par la classe elle-même. Pour rendre un attribut ou une méthode privé en python, il faut faire précéder le nom de l’attribut d’un caractère « _ ». Mais attention ceci n’est qu’une convention...Python ne gère pas les attributs ou méthodes privées ! Pour respecter le principe fondamental de l'encapsulation, toutes les variables doivent être privées et ne sont accessibles qu'à travers des méthodes conçues pour les modifier qu'après les avoir vérifiées ou les retourner formatées. C. HÉRITAGE En POO, on dit qu’un objet « hérite » des méthodes de sa classe ; cela signifie qu'une instance de classe a accès aux méthodes de cette classe. Ainsi une instance de la classe Chien a accès aux méthodes mange(), court() et dort(). Une classe peut « hériter » d'une autre classe : une classe dite "fille" hérite de toutes les variables et fonctions de la classe parent ou classe mère (et notamment de sa fonction __init_()). L'intérêt de cette opération est de partager des variables et des méthodes communes à différentes classes. La classe fille peut alors ajouter des éléments pour compléter l'héritage de la classe mère ou peut écraser certaines méthodes ou variables avec son contenu propre. On parle d'héritage simple dans le cas où une classe fille a recours à une seule classe mère. Par extension, on parle d'héritage multiple si une classe fille hérite des attributs de plusieurs classes mères. L'héritage a plusieurs propriétés : Transitivité Si une classe B hérite de la classe A, et que C hérite de B, alors C hérite de A. Non réflexif Une classe ne peut hériter d'elle-même. Non symétrique La classe fille hérite de la classe mère mais la classe mère n'hérite pas de la classe fille. Sans cycle Il n'est pas possible que la classe B hérite de la classe A, que la classe C hérite de la classe B et que la classe A hérite de la classe C. I. EXEMPLE DE PROGRAMME AVEC HÉRITAGE A) LE CODE # nom programme : heritage.py #création d'une classe Personne avec deux attributs class Personne: def __init__(self,nom,age): self.nom = nom self.age=age # La classe Etudiant hérite de la classe mère Personne class Etudiant(Personne): # définition des attributs def __init__(self, nom, age, filiere): # héritage des attributs depuis la classe mère Personne Personne.__init__(self, nom, age) # ajout d'un nouvel attribut filiere à la classe Etudiant self.filiere = filiere etudiant1 = Etudiant("Albert",27,"math") print("nom, âge, filière : " ,etudiant1.nom, " ", etudiant1.age, " " ,etudiant1.filiere) #créer d'une nouvelle instance de la classe Etudiant etudiant2 =Etudiant("Isabelle",21,"informatique") print("nom, âge, filière : " ,etudiant2.nom, " ", etudiant2.age, " " ,etudiant2.filiere) B) QUE FAIT CE PROGRAMME ? Il crée une classe « Personne » avec deux attributs : nom et age Il crée la classe « Etudiant » à partir de « Personne » : Cette classe récupère les attributs de la classe mère et on ajoute un troisième attribut « filiere ». Création d'une première instance de Etudiant : etudiant1 Création d'un deuxième objet Etudiant : etudiant2 II. REMARQUE SYNTAXIQUE Les paramètres de la fonction –init--() peuvent être identiques aux noms des variables (attributs) définis par cette fonction. Exemple : def __init__(self,nom,age): self.nom = nom self.age=age class Etudiant(Personne): cette instruction signifie que la classe « Etudiant » hérite de la classe « Personne ». Personne.__init__(self, nom, age) : instruction pour récupérer les attributs nom et age de Personne self.filiere = filiere : instruction pour créer un troisième attribut. III. DEUXIÈME PROGRAMME A) LE CODE # nom uploads/s3/ python-synthese-programationobjet.pdf
Documents similaires










-
31
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Jan 09, 2021
- Catégorie Creative Arts / Ar...
- Langue French
- Taille du fichier 0.4459MB