Upload
johann-dreo
View
4.065
Download
0
Embed Size (px)
DESCRIPTION
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.
Citation preview
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Programmation orientee objet : l’heritage
Johann Dreo
28 septembre 2007
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Plan
1 ProgrammationProgrammation fonctionnelleStructures
2 Programmation orientee objetHistoriqueObjetClasse
3 HeritageDefinitionVS compositionConstructeurs & destructeursAbstraction
4 Concepts avancesMembres statiquesPolymorphismeExceptionsMeta-classesRamasse-miettes
5 Fin
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Pre-requis
Prog. imperative
Variables
Branchements conditionnels
Boucles
Memoire (pointeurs)
Introduction
Cours preliminaire
approfondissements. . .
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Pre-requis
Prog. imperative
Variables
Branchements conditionnels
Boucles
Memoire (pointeurs)
Introduction
Cours preliminaire
approfondissements. . .
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Plan
1 ProgrammationProgrammation fonctionnelleStructures
2 Programmation orientee objetHistoriqueObjetClasse
3 HeritageDefinitionVS compositionConstructeurs & destructeursAbstraction
4 Concepts avancesMembres statiquesPolymorphismeExceptionsMeta-classesRamasse-miettes
5 Fin
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Fonctionnelle
Fonction mathematique
f (x) = x2
y = f (x)
En Basic
1 GOTO 42 y=x*x3 GOTO 64 x=25 GOTO 26 PRINT y
En C
double f( double x ) { return x*x ; }double x = 2.0 ; double y = f( x ) ;
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Fonctionnelle
Fonction mathematique
f (x) = x2
y = f (x)
En Basic
1 GOTO 42 y=x*x3 GOTO 64 x=25 GOTO 26 PRINT y
En C
double f( double x ) { return x*x ; }double x = 2.0 ; double y = f( x ) ;
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Fonctionnelle
Fonction mathematique
f (x) = x2
y = f (x)
En Basic
1 GOTO 42 y=x*x3 GOTO 64 x=25 GOTO 26 PRINT y
En C
double f( double x ) { return x*x ; }double x = 2.0 ; double y = f( x ) ;
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Fonctions
Interet
structure de donnees + fonctions
bibliotheques
Consequences amusantes
y = f( g( x ) ) ;
double f( double x ) { return f(x) ; }
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Fonctions
Interet
structure de donnees + fonctions
bibliotheques
Consequences amusantes
y = f( g( x ) ) ;
double f( double x ) { return f(x) ; }
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Portees des variables
Portees
double a ;double f( double b ) {printf(a) ;printf(b) ;return b+1 ;
}printf(b) ;
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Structures
Probleme
a,b = f(x,y,z) ;
Definition
struct Type{int a ;char b ;
} ;
Utilisation
Type f( int x, int y, int z ) {Type t ; t.a=x*y ; t.b=x+y ;return t ;
}Type v = f(x,y,z) ;
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Structures
Probleme
a,b = f(x,y,z) ;
Definition
struct Type{int a ;char b ;
} ;
Utilisation
Type f( int x, int y, int z ) {Type t ; t.a=x*y ; t.b=x+y ;return t ;
}Type v = f(x,y,z) ;
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Structures
Probleme
a,b = f(x,y,z) ;
Definition
struct Type{int a ;char b ;
} ;
Utilisation
Type f( int x, int y, int z ) {Type t ; t.a=x*y ; t.b=x+y ;return t ;
}Type v = f(x,y,z) ;
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Plan
1 ProgrammationProgrammation fonctionnelleStructures
2 Programmation orientee objetHistoriqueObjetClasse
3 HeritageDefinitionVS compositionConstructeurs & destructeursAbstraction
4 Concepts avancesMembres statiquesPolymorphismeExceptionsMeta-classesRamasse-miettes
5 Fin
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Langages
1956 : Fortran
1958 : Lisp
1964 : Basic
1966 : Simula
1976 : SmallTalk
1983 : C++, Objective C
1986 : Eiffel
1990 : Fortran quasi-objet
1991 : Visual Basic, Python
1993 : Ruby
1994 : Perl objet
1995 : Java
2000 : PHP objet
2003 : Fortran objet
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Concept de base
Pourquoi ?
representation directe, intuitive
reutilisation de code
demarrage rapide
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Types de langages
Langages objets
d’acteurs (donnees locales, filtrage de message)
de frames (gestion de connaissance, prototype)
de classes (instances, heritage, polymorphisme, . . .)
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Types de langages
Langages objets
d’acteurs (donnees locales, filtrage de message)
de frames (gestion de connaissance, prototype)
de classes (instances, heritage, polymorphisme, . . .)
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Types de langages
Langages objets
d’acteurs (donnees locales, filtrage de message)
de frames (gestion de connaissance, prototype)
de classes (instances, heritage, polymorphisme, . . .)
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Classes
Mantra
classe = moule
demouler = instancier
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Exemple
Classe “etudiant”age
sexe
cheveux
etat
Objet “etudiant”
age = 20
sexe = F
cheveux = blonds
etat = endormi
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Exemple
Classe “etudiant”age
sexe
cheveux
etat
Objet “etudiant”
age = 20
sexe = F
cheveux = blonds
etat = endormi
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Vocabulaire
Vocabulaire
instance de classe = objet
variable membre d’une classe = attribut
fonction membre d’une classe = methode
Encapsulation
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Vocabulaire
Vocabulaire
instance de classe = objet
variable membre d’une classe = attribut
fonction membre d’une classe = methode
Encapsulation
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Vocabulaire
Vocabulaire
instance de classe = objet
variable membre d’une classe = attribut
fonction membre d’une classe = methode
Encapsulation
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Plan
1 ProgrammationProgrammation fonctionnelleStructures
2 Programmation orientee objetHistoriqueObjetClasse
3 HeritageDefinitionVS compositionConstructeurs & destructeursAbstraction
4 Concepts avancesMembres statiquesPolymorphismeExceptionsMeta-classesRamasse-miettes
5 Fin
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Generalisation
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Hierarchie
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Heritage
Étudiant
#état
+endormir()
+réveiller()
Enseignant
#tolérance
+enseigner()
+craquer()
Personne
#age
#sexe
#cheveux
+opérer()
+teinter()
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Heritages
Personne
Employé Étudiant
Ingénieur Chercheur
Doctorant
Simple
Multiple (a eviter si possible)
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Exemple
Java
class Personne {void parler() {System.out.println ("Bonjour") ;}}class Etudiant extends Personne {}
Etudiant e = new Etudiant() ;e.parler() ;
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Composition
OGM
+cry1(A)
+barstar
+antisens
Cry1(A)
+résistance
Barstar
+inhibition
Antisens
+blocage
Gène
+séquence
+transcrire()
Plante
+génome
Preferer l’heritage
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Composition
OGM
+cry1(A)
+barstar
+antisens
Cry1(A)
+résistance
Barstar
+inhibition
Antisens
+blocage
Gène
+séquence
+transcrire()
Plante
+génome
Preferer l’heritage
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Constructeur
Probleme
Initialiser les attributs a l’instanciation ?
Python
e2 = Etudiant(age = 29)
class Etudiant :def init ( self, mon age ) :
self.age = mon age
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Constructeur
Probleme
Initialiser les attributs a l’instanciation ?
Python
e2 = Etudiant(age = 29)
class Etudiant :def init ( self, mon age ) :
self.age = mon age
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Constructeur
Probleme
Initialiser les attributs a l’instanciation ?
Python
e2 = Etudiant(age = 29)
class Etudiant :def init ( self, mon age ) :
self.age = mon age
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Destructeur
Probleme
Effectuer des operations en fin de vie ?
Python
def f( x ) :e = Etudiant()
print ”Hors de portee”f(1)
class Etudiant :def del ( self ) :
self.reveiller()print ”Au revoir”
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Destructeur
Probleme
Effectuer des operations en fin de vie ?
Python
def f( x ) :e = Etudiant()
print ”Hors de portee”f(1)
class Etudiant :def del ( self ) :
self.reveiller()print ”Au revoir”
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Destructeur
Probleme
Effectuer des operations en fin de vie ?
Python
def f( x ) :e = Etudiant()
print ”Hors de portee”f(1)
class Etudiant :def del ( self ) :
self.reveiller()print ”Au revoir”
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Methodes virtuelles
Personne
memoire == 10
apprendre()
Etudiant
memoire == 1
apprendre() # cours
Enseignant
memoire == 20
apprendre() # formation
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Methodes virtuelles
Personne
memoire == 10
apprendre()
Etudiant
memoire == 1
apprendre() # cours
Enseignant
memoire == 20
apprendre() # formation
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Methodes virtuelles
Personne
memoire == 10
apprendre()
Etudiant
memoire == 1
apprendre() # cours
Enseignant
memoire == 20
apprendre() # formation
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Exemple virtuel
C++
class Personne {public virtual void apprendre() = 0 ;} ;class Etudiant : public Personne {
public void apprendre() {this− >photocopier cours() ;}} ;
Classe abstraite
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Interface
Definition
cas particulier de classe abstraite
toutes methodes virtuelles pures
Personne
manger()
apprendre()
creer()
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Interface
Definition
cas particulier de classe abstraite
toutes methodes virtuelles pures
Personne
manger()
apprendre()
creer()
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Interface & collections
Probleme
salle de cours
collection de personnes
classes differentes
Idealement
? c = { new Etudiant(), new Etudiant(), new Enseignant() } ;
En pratique (C++)
list<Personne*> c ;
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Interface & collections
Probleme
salle de cours
collection de personnes
classes differentes
Idealement
? c = { new Etudiant(), new Etudiant(), new Enseignant() } ;
En pratique (C++)
list<Personne*> c ;
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Interface & collections
Probleme
salle de cours
collection de personnes
classes differentes
Idealement
? c = { new Etudiant(), new Etudiant(), new Enseignant() } ;
En pratique (C++)
list<Personne*> c ;
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Interface & collections
Attention
acces uniquement aux methodes de l’interface
methodes des sous-classes inaccessibles
c[0]− >apprendre() ; // OUI
c[2]− >boire() ; // NON
Interfaces
“quoi”
sous-classes = “comment”
saine habitude
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Interface & collections
Attention
acces uniquement aux methodes de l’interface
methodes des sous-classes inaccessibles
c[0]− >apprendre() ; // OUI
c[2]− >boire() ; // NON
Interfaces
“quoi”
sous-classes = “comment”
saine habitude
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Interface & collections
Attention
acces uniquement aux methodes de l’interface
methodes des sous-classes inaccessibles
c[0]− >apprendre() ; // OUI
c[2]− >boire() ; // NON
Interfaces
“quoi”
sous-classes = “comment”
saine habitude
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Plan
1 ProgrammationProgrammation fonctionnelleStructures
2 Programmation orientee objetHistoriqueObjetClasse
3 HeritageDefinitionVS compositionConstructeurs & destructeursAbstraction
4 Concepts avancesMembres statiquesPolymorphismeExceptionsMeta-classesRamasse-miettes
5 Fin
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Membres statiques
Etudiantage
sexe
esprit de corps
Attribut statique (= de classe)
Entite unique pour tous les objets
Modification simultanee
Methode statique (= de classe)
Ne peut utiliser les attributs
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Membres statiques
Etudiantage
sexe
esprit de corps
Attribut statique (= de classe)
Entite unique pour tous les objets
Modification simultanee
Methode statique (= de classe)
Ne peut utiliser les attributs
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Membres statiques
Etudiantage
sexe
esprit de corps
Attribut statique (= de classe)
Entite unique pour tous les objets
Modification simultanee
Methode statique (= de classe)
Ne peut utiliser les attributs
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Exemple
Python
class Etudiant :esprit corps = 0
def init (self) :self.age = 10
print self.ageprint Etudiant.esprit corps
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Polymorphisme
Definition
surcharge
plusieurs methodes de meme nom
signature = types de renvoi & arguments
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Exemple
C++
class Etudiant {int age ;bool sexe ;void Etudiant()
: age(20), sexe(1) {}void Etudiant( int age )
: age( age), sexe(1) {}void Etudiant( int age, bool sexe )
: age( age), sexe( sexe) {}}
e = new Etudiant() ;e = new Etudiant( 20 ) ;e = new Etudiant( 20, 1 ) ;
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Exemple
C++
class Etudiant {int age ;bool sexe ;void Etudiant()
: age(20), sexe(1) {}void Etudiant( int age )
: age( age), sexe(1) {}void Etudiant( int age, bool sexe )
: age( age), sexe( sexe) {}}
e = new Etudiant() ;e = new Etudiant( 20 ) ;e = new Etudiant( 20, 1 ) ;
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Exceptions
Exception = erreur
Problemes avec les valeurs de retour
Systeme de “lancement” d’exceptions
Exception = objet (informations sur l’erreur)
A l’ancienne
if( f( g( h( x ) ) ) ) :print ”ok”
Proprement
try :y = f( g( h( x ) ) ) )
except Error,e :print e
OGM
+cry1(A)
+barstar
+antisens
Cry1(A)
+résistance
Barstar
+inhibition
Antisens
+blocage
Gène
+séquence
+transcrire()
Plante
+génome
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Exceptions
Exception = erreur
Problemes avec les valeurs de retour
Systeme de “lancement” d’exceptions
Exception = objet (informations sur l’erreur)
A l’ancienne
if( f( g( h( x ) ) ) ) :print ”ok”
Proprement
try :y = f( g( h( x ) ) ) )
except Error,e :print e
OGM
+cry1(A)
+barstar
+antisens
Cry1(A)
+résistance
Barstar
+inhibition
Antisens
+blocage
Gène
+séquence
+transcrire()
Plante
+génome
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Exceptions
Exception = erreur
Problemes avec les valeurs de retour
Systeme de “lancement” d’exceptions
Exception = objet (informations sur l’erreur)
A l’ancienne
if( f( g( h( x ) ) ) ) :print ”ok”
Proprement
try :y = f( g( h( x ) ) ) )
except Error,e :print e
OGM
+cry1(A)
+barstar
+antisens
Cry1(A)
+résistance
Barstar
+inhibition
Antisens
+blocage
Gène
+séquence
+transcrire()
Plante
+génome
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Exemple
Python
if( a == 1 ) :raise RuntimeError(”Pas bien”)
else :. . .
try :variable
except NameError :print ”N’existe pas”
else :print ”Existe :”, variable
finally :print ”Teste”
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Exemple
Python
if( a == 1 ) :raise RuntimeError(”Pas bien”)
else :. . .
try :variable
except NameError :print ”N’existe pas”
else :print ”Existe :”, variable
finally :print ”Teste”
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Meta-classes
Meta-classes
Meta-classes = presse pour fabriquer des moules
Meta-classe → classes → objets
Utilisation
Ajouter des fonctions aulangage
Tracage des appels
Serialisation
Programmation orienteeaspects
etc.
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Meta-classes
Meta-classes
Meta-classes = presse pour fabriquer des moules
Meta-classe → classes → objets
Utilisation
Ajouter des fonctions aulangage
Tracage des appels
Serialisation
Programmation orienteeaspects
etc.
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Ramasse-miettes
C++
A *a = new A() ; delete a ;
Garbage collector
Liberation automatique de la memoire
Previent :
acces a une zone non alloueeliberation d’une zone deja libereefuites memoire
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
Ramasse-miettes
C++
A *a = new A() ; delete a ;
Garbage collector
Liberation automatique de la memoire
Previent :
acces a une zone non alloueeliberation d’une zone deja libereefuites memoire
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin
POO, heritage
Johann Dreo
Pre-requis
Programmation
Fonctionnelle
Structures
POO
Historique
Objet
Classe
Heritage
Definition
VS composition
Constructeurs
Abstraction
Conceptsavances
Membresstatiques
Polymorphisme
Exceptions
Meta-classes
Ramasse-miettes
Fin