72
POO, h´ eritage Johann Dr´ eo Pr´ e-requis Programmation Fonctionnelle Structures POO Historique Objet Classe eritage efinition VS composition Constructeurs Abstraction Concepts avanc´ es Membres statiques Polymorphisme Exceptions eta-classes Ramasse-miettes Fin Programmation orient´ ee objet : l’h´ eritage Johann Dr´ eo 28 septembre 2007

Introduction à la POO - cours 1h

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

Page 1: Introduction à la POO - cours 1h

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

Page 2: Introduction à la POO - cours 1h

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

Page 3: Introduction à la POO - cours 1h

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

Page 4: Introduction à la POO - cours 1h

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

Page 5: Introduction à la POO - cours 1h

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

Page 6: Introduction à la POO - cours 1h

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

Page 7: Introduction à la POO - cours 1h

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 ) ;

Page 8: Introduction à la POO - cours 1h

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 ) ;

Page 9: Introduction à la POO - cours 1h

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 ) ;

Page 10: Introduction à la POO - cours 1h

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) ; }

Page 11: Introduction à la POO - cours 1h

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) ; }

Page 12: Introduction à la POO - cours 1h

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) ;

Page 13: Introduction à la POO - cours 1h

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) ;

Page 14: Introduction à la POO - cours 1h

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) ;

Page 15: Introduction à la POO - cours 1h

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) ;

Page 16: Introduction à la POO - cours 1h

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

Page 17: Introduction à la POO - cours 1h

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

Page 18: Introduction à la POO - cours 1h

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

Page 19: Introduction à la POO - cours 1h

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

Page 20: Introduction à la POO - cours 1h

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

Page 21: Introduction à la POO - cours 1h

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

Page 22: Introduction à la POO - cours 1h

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

Page 23: Introduction à la POO - cours 1h

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

Page 24: Introduction à la POO - cours 1h

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

Page 25: Introduction à la POO - cours 1h

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

Page 26: Introduction à la POO - cours 1h

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

Page 27: Introduction à la POO - cours 1h

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

Page 28: Introduction à la POO - cours 1h

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

Page 29: Introduction à la POO - cours 1h

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

Page 30: Introduction à la POO - cours 1h

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

Page 31: Introduction à la POO - cours 1h

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()

Page 32: Introduction à la POO - cours 1h

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)

Page 33: Introduction à la POO - cours 1h

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() ;

Page 34: Introduction à la POO - cours 1h

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

Page 35: Introduction à la POO - cours 1h

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

Page 36: Introduction à la POO - cours 1h

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

Page 37: Introduction à la POO - cours 1h

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

Page 38: Introduction à la POO - cours 1h

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

Page 39: Introduction à la POO - cours 1h

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”

Page 40: Introduction à la POO - cours 1h

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”

Page 41: Introduction à la POO - cours 1h

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”

Page 42: Introduction à la POO - cours 1h

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

Page 43: Introduction à la POO - cours 1h

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

Page 44: Introduction à la POO - cours 1h

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

Page 45: Introduction à la POO - cours 1h

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

Page 46: Introduction à la POO - cours 1h

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()

Page 47: Introduction à la POO - cours 1h

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()

Page 48: Introduction à la POO - cours 1h

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 ;

Page 49: Introduction à la POO - cours 1h

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 ;

Page 50: Introduction à la POO - cours 1h

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 ;

Page 51: Introduction à la POO - cours 1h

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

Page 52: Introduction à la POO - cours 1h

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

Page 53: Introduction à la POO - cours 1h

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

Page 54: Introduction à la POO - cours 1h

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

Page 55: Introduction à la POO - cours 1h

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

Page 56: Introduction à la POO - cours 1h

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

Page 57: Introduction à la POO - cours 1h

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

Page 58: Introduction à la POO - cours 1h

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

Page 59: Introduction à la POO - cours 1h

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

Page 60: Introduction à la POO - cours 1h

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 ) ;

Page 61: Introduction à la POO - cours 1h

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 ) ;

Page 62: Introduction à la POO - cours 1h

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

Page 63: Introduction à la POO - cours 1h

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

Page 64: Introduction à la POO - cours 1h

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

Page 65: Introduction à la POO - cours 1h

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”

Page 66: Introduction à la POO - cours 1h

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”

Page 67: Introduction à la POO - cours 1h

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.

Page 68: Introduction à la POO - cours 1h

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.

Page 69: Introduction à la POO - cours 1h

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

Page 70: Introduction à la POO - cours 1h

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

Page 71: Introduction à la POO - cours 1h

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

Page 72: Introduction à la POO - cours 1h

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