Introduction à la POO - cours 1h

4,641 views
4,500 views

Published on

Cours d'une heure sur la programmation orientée, orienté sur l'héritage. Tentative de présenter les choses un peu différemment d'un cours académique standard.

Published in: Education, Technology
1 Comment
3 Likes
Statistics
Notes
  • Dans le transparent 'Polymorphisme' (59), la signature en C++ ne prend pas en compte le type de renvoi mais uniquement les types des arguments d'une fonction.

    void foo() {}
    double foo(int) {}

    donne comme signature (pour le compilateur gcc):

    _Z3fooi
    _Z3foov

    Ceci a été corrigé en objectif C, mais à vrai dire je pense que tu ne visais pas de langage en particulier si ce n'est les langages objets en général.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total views
4,641
On SlideShare
0
From Embeds
0
Number of Embeds
8
Actions
Shares
0
Downloads
165
Comments
1
Likes
3
Embeds 0
No embeds

No notes for slide

Introduction à la POO - cours 1h

  1. 1. POO, h´ritage e Johann Dr´o e Pr´-requis e Programmation Fonctionnelle Structures Programmation orient´e objet : l’h´ritage e e POO Historique Objet Classe H´ritage e Johann Dr´o e D´finition e VS composition Constructeurs Abstraction Concepts 28 septembre 2007 avanc´s e Membres statiques Polymorphisme Exceptions M´ta-classes e Ramasse-miettes Fin
  2. 2. POO, h´ritage e Johann Dr´o e Pr´-requis e Programmation Fonctionnelle Structures POO Historique Objet Classe H´ritage e D´finition e VS composition Constructeurs Abstraction Concepts avanc´s e Membres statiques Polymorphisme Exceptions M´ta-classes e Ramasse-miettes Fin
  3. 3. Plan POO, h´ritage e 1 Programmation Johann Dr´o e Programmation fonctionnelle Structures Pr´-requis e 2 Programmation orient´e objet e Programmation Fonctionnelle Historique Structures Objet POO Historique Classe Objet Classe 3 H´ritage e H´ritage e D´finition e D´finition e VS composition VS composition Constructeurs Abstraction Constructeurs & destructeurs Concepts avanc´s e Abstraction Membres statiques 4 Concepts avanc´s e Polymorphisme Exceptions Membres statiques M´ta-classes e Ramasse-miettes Polymorphisme Fin Exceptions
  4. 4. Pr´-requis e POO, h´ritage e Johann Dr´o e Pr´-requis e Prog. imp´rative e Programmation Fonctionnelle Variables Structures POO Branchements conditionnels Historique Objet Boucles Classe H´ritage e M´moire (pointeurs) e D´finition e VS composition Constructeurs Abstraction Introduction Concepts Cours pr´liminaire e avanc´s e Membres statiques approfondissements. . . Polymorphisme Exceptions M´ta-classes e Ramasse-miettes Fin
  5. 5. Pr´-requis e POO, h´ritage e Johann Dr´o e Pr´-requis e Prog. imp´rative e Programmation Fonctionnelle Variables Structures POO Branchements conditionnels Historique Objet Boucles Classe H´ritage e M´moire (pointeurs) e D´finition e VS composition Constructeurs Abstraction Introduction Concepts Cours pr´liminaire e avanc´s e Membres statiques approfondissements. . . Polymorphisme Exceptions M´ta-classes e Ramasse-miettes Fin
  6. 6. Plan POO, h´ritage e 1 Programmation Johann Dr´o e Programmation fonctionnelle Structures Pr´-requis e 2 Programmation orient´e objet e Programmation Fonctionnelle Historique Structures Objet POO Historique Classe Objet Classe 3 H´ritage e H´ritage e D´finition e D´finition e VS composition VS composition Constructeurs Abstraction Constructeurs & destructeurs Concepts avanc´s e Abstraction Membres statiques 4 Concepts avanc´s e Polymorphisme Exceptions Membres statiques M´ta-classes e Ramasse-miettes Polymorphisme Fin Exceptions
  7. 7. Fonctionnelle POO, h´ritage e Fonction math´matique e Johann Dr´o e f (x) = x 2 Pr´-requis e Programmation y = f (x) Fonctionnelle Structures POO En Basic Historique Objet 1 GOTO 4 Classe 2 y=x*x H´ritage e D´finition e 3 GOTO 6 VS composition Constructeurs 4 x=2 Abstraction 5 GOTO 2 Concepts avanc´s e 6 PRINT y Membres statiques Polymorphisme Exceptions En C M´ta-classes e Ramasse-miettes double f( double x ) { return x*x ; } Fin double x = 2.0 ; double y = f( x ) ;
  8. 8. Fonctionnelle POO, h´ritage e Fonction math´matique e Johann Dr´o e f (x) = x 2 Pr´-requis e Programmation y = f (x) Fonctionnelle Structures POO En Basic Historique Objet 1 GOTO 4 Classe 2 y=x*x H´ritage e D´finition e 3 GOTO 6 VS composition Constructeurs 4 x=2 Abstraction 5 GOTO 2 Concepts avanc´s e 6 PRINT y Membres statiques Polymorphisme Exceptions En C M´ta-classes e Ramasse-miettes double f( double x ) { return x*x ; } Fin double x = 2.0 ; double y = f( x ) ;
  9. 9. Fonctionnelle POO, h´ritage e Fonction math´matique e Johann Dr´o e f (x) = x 2 Pr´-requis e Programmation y = f (x) Fonctionnelle Structures POO En Basic Historique Objet 1 GOTO 4 Classe 2 y=x*x H´ritage e D´finition e 3 GOTO 6 VS composition Constructeurs 4 x=2 Abstraction 5 GOTO 2 Concepts avanc´s e 6 PRINT y Membres statiques Polymorphisme Exceptions En C M´ta-classes e Ramasse-miettes double f( double x ) { return x*x ; } Fin double x = 2.0 ; double y = f( x ) ;
  10. 10. Fonctions POO, h´ritage e Johann Dr´o e Pr´-requis e Programmation Int´rˆt ee Fonctionnelle Structures structure de donn´es + fonctions e POO Historique biblioth`ques e Objet Classe H´ritage e D´finition e Cons´quences amusantes e VS composition Constructeurs y = f( g( x ) ) ; Abstraction Concepts double f( double x ) { return f(x) ; } avanc´s e Membres statiques Polymorphisme Exceptions M´ta-classes e Ramasse-miettes Fin
  11. 11. Fonctions POO, h´ritage e Johann Dr´o e Pr´-requis e Programmation Int´rˆt ee Fonctionnelle Structures structure de donn´es + fonctions e POO Historique biblioth`ques e Objet Classe H´ritage e D´finition e Cons´quences amusantes e VS composition Constructeurs y = f( g( x ) ) ; Abstraction Concepts double f( double x ) { return f(x) ; } avanc´s e Membres statiques Polymorphisme Exceptions M´ta-classes e Ramasse-miettes Fin
  12. 12. Port´es des variables e POO, h´ritage e Johann Dr´o e Pr´-requis e Programmation Port´es e Fonctionnelle Structures double a ; POO Historique double f( double b ) { Objet Classe printf(a) ; H´ritage e printf(b) ; D´finition e VS composition return b+1 ; Constructeurs Abstraction } Concepts printf(b) ; avanc´s e Membres statiques Polymorphisme Exceptions M´ta-classes e Ramasse-miettes Fin
  13. 13. Structures POO, h´ritage e Probl`me e Johann Dr´o e a,b = f(x,y,z) ; Pr´-requis e Programmation D´finition e Fonctionnelle Structures struct Type{ POO Historique int a ; Objet Classe char b ; H´ritage e }; D´finition e VS composition Constructeurs Abstraction Utilisation Concepts avanc´s e Type f( int x, int y, int z ) { Membres statiques Type t ; t.a=x*y ; t.b=x+y ; Polymorphisme Exceptions return t ; M´ta-classes e Ramasse-miettes } Fin Type v = f(x,y,z) ;
  14. 14. Structures POO, h´ritage e Probl`me e Johann Dr´o e a,b = f(x,y,z) ; Pr´-requis e Programmation D´finition e Fonctionnelle Structures struct Type{ POO Historique int a ; Objet Classe char b ; H´ritage e }; D´finition e VS composition Constructeurs Abstraction Utilisation Concepts avanc´s e Type f( int x, int y, int z ) { Membres statiques Type t ; t.a=x*y ; t.b=x+y ; Polymorphisme Exceptions return t ; M´ta-classes e Ramasse-miettes } Fin Type v = f(x,y,z) ;
  15. 15. Structures POO, h´ritage e Probl`me e Johann Dr´o e a,b = f(x,y,z) ; Pr´-requis e Programmation D´finition e Fonctionnelle Structures struct Type{ POO Historique int a ; Objet Classe char b ; H´ritage e }; D´finition e VS composition Constructeurs Abstraction Utilisation Concepts avanc´s e Type f( int x, int y, int z ) { Membres statiques Type t ; t.a=x*y ; t.b=x+y ; Polymorphisme Exceptions return t ; M´ta-classes e Ramasse-miettes } Fin Type v = f(x,y,z) ;
  16. 16. Plan POO, h´ritage e 1 Programmation Johann Dr´o e Programmation fonctionnelle Structures Pr´-requis e 2 Programmation orient´e objet e Programmation Fonctionnelle Historique Structures Objet POO Historique Classe Objet Classe 3 H´ritage e H´ritage e D´finition e D´finition e VS composition VS composition Constructeurs Abstraction Constructeurs & destructeurs Concepts avanc´s e Abstraction Membres statiques 4 Concepts avanc´s e Polymorphisme Exceptions Membres statiques M´ta-classes e Ramasse-miettes Polymorphisme Fin Exceptions
  17. 17. Langages POO, h´ritage e 1956 : Fortran Johann Dr´o e 1958 : Lisp Pr´-requis e 1964 : Basic Programmation Fonctionnelle 1966 : Simula Structures POO 1976 : SmallTalk Historique Objet 1983 : C++, Objective C Classe 1986 : Eiffel H´ritage e D´finition e 1990 : Fortran quasi-objet VS composition Constructeurs Abstraction 1991 : Visual Basic, Python Concepts 1993 : Ruby avanc´s e Membres statiques 1994 : Perl objet Polymorphisme Exceptions 1995 : Java M´ta-classes e Ramasse-miettes 2000 : PHP objet Fin 2003 : Fortran objet
  18. 18. Concept de base POO, h´ritage e Johann Dr´o e Pr´-requis e Programmation Fonctionnelle Structures POO Historique Objet Classe H´ritage e D´finition e VS composition Constructeurs Abstraction Concepts avanc´s e Pourquoi ? Membres statiques Polymorphisme repr´sentation directe, intuitive e Exceptions M´ta-classes e r´utilisation de code e Ramasse-miettes Fin d´marrage rapide e
  19. 19. Types de langages POO, h´ritage e Johann Dr´o e Langages objets Pr´-requis e d’acteurs (donn´es locales, filtrage de message) e Programmation de frames (gestion de connaissance, prototype) Fonctionnelle Structures de classes (instances, h´ritage, polymorphisme, . . .) e POO Historique Objet Classe H´ritage e D´finition e VS composition Constructeurs Abstraction Concepts avanc´s e Membres statiques Polymorphisme Exceptions M´ta-classes e Ramasse-miettes Fin
  20. 20. Types de langages POO, h´ritage e Johann Dr´o e Langages objets Pr´-requis e d’acteurs (donn´es locales, filtrage de message) e Programmation de frames (gestion de connaissance, prototype) Fonctionnelle Structures de classes (instances, h´ritage, polymorphisme, . . .) e POO Historique Objet Classe H´ritage e D´finition e VS composition Constructeurs Abstraction Concepts avanc´s e Membres statiques Polymorphisme Exceptions M´ta-classes e Ramasse-miettes Fin
  21. 21. Types de langages POO, h´ritage e Johann Dr´o e Langages objets Pr´-requis e d’acteurs (donn´es locales, filtrage de message) e Programmation de frames (gestion de connaissance, prototype) Fonctionnelle Structures de classes (instances, h´ritage, polymorphisme, . . .) e POO Historique Objet Classe H´ritage e D´finition e VS composition Constructeurs Abstraction Concepts avanc´s e Membres statiques Polymorphisme Exceptions M´ta-classes e Ramasse-miettes Fin
  22. 22. Classes POO, h´ritage e Mantra Johann Dr´o e classe = moule Pr´-requis e d´mouler = instancier e Programmation Fonctionnelle Structures POO Historique Objet Classe H´ritage e D´finition e VS composition Constructeurs Abstraction Concepts avanc´s e Membres statiques Polymorphisme Exceptions M´ta-classes e Ramasse-miettes Fin
  23. 23. Exemple POO, h´ritage e Johann Dr´o e Classe “´tudiant” e Pr´-requis e age Programmation Fonctionnelle Structures sexe POO cheveux Historique Objet Classe ´tat e H´ritage e D´finition e VS composition Objet “´tudiant” e Constructeurs Abstraction age = 20 Concepts avanc´s e sexe = F Membres statiques cheveux = blonds Polymorphisme Exceptions M´ta-classes e ´tat = endormi e Ramasse-miettes Fin
  24. 24. Exemple POO, h´ritage e Johann Dr´o e Classe “´tudiant” e Pr´-requis e age Programmation Fonctionnelle Structures sexe POO cheveux Historique Objet Classe ´tat e H´ritage e D´finition e VS composition Objet “´tudiant” e Constructeurs Abstraction age = 20 Concepts avanc´s e sexe = F Membres statiques cheveux = blonds Polymorphisme Exceptions M´ta-classes e ´tat = endormi e Ramasse-miettes Fin
  25. 25. Vocabulaire POO, h´ritage e Johann Dr´o e Vocabulaire Pr´-requis e instance de classe = objet Programmation Fonctionnelle variable membre d’une classe = attribut Structures fonction membre d’une classe = m´thode e POO Historique Objet Classe H´ritage e D´finition e VS composition Constructeurs Abstraction Concepts avanc´s e Membres statiques Polymorphisme Exceptions M´ta-classes e Encapsulation Ramasse-miettes Fin
  26. 26. Vocabulaire POO, h´ritage e Johann Dr´o e Vocabulaire Pr´-requis e instance de classe = objet Programmation Fonctionnelle variable membre d’une classe = attribut Structures fonction membre d’une classe = m´thode e POO Historique Objet Classe H´ritage e D´finition e VS composition Constructeurs Abstraction Concepts avanc´s e Membres statiques Polymorphisme Exceptions M´ta-classes e Encapsulation Ramasse-miettes Fin
  27. 27. Vocabulaire POO, h´ritage e Johann Dr´o e Vocabulaire Pr´-requis e instance de classe = objet Programmation Fonctionnelle variable membre d’une classe = attribut Structures fonction membre d’une classe = m´thode e POO Historique Objet Classe H´ritage e D´finition e VS composition Constructeurs Abstraction Concepts avanc´s e Membres statiques Polymorphisme Exceptions M´ta-classes e Encapsulation Ramasse-miettes Fin
  28. 28. Plan POO, h´ritage e 1 Programmation Johann Dr´o e Programmation fonctionnelle Structures Pr´-requis e 2 Programmation orient´e objet e Programmation Fonctionnelle Historique Structures Objet POO Historique Classe Objet Classe 3 H´ritage e H´ritage e D´finition e D´finition e VS composition VS composition Constructeurs Abstraction Constructeurs & destructeurs Concepts avanc´s e Abstraction Membres statiques 4 Concepts avanc´s e Polymorphisme Exceptions Membres statiques M´ta-classes e Ramasse-miettes Polymorphisme Fin Exceptions
  29. 29. G´n´ralisation e e POO, h´ritage e Johann Dr´o e Pr´-requis e Programmation Fonctionnelle Structures POO Historique Objet Classe H´ritage e D´finition e VS composition Constructeurs Abstraction Concepts avanc´s e Membres statiques Polymorphisme Exceptions M´ta-classes e Ramasse-miettes Fin
  30. 30. Hierarchie POO, h´ritage e Johann Dr´o e Pr´-requis e Programmation Fonctionnelle Structures POO Historique Objet Classe H´ritage e D´finition e VS composition Constructeurs Abstraction Concepts avanc´s e Membres statiques Polymorphisme Exceptions M´ta-classes e Ramasse-miettes Fin
  31. 31. H´ritage e POO, h´ritage e Johann Dr´o e Pr´-requis e Personne Programmation #age Fonctionnelle #sexe Structures #cheveux POO +opérer() Historique +teinter() Objet Classe H´ritage e D´finition e VS composition Constructeurs Étudiant Enseignant Abstraction #état #tolérance Concepts +endormir() +enseigner() avanc´s e +réveiller() +craquer() Membres statiques Polymorphisme Exceptions M´ta-classes e Ramasse-miettes Fin
  32. 32. H´ritages e POO, h´ritage e Personne Johann Dr´o e Pr´-requis e Programmation Fonctionnelle Employé Étudiant Structures POO Historique Objet Classe Ingénieur Chercheur H´ritage e D´finition e VS composition Constructeurs Abstraction Concepts Doctorant avanc´s e Membres statiques Polymorphisme Exceptions M´ta-classes e Simple Ramasse-miettes Fin Multiple (` ´viter si possible) ae
  33. 33. Exemple POO, h´ritage e Johann Dr´o e Pr´-requis e Java Programmation Fonctionnelle class Personne { Structures void parler() { POO Historique System.out.println (quot;Bonjourquot;) ; Objet Classe } H´ritage e } D´finition e VS composition class Etudiant extends Personne {} Constructeurs Abstraction Concepts avanc´s e Etudiant e = new Etudiant() ; Membres statiques e.parler() ; Polymorphisme Exceptions M´ta-classes e Ramasse-miettes Fin
  34. 34. Composition POO, h´ritage e Johann Dr´o e Gène Plante +séquence +génome Pr´-requis e +transcrire() Programmation Fonctionnelle Structures POO Historique Cry1(A) Objet Classe +résistance OGM H´ritage e D´finition e +cry1(A) VS composition Barstar +barstar Constructeurs +antisens +inhibition Abstraction Concepts avanc´s e Antisens Membres +blocage statiques Polymorphisme Exceptions M´ta-classes e Ramasse-miettes Pr´f´rer l’h´ritage ee e Fin
  35. 35. Composition POO, h´ritage e Johann Dr´o e Gène Plante +séquence +génome Pr´-requis e +transcrire() Programmation Fonctionnelle Structures POO Historique Cry1(A) Objet Classe +résistance OGM H´ritage e D´finition e +cry1(A) VS composition Barstar +barstar Constructeurs +antisens +inhibition Abstraction Concepts avanc´s e Antisens Membres +blocage statiques Polymorphisme Exceptions M´ta-classes e Ramasse-miettes Pr´f´rer l’h´ritage ee e Fin
  36. 36. Constructeur POO, h´ritage e Johann Dr´o e Pr´-requis e Probl`me e Programmation Fonctionnelle Initialiser les attributs ` l’instanciation ? a Structures POO Historique Python Objet Classe e2 = Etudiant(age = 29) H´ritage e D´finition e VS composition Constructeurs Abstraction class Etudiant : Concepts def init ( self, mon age ) : avanc´s e Membres self.age = mon age statiques Polymorphisme Exceptions M´ta-classes e Ramasse-miettes Fin
  37. 37. Constructeur POO, h´ritage e Johann Dr´o e Pr´-requis e Probl`me e Programmation Fonctionnelle Initialiser les attributs ` l’instanciation ? a Structures POO Historique Python Objet Classe e2 = Etudiant(age = 29) H´ritage e D´finition e VS composition Constructeurs Abstraction class Etudiant : Concepts def init ( self, mon age ) : avanc´s e Membres self.age = mon age statiques Polymorphisme Exceptions M´ta-classes e Ramasse-miettes Fin
  38. 38. Constructeur POO, h´ritage e Johann Dr´o e Pr´-requis e Probl`me e Programmation Fonctionnelle Initialiser les attributs ` l’instanciation ? a Structures POO Historique Python Objet Classe e2 = Etudiant(age = 29) H´ritage e D´finition e VS composition Constructeurs Abstraction class Etudiant : Concepts def init ( self, mon age ) : avanc´s e Membres self.age = mon age statiques Polymorphisme Exceptions M´ta-classes e Ramasse-miettes Fin
  39. 39. Destructeur POO, h´ritage e Johann Dr´o e Probl`me e Pr´-requis e Effectuer des op´rations en fin de vie ? e Programmation Fonctionnelle Structures Python POO Historique def f( x ) : Objet Classe e = Etudiant() H´ritage e print ”Hors de port´e” e D´finition e VS composition f(1) Constructeurs Abstraction Concepts avanc´s e class Etudiant : Membres statiques def del ( self ) : Polymorphisme Exceptions self.reveiller() M´ta-classes e Ramasse-miettes print ”Au revoir” Fin
  40. 40. Destructeur POO, h´ritage e Johann Dr´o e Probl`me e Pr´-requis e Effectuer des op´rations en fin de vie ? e Programmation Fonctionnelle Structures Python POO Historique def f( x ) : Objet Classe e = Etudiant() H´ritage e print ”Hors de port´e” e D´finition e VS composition f(1) Constructeurs Abstraction Concepts avanc´s e class Etudiant : Membres statiques def del ( self ) : Polymorphisme Exceptions self.reveiller() M´ta-classes e Ramasse-miettes print ”Au revoir” Fin
  41. 41. Destructeur POO, h´ritage e Johann Dr´o e Probl`me e Pr´-requis e Effectuer des op´rations en fin de vie ? e Programmation Fonctionnelle Structures Python POO Historique def f( x ) : Objet Classe e = Etudiant() H´ritage e print ”Hors de port´e” e D´finition e VS composition f(1) Constructeurs Abstraction Concepts avanc´s e class Etudiant : Membres statiques def del ( self ) : Polymorphisme Exceptions self.reveiller() M´ta-classes e Ramasse-miettes print ”Au revoir” Fin
  42. 42. M´thodes virtuelles e POO, h´ritage e Johann Dr´o e Personne Pr´-requis e m´moire == 10 e Programmation Fonctionnelle apprendre() Structures POO Historique Objet ´ Etudiant Classe H´ritage e m´moire == 1 e D´finition e VS composition apprendre() # cours Constructeurs Abstraction Concepts avanc´s e Enseignant Membres statiques m´moire == 20 e Polymorphisme Exceptions M´ta-classes e apprendre() # formation Ramasse-miettes Fin
  43. 43. M´thodes virtuelles e POO, h´ritage e Johann Dr´o e Personne Pr´-requis e m´moire == 10 e Programmation Fonctionnelle apprendre() Structures POO Historique Objet ´ Etudiant Classe H´ritage e m´moire == 1 e D´finition e VS composition apprendre() # cours Constructeurs Abstraction Concepts avanc´s e Enseignant Membres statiques m´moire == 20 e Polymorphisme Exceptions M´ta-classes e apprendre() # formation Ramasse-miettes Fin
  44. 44. M´thodes virtuelles e POO, h´ritage e Johann Dr´o e Personne Pr´-requis e m´moire == 10 e Programmation Fonctionnelle apprendre() Structures POO Historique Objet ´ Etudiant Classe H´ritage e m´moire == 1 e D´finition e VS composition apprendre() # cours Constructeurs Abstraction Concepts avanc´s e Enseignant Membres statiques m´moire == 20 e Polymorphisme Exceptions M´ta-classes e apprendre() # formation Ramasse-miettes Fin
  45. 45. Exemple virtuel POO, h´ritage e Johann Dr´o e C++ Pr´-requis e Programmation class Personne { Fonctionnelle Structures public virtual void apprendre() = 0 ; POO }; Historique Objet class Etudiant : public Personne { Classe public void apprendre() { H´ritage e D´finition e this− >photocopier cours() ; VS composition Constructeurs } Abstraction }; Concepts avanc´s e Membres statiques Polymorphisme Classe abstraite Exceptions M´ta-classes e Ramasse-miettes Fin
  46. 46. Interface POO, h´ritage e Johann Dr´o e Pr´-requis e Programmation D´finition e Fonctionnelle Structures cas particulier de classe abstraite POO toutes m´thodes virtuelles pures e Historique Objet Classe H´ritage e Personne D´finition e VS composition manger() Constructeurs Abstraction apprendre() Concepts avanc´s e cr´er() e Membres statiques Polymorphisme Exceptions M´ta-classes e Ramasse-miettes Fin
  47. 47. Interface POO, h´ritage e Johann Dr´o e Pr´-requis e Programmation D´finition e Fonctionnelle Structures cas particulier de classe abstraite POO toutes m´thodes virtuelles pures e Historique Objet Classe H´ritage e Personne D´finition e VS composition manger() Constructeurs Abstraction apprendre() Concepts avanc´s e cr´er() e Membres statiques Polymorphisme Exceptions M´ta-classes e Ramasse-miettes Fin
  48. 48. Interface & collections POO, h´ritage e Johann Dr´o e Pr´-requis e Probl`me e Programmation salle de cours Fonctionnelle Structures collection de personnes POO Historique classes diff´rentes e Objet Classe H´ritage e Id´alement e D´finition e VS composition Constructeurs ? c = { new Etudiant(), new Etudiant(), new Enseignant() } ; Abstraction Concepts avanc´s e En pratique (C++) Membres statiques Polymorphisme list<Personne*> c ; Exceptions M´ta-classes e Ramasse-miettes Fin
  49. 49. Interface & collections POO, h´ritage e Johann Dr´o e Pr´-requis e Probl`me e Programmation salle de cours Fonctionnelle Structures collection de personnes POO Historique classes diff´rentes e Objet Classe H´ritage e Id´alement e D´finition e VS composition Constructeurs ? c = { new Etudiant(), new Etudiant(), new Enseignant() } ; Abstraction Concepts avanc´s e En pratique (C++) Membres statiques Polymorphisme list<Personne*> c ; Exceptions M´ta-classes e Ramasse-miettes Fin
  50. 50. Interface & collections POO, h´ritage e Johann Dr´o e Pr´-requis e Probl`me e Programmation salle de cours Fonctionnelle Structures collection de personnes POO Historique classes diff´rentes e Objet Classe H´ritage e Id´alement e D´finition e VS composition Constructeurs ? c = { new Etudiant(), new Etudiant(), new Enseignant() } ; Abstraction Concepts avanc´s e En pratique (C++) Membres statiques Polymorphisme list<Personne*> c ; Exceptions M´ta-classes e Ramasse-miettes Fin
  51. 51. Interface & collections POO, h´ritage e Johann Dr´o e Attention Pr´-requis e acc`s uniquement aux m´thodes de l’interface e e Programmation Fonctionnelle Structures m´thodes des sous-classes inaccessibles e POO Historique Objet c[0]− >apprendre() ; // OUI Classe H´ritage e c[2]− >boire() ; // NON D´finition e VS composition Constructeurs Abstraction Interfaces Concepts avanc´s e “quoi” Membres statiques sous-classes = “comment” Polymorphisme Exceptions M´ta-classes e saine habitude Ramasse-miettes Fin
  52. 52. Interface & collections POO, h´ritage e Johann Dr´o e Attention Pr´-requis e acc`s uniquement aux m´thodes de l’interface e e Programmation Fonctionnelle Structures m´thodes des sous-classes inaccessibles e POO Historique Objet c[0]− >apprendre() ; // OUI Classe H´ritage e c[2]− >boire() ; // NON D´finition e VS composition Constructeurs Abstraction Interfaces Concepts avanc´s e “quoi” Membres statiques sous-classes = “comment” Polymorphisme Exceptions M´ta-classes e saine habitude Ramasse-miettes Fin
  53. 53. Interface & collections POO, h´ritage e Johann Dr´o e Attention Pr´-requis e acc`s uniquement aux m´thodes de l’interface e e Programmation Fonctionnelle Structures m´thodes des sous-classes inaccessibles e POO Historique Objet c[0]− >apprendre() ; // OUI Classe H´ritage e c[2]− >boire() ; // NON D´finition e VS composition Constructeurs Abstraction Interfaces Concepts avanc´s e “quoi” Membres statiques sous-classes = “comment” Polymorphisme Exceptions M´ta-classes e saine habitude Ramasse-miettes Fin
  54. 54. Plan POO, h´ritage e 1 Programmation Johann Dr´o e Programmation fonctionnelle Structures Pr´-requis e 2 Programmation orient´e objet e Programmation Fonctionnelle Historique Structures Objet POO Historique Classe Objet Classe 3 H´ritage e H´ritage e D´finition e D´finition e VS composition VS composition Constructeurs Abstraction Constructeurs & destructeurs Concepts avanc´s e Abstraction Membres statiques 4 Concepts avanc´s e Polymorphisme Exceptions Membres statiques M´ta-classes e Ramasse-miettes Polymorphisme Fin Exceptions
  55. 55. Membres statiques POO, h´ritage e Johann Dr´o e ´ Etudiant Pr´-requis e age Programmation Fonctionnelle Structures sexe POO esprit de corps Historique Objet Classe H´ritage e Attribut statique (= de classe) D´finition e VS composition Entit´ unique pour tous les objets e Constructeurs Abstraction Modification simultan´e e Concepts avanc´s e Membres statiques M´thode statique (= de classe) e Polymorphisme Exceptions M´ta-classes e Ne peut utiliser les attributs Ramasse-miettes Fin
  56. 56. Membres statiques POO, h´ritage e Johann Dr´o e ´ Etudiant Pr´-requis e age Programmation Fonctionnelle Structures sexe POO esprit de corps Historique Objet Classe H´ritage e Attribut statique (= de classe) D´finition e VS composition Entit´ unique pour tous les objets e Constructeurs Abstraction Modification simultan´e e Concepts avanc´s e Membres statiques M´thode statique (= de classe) e Polymorphisme Exceptions M´ta-classes e Ne peut utiliser les attributs Ramasse-miettes Fin
  57. 57. Membres statiques POO, h´ritage e Johann Dr´o e ´ Etudiant Pr´-requis e age Programmation Fonctionnelle Structures sexe POO esprit de corps Historique Objet Classe H´ritage e Attribut statique (= de classe) D´finition e VS composition Entit´ unique pour tous les objets e Constructeurs Abstraction Modification simultan´e e Concepts avanc´s e Membres statiques M´thode statique (= de classe) e Polymorphisme Exceptions M´ta-classes e Ne peut utiliser les attributs Ramasse-miettes Fin
  58. 58. Exemple POO, h´ritage e Johann Dr´o e Pr´-requis e Programmation Python Fonctionnelle Structures class Etudiant : POO esprit corps = 0 Historique Objet Classe def init (self) : H´ritage e D´finition e self.age = 10 VS composition Constructeurs Abstraction Concepts print self.age avanc´s e print Etudiant.esprit corps Membres statiques Polymorphisme Exceptions M´ta-classes e Ramasse-miettes Fin
  59. 59. Polymorphisme POO, h´ritage e Johann Dr´o e Pr´-requis e Programmation Fonctionnelle Structures D´finition e POO Historique Objet surcharge Classe plusieurs m´thodes de mˆme nom e e H´ritage e D´finition e VS composition signature = types de renvoi & arguments Constructeurs Abstraction Concepts avanc´s e Membres statiques Polymorphisme Exceptions M´ta-classes e Ramasse-miettes Fin
  60. 60. Exemple POO, h´ritage e C++ Johann Dr´o e class Etudiant { Pr´-requis e int age ; Programmation Fonctionnelle bool sexe ; Structures void Etudiant() POO Historique : age(20), sexe(1) {} Objet Classe void Etudiant( int age ) H´ritage e : age( age), sexe(1) {} D´finition e VS composition void Etudiant( int age, bool sexe ) Constructeurs Abstraction : age( age), sexe( sexe) {} Concepts } avanc´s e Membres statiques Polymorphisme Exceptions e = new Etudiant() ; M´ta-classes e Ramasse-miettes e = new Etudiant( 20 ) ; Fin e = new Etudiant( 20, 1 ) ;
  61. 61. Exemple POO, h´ritage e C++ Johann Dr´o e class Etudiant { Pr´-requis e int age ; Programmation Fonctionnelle bool sexe ; Structures void Etudiant() POO Historique : age(20), sexe(1) {} Objet Classe void Etudiant( int age ) H´ritage e : age( age), sexe(1) {} D´finition e VS composition void Etudiant( int age, bool sexe ) Constructeurs Abstraction : age( age), sexe( sexe) {} Concepts } avanc´s e Membres statiques Polymorphisme Exceptions e = new Etudiant() ; M´ta-classes e Ramasse-miettes e = new Etudiant( 20 ) ; Fin e = new Etudiant( 20, 1 ) ;
  62. 62. Exceptions POO, h´ritage e Exception = erreur Johann Dr´o e Probl`mes avec les valeurs de retour e Pr´-requis e Programmation Syst`me de “lancement” d’exceptions e Fonctionnelle Structures Exception = objet (informations sur l’erreur) POO Historique Objet Classe ` A l’ancienne Gène Plante H´ritage e if( f( g( h( x ) ) ) ) : +séquence +génome D´finition e +transcrire() VS composition print ”ok” Constructeurs Abstraction Concepts Cry1(A) avanc´s e Proprement +résistance OGM Membres statiques try : Barstar +cry1(A) +barstar Polymorphisme Exceptions y = f( g( h( x ) ) ) ) +inhibition +antisens M´ta-classes e Ramasse-miettes except Error,e : Antisens +blocage Fin print e
  63. 63. Exceptions POO, h´ritage e Exception = erreur Johann Dr´o e Probl`mes avec les valeurs de retour e Pr´-requis e Programmation Syst`me de “lancement” d’exceptions e Fonctionnelle Structures Exception = objet (informations sur l’erreur) POO Historique Objet Classe ` A l’ancienne Gène Plante H´ritage e if( f( g( h( x ) ) ) ) : +séquence +génome D´finition e +transcrire() VS composition print ”ok” Constructeurs Abstraction Concepts Cry1(A) avanc´s e Proprement +résistance OGM Membres statiques try : Barstar +cry1(A) +barstar Polymorphisme Exceptions y = f( g( h( x ) ) ) ) +inhibition +antisens M´ta-classes e Ramasse-miettes except Error,e : Antisens +blocage Fin print e
  64. 64. Exceptions POO, h´ritage e Exception = erreur Johann Dr´o e Probl`mes avec les valeurs de retour e Pr´-requis e Programmation Syst`me de “lancement” d’exceptions e Fonctionnelle Structures Exception = objet (informations sur l’erreur) POO Historique Objet Classe ` A l’ancienne Gène Plante H´ritage e if( f( g( h( x ) ) ) ) : +séquence +génome D´finition e +transcrire() VS composition print ”ok” Constructeurs Abstraction Concepts Cry1(A) avanc´s e Proprement +résistance OGM Membres statiques try : Barstar +cry1(A) +barstar Polymorphisme Exceptions y = f( g( h( x ) ) ) ) +inhibition +antisens M´ta-classes e Ramasse-miettes except Error,e : Antisens +blocage Fin print e
  65. 65. Exemple POO, h´ritage e Johann Dr´o e Python Pr´-requis e if( a == 1 ) : Programmation raise RuntimeError(”Pas bien”) Fonctionnelle Structures else : POO ... Historique Objet Classe try : H´ritage e D´finition e variable VS composition Constructeurs except NameError : Abstraction Concepts print ”N’existe pas” avanc´s e else : Membres statiques Polymorphisme print ”Existe :”, variable Exceptions M´ta-classes e finally : Ramasse-miettes print ”Test´” e Fin
  66. 66. Exemple POO, h´ritage e Johann Dr´o e Python Pr´-requis e if( a == 1 ) : Programmation raise RuntimeError(”Pas bien”) Fonctionnelle Structures else : POO ... Historique Objet Classe try : H´ritage e D´finition e variable VS composition Constructeurs except NameError : Abstraction Concepts print ”N’existe pas” avanc´s e else : Membres statiques Polymorphisme print ”Existe :”, variable Exceptions M´ta-classes e finally : Ramasse-miettes print ”Test´” e Fin
  67. 67. M´ta-classes e POO, h´ritage e Johann Dr´o e M´ta-classes e Pr´-requis e M´ta-classes = presse pour fabriquer des moules e Programmation Fonctionnelle M´ta-classe e → classes → objets Structures POO Historique Utilisation Objet Classe Ajouter des fonctions au H´ritage e D´finition e langage VS composition Constructeurs Tra¸age des appels c Abstraction Concepts S´rialisation e avanc´s e Membres statiques Programmation orient´e e Polymorphisme Exceptions aspects M´ta-classes e Ramasse-miettes etc. Fin
  68. 68. M´ta-classes e POO, h´ritage e Johann Dr´o e M´ta-classes e Pr´-requis e M´ta-classes = presse pour fabriquer des moules e Programmation Fonctionnelle M´ta-classe e → classes → objets Structures POO Historique Utilisation Objet Classe Ajouter des fonctions au H´ritage e D´finition e langage VS composition Constructeurs Tra¸age des appels c Abstraction Concepts S´rialisation e avanc´s e Membres statiques Programmation orient´e e Polymorphisme Exceptions aspects M´ta-classes e Ramasse-miettes etc. Fin
  69. 69. Ramasse-miettes POO, h´ritage e Johann Dr´o e Pr´-requis e Programmation C++ Fonctionnelle Structures A *a = new A() ; delete a ; POO Historique Objet Garbage collector Classe H´ritage e Lib´ration automatique de la m´moire e e D´finition e VS composition Pr´vient : e Constructeurs Abstraction acc`s ` une zone non allou´e e a e Concepts lib´ration d’une zone d´j` lib´r´e e ea ee avanc´s e Membres fuites m´moire e statiques Polymorphisme Exceptions M´ta-classes e Ramasse-miettes Fin
  70. 70. Ramasse-miettes POO, h´ritage e Johann Dr´o e Pr´-requis e Programmation C++ Fonctionnelle Structures A *a = new A() ; delete a ; POO Historique Objet Garbage collector Classe H´ritage e Lib´ration automatique de la m´moire e e D´finition e VS composition Pr´vient : e Constructeurs Abstraction acc`s ` une zone non allou´e e a e Concepts lib´ration d’une zone d´j` lib´r´e e ea ee avanc´s e Membres fuites m´moire e statiques Polymorphisme Exceptions M´ta-classes e Ramasse-miettes Fin
  71. 71. POO, h´ritage e Johann Dr´o e Pr´-requis e Programmation Fonctionnelle Structures POO Historique Objet Classe H´ritage e D´finition e VS composition Constructeurs Abstraction Concepts avanc´s e Membres statiques Polymorphisme Exceptions M´ta-classes e Ramasse-miettes Fin
  72. 72. POO, h´ritage e Johann Dr´o e Pr´-requis e Programmation Fonctionnelle Structures POO Historique Objet Classe H´ritage e D´finition e VS composition Constructeurs Abstraction Concepts avanc´s e Membres statiques Polymorphisme Exceptions M´ta-classes e Ramasse-miettes Fin

×