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
Top Related