Orienté Objet : erreur historique ou voie à poursuivre ?

73
L'orienté objet Erreur historique ou voie à poursuivre ? Frédéric Fadel Aspectize 1

description

Pourquoi ce titre ? - Crise logiciel mythe ou réalité ? - L'orienté objet : quelque*s* définitions. - Du rigide au souple : une histoire accéléré de l'informatique des 30 dernières années.

Transcript of Orienté Objet : erreur historique ou voie à poursuivre ?

Page 1: Orienté Objet : erreur historique ou voie à poursuivre ?

L'orienté objet Erreur historique ou voie à poursuivre ?

Frédéric Fadel Aspectize 1

Page 2: Orienté Objet : erreur historique ou voie à poursuivre ?

Programme

Pourquoi ce titre ?

Crise logiciel : mythe ou réalité ?

L'orienté objet : quelques définitions.

Du rigide au souple

une histoire accélérée de l'informatique

Frédéric Fadel Aspectize 2

Page 3: Orienté Objet : erreur historique ou voie à poursuivre ?

Pourquoi ce titre ?

Frédéric Fadel Aspectize 3

Page 4: Orienté Objet : erreur historique ou voie à poursuivre ?

Pourquoi ce titre ?

Frédéric Fadel Aspectize 4

?

?

??

?

?

??

?

?

?

??

?

?

?

Page 5: Orienté Objet : erreur historique ou voie à poursuivre ?

… Pourquoi ce titre ?

Frédéric Fadel Aspectize 5

Civilisation

Démocratie

Capitalisme

Monothéisme

Monogamie

L'évolutionAtomisme

Le boson de Higgs

Industrie

Finance

Page 6: Orienté Objet : erreur historique ou voie à poursuivre ?

… Pourquoi ce titre ?

Frédéric Fadel Aspectize 6

Page 7: Orienté Objet : erreur historique ou voie à poursuivre ?

… Pourquoi ce titre ?

Frédéric Fadel Aspectize 7

Page 8: Orienté Objet : erreur historique ou voie à poursuivre ?

Crise logicielMythe ou réalité ? Crise ou Sentiment de crise ?

Frédéric Fadel Aspectize 8

Page 9: Orienté Objet : erreur historique ou voie à poursuivre ?

Crise Logiciel

Page 10: Orienté Objet : erreur historique ou voie à poursuivre ?

Crise Logiciel : Mythe ?

0 à 300 000 000 000 $ en 30 ans !

Valeur > Coûts !

Comparé à quoi ?

Selon quelles normes ?

Y a-t-il d'autres qui font mieux ?

Frédéric Fadel Aspectize 10

Page 11: Orienté Objet : erreur historique ou voie à poursuivre ?

Crise Logiciel : Réalité ?

Estimations optimistes Ergonomie insuffisante Projets ratés

Fox Meyer C3 Copernic Chorus …

Frédéric Fadel Aspectize 12

Page 12: Orienté Objet : erreur historique ou voie à poursuivre ?

Sentiment de Crise

Frédéric Fadel Aspectize 13

C'est sim

ple

mais…Présentation

Traite

ments

Données

Page 13: Orienté Objet : erreur historique ou voie à poursuivre ?

Sentiment de Crise

Ce dont le Businessa besoin.Avec ses invariants.

Ce que réalise l’IT. Avec ses invariants.

Page 14: Orienté Objet : erreur historique ou voie à poursuivre ?

Sentiment de Crise

Frédéric Fadel Aspectize 15

TDDAOP

DDD

DDDD

MDDAOM

ORM MVC

MVVM

OCP

SRP

LSP

ISPDIP …

TFDCQRS

Page 15: Orienté Objet : erreur historique ou voie à poursuivre ?

L'orienté objetQuelques définitions

Frédéric Fadel Aspectize 16

Page 16: Orienté Objet : erreur historique ou voie à poursuivre ?

Différentes types de définition

Frédéric Fadel Aspectize 17

Page 17: Orienté Objet : erreur historique ou voie à poursuivre ?

Quelques définitions…

Frédéric Fadel Aspectize 18

Académique

Historiq

ueAvouable

Vernacula

ire

Page 18: Orienté Objet : erreur historique ou voie à poursuivre ?

… Quelques définitions…

Frédéric Fadel Aspectize 19

Page 19: Orienté Objet : erreur historique ou voie à poursuivre ?

… Quelques "définitions"…

Frédéric Fadel Aspectize 20

Actually I made up the term "object-oriented", and I can tell you I did not have C++ in mind.  

I'm not against types, but I don't know of any type systems that aren't a complete pain, so I still like dynamic typing.

Page 20: Orienté Objet : erreur historique ou voie à poursuivre ?

… Quelques "définitions"…

Frédéric Fadel Aspectize 21

OOP to me means only messaging, local retention and protection and hiding of state-process, and extreme late-binding of all things.

It can be done in Smalltalk and in LISP. There are possibly other systems in which this is possible, but I'm not aware of them.

Page 21: Orienté Objet : erreur historique ou voie à poursuivre ?

… Quelques "définitions"

Frédéric Fadel Aspectize 22

I'm sorry that I long ago coined the term "objects" for this topic because it gets many people to focus on the lesser idea. The big idea is "messaging"...

The key in making great and growable systems is much more to design how its modules communicate rather than what their internal properties and behaviors should be.

Page 22: Orienté Objet : erreur historique ou voie à poursuivre ?

La définition triviale

Une formule :

Objet = Etat + Comportement

Trois grands principes : Encapsulation

Héritage

Polymorphisme

Frédéric Fadel Aspectize 23

Page 23: Orienté Objet : erreur historique ou voie à poursuivre ?

EncapsulationAbsolument nécessaire

Frédéric Fadel Aspectize 24

Page 24: Orienté Objet : erreur historique ou voie à poursuivre ?

L'encapsulation

Frédéric Fadel Aspectize 25

Page 25: Orienté Objet : erreur historique ou voie à poursuivre ?

L'encapsulation partout

Frédéric Fadel Aspectize 26

Page 26: Orienté Objet : erreur historique ou voie à poursuivre ?

… L'encapsulation partout …

Frédéric Fadel Aspectize 27

Page 27: Orienté Objet : erreur historique ou voie à poursuivre ?

… L'encapsulation partout …

Frédéric Fadel Aspectize 28

Page 28: Orienté Objet : erreur historique ou voie à poursuivre ?

… L'encapsulation partout …

Frédéric Fadel Aspectize 29

Page 29: Orienté Objet : erreur historique ou voie à poursuivre ?

L'encapsulation comment ?

Frédéric Fadel Aspectize 30

Architecture

EtudeAnalys

e

Patien

ceExpérience

Page 30: Orienté Objet : erreur historique ou voie à poursuivre ?

L'encapsulation comment ? Classe Module Fonction Continuation Closure Assembly Process Application SI

Frédéric Fadel Aspectize 32

Page 31: Orienté Objet : erreur historique ou voie à poursuivre ?

L'encapsulation comment ?

Frédéric Fadel Aspectize 33

LANGAG

E

TECHNIQUE

MOT CLÉDESIGN PATTERN

Page 32: Orienté Objet : erreur historique ou voie à poursuivre ?

PolymorphismeDétail technique ou nécessaire pour la souplesse ?

Frédéric Fadel Aspectize 34

Page 33: Orienté Objet : erreur historique ou voie à poursuivre ?

Polymorphisme partout

Frédéric Fadel Aspectize 35

Page 34: Orienté Objet : erreur historique ou voie à poursuivre ?

Polymorphisme partout

Frédéric Fadel Aspectize 36

Page 35: Orienté Objet : erreur historique ou voie à poursuivre ?

Polymorphisme partout

Frédéric Fadel Aspectize 37

Page 36: Orienté Objet : erreur historique ou voie à poursuivre ?

Polymorphisme partout

Frédéric Fadel Aspectize 38

Page 37: Orienté Objet : erreur historique ou voie à poursuivre ?

Polymorphisme partout

Frédéric Fadel Aspectize 39

Page 38: Orienté Objet : erreur historique ou voie à poursuivre ?

Polymorphisme

Favorise la réutilisation

Diminue le couplage

Augmente la souplesse

Nécessite des abstractions

immuables Pas forcément facile

Frédéric Fadel Aspectize 41

Page 39: Orienté Objet : erreur historique ou voie à poursuivre ?

Polymorphisme comment ? Ce n'est qu'un moyen de retarder le choix de la

fonction à appeler, de la dynamiser !

Interface

Événement

Lambda

Closure

Generic

Langages de script

Réflexion…Frédéric Fadel Aspectize 42

Page 40: Orienté Objet : erreur historique ou voie à poursuivre ?

Polymorphisme comment ?

Frédéric Fadel Aspectize 43

Mét

hode

s vi

rtue

lles Classes abstraites

Page 41: Orienté Objet : erreur historique ou voie à poursuivre ?

HéritageErreur historique totale

Frédéric Fadel Aspectize 44

Page 42: Orienté Objet : erreur historique ou voie à poursuivre ?

Héritage

Frédéric Fadel Aspectize 45

Classificationa priori

Page 43: Orienté Objet : erreur historique ou voie à poursuivre ?

Héritage : le mammifère n'existe pas !

Frédéric Fadel Aspectize 46

Page 44: Orienté Objet : erreur historique ou voie à poursuivre ?

L'existence précède l'essence

Frédéric Fadel Aspectize 47

Classificationa posteriori

Page 45: Orienté Objet : erreur historique ou voie à poursuivre ?

Héritage : la relation 'est un'

Frédéric Fadel Aspectize 48

John Bonachon

Père de famille

Cycliste

Client d'Amazon

Myope

Auteur de SF

Page 46: Orienté Objet : erreur historique ou voie à poursuivre ?

Héritage (en informatique)

Frédéric Fadel Aspectize 49

Syntaxiquement

simple !

Conceptuellement

dépourvu de sens !Favorise le

couplage fort ! Tout ou rien !

Technique fragile, qui vieillit mal.

Page 47: Orienté Objet : erreur historique ou voie à poursuivre ?

Héritage : l'absent de l'industrie

Frédéric Fadel Aspectize 50

Automobile

Electronique

Electroménager…

Urbanisme

Pratiquent tous

l'assemblage

Page 48: Orienté Objet : erreur historique ou voie à poursuivre ?

Du rigide au souple

Une histoire accélérée des technologies et approches de développement des 30 dernières années

Frédéric Fadel Aspectize 51

Page 49: Orienté Objet : erreur historique ou voie à poursuivre ?

du rigide au souple…

Frédéric Fadel Aspectize 52

Page 50: Orienté Objet : erreur historique ou voie à poursuivre ?

… Evolution…

Frédéric Fadel Aspectize 53

Rigide Souple

Physique Logique

Statique Dynamique

Page 51: Orienté Objet : erreur historique ou voie à poursuivre ?

Les années 1980Les années "objet"

Frédéric Fadel Aspectize 54

Page 52: Orienté Objet : erreur historique ou voie à poursuivre ?

L'informatique rigide

Frédéric Fadel Aspectize 55

Allouer tôt libér

er tard S'occuper des détails

Page 53: Orienté Objet : erreur historique ou voie à poursuivre ?

Les années C++

Frédéric Fadel Aspectize 56

Page 54: Orienté Objet : erreur historique ou voie à poursuivre ?

Les années 1990Les années "composant"

Frédéric Fadel Aspectize 57

Page 55: Orienté Objet : erreur historique ou voie à poursuivre ?

Un peu plus souple

Une formule :

Composant = Interface + Implémentation Interface : Partie publique -> immuable -> déclarative

Implémentation : Partie privée -> évolutive ->

impérative

Deux Technologies compliquées : COM

CORBAFrédéric Fadel Aspectize 58

Page 56: Orienté Objet : erreur historique ou voie à poursuivre ?

Les années composants

Frédéric Fadel Aspectize 59

+ Encapsulation + Polymorphisme

Héritage abandonné

+ Modularité Distribution

AOP

MTS

Multi-langage

Page 57: Orienté Objet : erreur historique ou voie à poursuivre ?

Web

Frédéric Fadel Aspectize 60

Page 58: Orienté Objet : erreur historique ou voie à poursuivre ?

Les années 2000Les années "service"

Frédéric Fadel Aspectize 61

Page 59: Orienté Objet : erreur historique ou voie à poursuivre ?

L'informatique souple

Frédéric Fadel Aspectize 62

Allouer

tard libérer tôt S'occup

er du métier

Page 60: Orienté Objet : erreur historique ou voie à poursuivre ?

Objet serveur sans état

Durée de vie courte

La notion d'instance et d'identité "perd"

de son importance

Services de Données

Services de Traitements

CRUD abandonné ? (historisation)

JSON (état client)Frédéric Fadel Aspectize 63

Page 61: Orienté Objet : erreur historique ou voie à poursuivre ?

Objet technique

Frédéric Fadel Aspectize 64

Oui c'est un objet

Page 62: Orienté Objet : erreur historique ou voie à poursuivre ?

Objet métier

Frédéric Fadel Aspectize 65

objet

données

Page 63: Orienté Objet : erreur historique ou voie à poursuivre ?

Objet métier

Frédéric Fadel Aspectize 66

Un clientDonnée

Un serviceTraitement

objet

objet

Page 64: Orienté Objet : erreur historique ou voie à poursuivre ?

Les années 2010 ?Les années "cloud"

Frédéric Fadel Aspectize 67

Page 65: Orienté Objet : erreur historique ou voie à poursuivre ?

Le futur ?

Frédéric Fadel Aspectize 68

Impérative (1937)Déclarative (1936)

Page 66: Orienté Objet : erreur historique ou voie à poursuivre ?

Le futur ?

Frédéric Fadel Aspectize 69

Abandon des variables ?Abandon de la Pile ?

Abandon des boucles ?

Abandon des références ?

Page 67: Orienté Objet : erreur historique ou voie à poursuivre ?

5 slides pour conclure !Erreur historique ? Ou voie à poursuivre ?

Frédéric Fadel Aspectize 70

Page 68: Orienté Objet : erreur historique ou voie à poursuivre ?

Langages

Frédéric Fadel Aspectize 71

Assembleur

C++

C# 1

C# 4

F#

Javascript

Page 69: Orienté Objet : erreur historique ou voie à poursuivre ?

Technologies

Frédéric Fadel Aspectize 72

Objet ComposantService

Page 70: Orienté Objet : erreur historique ou voie à poursuivre ?

IHM

Frédéric Fadel Aspectize 73

API Windows

MFC VB

Winforms

WPF

Silverlight

HTML

HTML 5CSSCSS 3

XAML

Page 71: Orienté Objet : erreur historique ou voie à poursuivre ?

Mémoire - Machines

Frédéric Fadel Aspectize 74

Phys

ique

Mémoi

re

Virtue

lle

Machin

e

Virtuell

e

Garbage Collection

Cloud

Resource

Colle

ction

Page 72: Orienté Objet : erreur historique ou voie à poursuivre ?

Avant-Après

Frédéric Fadel Aspectize 75

.netClasses

paramétrées

Ajax Http

Page 73: Orienté Objet : erreur historique ou voie à poursuivre ?

Alors…

Frédéric Fadel Aspectize 76

Erreur Historique ?ou

Voie à poursuivre ?