introduction à la poo - cours 1h

Post on 22-May-2015

4.065 Views

Category:

Education

0 Downloads

Preview:

Click to see full reader

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

POO, heritage

Johann Dreo

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