introduction à la poo - cours 1h

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

Upload: johann-dreo

Post on 22-May-2015

4.065 views

Category:

Education


0 download

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.

TRANSCRIPT

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