Présentation python : Épisode 4 ● Les objets : héritage ● Introduction à l'héritage ● Un exemple illustrant l'héritage ● Détails sur l'appel de méthode.

Slides:



Advertisements
Présentations similaires
Présentation python : Épisode 4 ● Les objets : héritage ● Introduction à l'héritage ● Un exemple illustrant l'héritage ● Détails sur l'appel de méthode.
Advertisements

Les ORMs ● Faire coexister le monde relationnel et objet.

1 Programmation Orientée Objet ● Qu'est-ce qu'un objet ● Collaboration des objets ● Les classes ● Relations entre les classes – “Utilise”, “Contient”,
Les objectifs de connaissance : Les objectifs de savoir-faire : - Connaître les règles de nomenclature des composés organiques (alcanes, alcools, aldéhydes,
Présentation python : Épisode 3 ● Comment programmer comme un gentilhomme ? ● Le style de code ou comment bien présenter ● Les test unitaires ou comment.
DIAGRAMME DE DEPLOIEMENT Exposé de: MBALLA MEKONGO Michèle MBOUNA FEUZE William SIEYADJEU Alex Lionel CHOPGWE Leonard NDUMATE Landry TIDJON Lionel.
MINISTERE DE L’ENSEIGNEMENT SUPERIEUR ET DE LA RECHERCHE SCIENTIFIQUE Université d’Adrar Diagramme d’états-transitions Présenté par Sbai Omar Benothman.
LE SCHEMA CINEMATIQUE. LE SCHÉMA CINÉMATIQUE Introduction : Le schéma cinématique, à quoi ça sert ? Par définition, un mécanisme est composé de plusieurs.
• A quoi peut me faire penser cette image de Ronaldo?
Présentation python : Épisode 2
Les commandes externes
Corrélation et causalité
Je fabrique mon stabile
Coloration de graphe, backtracking, branch and bound
Ecriture collaborative d’une dissertation en classe
A retenir, car vous allez l’utiliser toute l’année :
Détection des erreurs.
Les fondamentaux de la Programmation Orientée Objet
Présentation python : Épisode 3
JAVA et POO : Notion d'héritage
Javadoc et débogueur Semaine 03 Version A16.
Bases de programmation en Python
Principes de programmation (suite)
Comment construire un schéma de scénario ou synopsis ? Les 6 étapes
Polymorphisme : règles
Réalisation d'agents de surveillance Zephir
Master Réseaux et Systèmes Distribués (RSD) Algorithmique des systèmes
Technologies d’intelligence d’affaires
Comment bien communiquer avec un diaporama
Python for beginners Qu'est ce que Python
Plan Introduction Parcours de Graphe Optimisation et Graphes
Windev.
Présentation des EJB Enterprise Java Beans.
Notion De Gestion De Bases De Données
1.2 dénombrement cours 2.
Modélisation avec UML 2.0 Partie II Diagramme de classes.
Chapter 12: Structures de données
Présentation python : Épisode 3
Comment faire une recherche info-documentaire ?
Programmation Orientée Objet
Programmation Android Bases De Données, SQL-lite
Deuxième partie LE DOSSIER TECHNIQUE DU MARINGOUIN.
Formation sur les bases de données relationnelles.
Développement d’applications interactives
Diagrammes UML 420-KE2-LG.
Programmation Android Première application Android
Analyse comparative des programmes en éducation musicale
Bonjour, Tu trouveras une image plus loin…
Bonjour, Tu trouveras une image plus loin…
La masse volumique.
Présentation des outils de recherche d’informations scientifiques
Bilan de projet pour [Nom du projet]
Windows 7 NTFS.
Présentation 9 : Calcul de précision des estimateurs complexes
Bienvenue ! Année scolaire [Insérez l'année] Nom de l'école
LE SCHEMA CINEMATIQUE.
Bienvenue ! Année scolaire [Insérez l'année] Nom de l'école
Reconnaissance de formes: lettres/chiffres
Logiciel de présentation
PRO1026 Programmation et enseignement
Bonjour, Tu trouveras une image plus loin…
INTERFACE ET POLYMORPHISME
Design, innovation et créativité
Retour sur les interfaces
Réflexion sur l’apprentissage
<Nom de la colonie>
Principales stratégies de compréhension en lecture
<Nom de la colonie>
Séquence 1:Analyse du système d’information comptable
Transcription de la présentation:

Présentation python : Épisode 4 ● Les objets : héritage ● Introduction à l'héritage ● Un exemple illustrant l'héritage ● Détails sur l'appel de méthode ● Les différentes manières de structurer les objets ● Étienne Loks et David Mentré - 7 avril 2008

Rappel sur les objets ● Une classe contient méthodes et attributs ● C'est un « moule » pour un objet ● import random class Dice: ”””Un dé à plusieurs faces””” def __init__(self, nombre_faces): self.nombre_faces = nombre_faces def rouler(self): ”””Faire rouler le dé””” return random.randint(1, self.nombre_faces) >>> de_6_face = Dice(6) >>> print de_6_face.rouler() 4 ● Permet d'encapsuler au plus près méthodes et données

Héritage ● Une classe peut « hériter » d'une autre classe ● de ses attributs et de ses méthodes ● Elle en profite pour ajouter ses attributs et méthodes ● class Point: def __init__(self, x, y): self.x = x self.y = y def affiche(self): print "x:%d y:%d" % (self.x, self.y) class PointColore(Point): def colorise(self, couleur): self.couleur = couleur

Héritage : exemple ● Exemple de la classe mère ● >>> p = Point(3,4) >>> p.affiche() x:3 y:4 ● Exemple de la classe fille : même comportement ! ● >>> pc = PointColore(3,4) >>> pc.affiche() x:3 y:4 ● Mais la classe fille a aussi ses propres méthodes ! ● >>> pc.colorise("rouge") >>> pc.couleur 'rouge'

Redéfinition ● Les méthodes de la classe mère peuvent être redéfinies ● class PointColore(Point): def __init__(self, x, y, couleur): self.x = x self.y = y self.couleur = couleur def affiche(self): print "x:%d y:%d couleur:%s" % (self.x, self.y, self.couleur) def colorise(self, couleur): self.couleur = couleur ● >>> pc = PointColore(3,4,'rouge') >>> pc.affiche() x:3 y:4 couleur:rouge

Quel utilité ?!? ● Les classes en haut de la hiérarchie (les grands- mères) définissent des interfaces ● Que tout le monde dans la hiérarchie respect ● Que tout le monde (dans ou hors la hiérarchie) peut utiliser ● => Avantage : quand on change quelque chose, on ne doit pas tout boulverser

Exemple d'asbtraction ● class Interface: def ecrire(self, chaine): assert False class Console(Interface): def ecrire(self, chaine): print chaine class Fichier(Interface): def __init__(self, nom_fichier): self.f = open(nom_fichier, 'w') def ecrire(self, chaine): self.f.write(chaine) ● >>> c = Console() >>> c.ecrire("toto") toto ● >>> f = Fichier('/tmp/toto') >>> f.ecrire("toto") ● Même règle d'appel !

Appel de méthode en détail ● Quand on appelle une méthode toto() ● on la recherche dans la classe de l'objet ● si on la trouve pas, dans les classes parentes de la classe de l'objet, en remontant la hiérarchie ● si vraiment on ne la trouve pas... ben on renvoie une erreur

Appel de méthode : exemple ● class Toto(): def toto(self): print "methode toto de la classe Toto" def titi(self): print "methode titi de la classe Toto" ● class TotoFils(Toto): def titi(self): print "methode titi de la classe TotoFils" ● >>> t = TotoFils() >>> t.titi() methode titi de la classe TotoFils >>> t.toto() methode toto de la classe Toto >>> t.tata() Traceback (most recent call last): File " ", line 1, in AttributeError: TotoFils instance has no attribute 'tata'

Héritage multiple ● On peut avoir plusieurs parents : ● class Fille(A, B, C, D): [...] ● La recherche de méthode s'effectue en profondeur d'abord ● D'abord les méthodes de la classe Fille ● Puis celle de A (et ses parents) ● Puis celle de B (et ses parents) ●....

Programmer « objet » ● Repérer les classes d'objets qui feront le programme ● s'inspirer des objets réels (ex. un compte dans un programme de compta) ● Regrouper ces classes en hiérarchie ou les faire s'utiliser les unes les autres par référence ● Seule l'expérience peut dire comment faire ● => Design Patterns (encore une autre (longue) histoire) !

Références entre objets ● Un objet peut contenir dans un attribut une référence à un autre objet ● class A: def appelle(self): print "Methode appelle() sur un objet de classe A" class B: def __init__(self): self.a = A() def appelle_a(self): self.a.appelle() ● >>> b = B() # on crée un objet de la classe B >>> b.appelle_a() Methode appelle() sur un objet de classe A ● Souvent la structure la plus commune !

Conclusion ● Essentiel des objets ● classes : attributs et méthodes locaux à un objet ● héritage : pouvoir redéfinir des méthodes ● Programmation objet = comment bien utiliser les objets ● Pour commencer ● Utilisez des objets déjà existants (par ex. interface graphique)

Pour aller plus loin ● Références bibliographiques (techniques) ● Design Patterns (Gamma et al.) ● Comment structurer les objets entre eux ● Object-Oriented Software Construction (Bertrand Meyer) ● Explique de manière propre la programmation objet pour faire du bon logiciel