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.
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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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