Orienté Objet : erreur historique ou voie à poursuivre ?
-
Upload
fredy-fadel -
Category
Technology
-
view
936 -
download
1
description
Transcript of Orienté Objet : erreur historique ou voie à poursuivre ?
L'orienté objet Erreur historique ou voie à poursuivre ?
Frédéric Fadel Aspectize 1
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
Pourquoi ce titre ?
Frédéric Fadel Aspectize 3
Pourquoi ce titre ?
Frédéric Fadel Aspectize 4
?
?
??
?
?
??
?
?
?
??
?
?
?
… Pourquoi ce titre ?
Frédéric Fadel Aspectize 5
Civilisation
Démocratie
Capitalisme
Monothéisme
Monogamie
L'évolutionAtomisme
Le boson de Higgs
Industrie
Finance
… Pourquoi ce titre ?
Frédéric Fadel Aspectize 6
… Pourquoi ce titre ?
Frédéric Fadel Aspectize 7
Crise logicielMythe ou réalité ? Crise ou Sentiment de crise ?
Frédéric Fadel Aspectize 8
Crise Logiciel
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
Crise Logiciel : Réalité ?
Estimations optimistes Ergonomie insuffisante Projets ratés
Fox Meyer C3 Copernic Chorus …
Frédéric Fadel Aspectize 12
Sentiment de Crise
Frédéric Fadel Aspectize 13
C'est sim
ple
mais…Présentation
Traite
ments
Données
Sentiment de Crise
Ce dont le Businessa besoin.Avec ses invariants.
Ce que réalise l’IT. Avec ses invariants.
Sentiment de Crise
Frédéric Fadel Aspectize 15
TDDAOP
DDD
DDDD
MDDAOM
ORM MVC
MVVM
OCP
SRP
LSP
ISPDIP …
TFDCQRS
L'orienté objetQuelques définitions
Frédéric Fadel Aspectize 16
Différentes types de définition
Frédéric Fadel Aspectize 17
Quelques définitions…
Frédéric Fadel Aspectize 18
Académique
Historiq
ueAvouable
Vernacula
ire
… Quelques définitions…
Frédéric Fadel Aspectize 19
… 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.
… 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.
… 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.
La définition triviale
Une formule :
Objet = Etat + Comportement
Trois grands principes : Encapsulation
Héritage
Polymorphisme
Frédéric Fadel Aspectize 23
EncapsulationAbsolument nécessaire
Frédéric Fadel Aspectize 24
L'encapsulation
Frédéric Fadel Aspectize 25
L'encapsulation partout
Frédéric Fadel Aspectize 26
… L'encapsulation partout …
Frédéric Fadel Aspectize 27
… L'encapsulation partout …
Frédéric Fadel Aspectize 28
… L'encapsulation partout …
Frédéric Fadel Aspectize 29
L'encapsulation comment ?
Frédéric Fadel Aspectize 30
Architecture
EtudeAnalys
e
Patien
ceExpérience
L'encapsulation comment ? Classe Module Fonction Continuation Closure Assembly Process Application SI
Frédéric Fadel Aspectize 32
L'encapsulation comment ?
Frédéric Fadel Aspectize 33
LANGAG
E
TECHNIQUE
MOT CLÉDESIGN PATTERN
PolymorphismeDétail technique ou nécessaire pour la souplesse ?
Frédéric Fadel Aspectize 34
Polymorphisme partout
Frédéric Fadel Aspectize 35
Polymorphisme partout
Frédéric Fadel Aspectize 36
Polymorphisme partout
Frédéric Fadel Aspectize 37
Polymorphisme partout
Frédéric Fadel Aspectize 38
Polymorphisme partout
Frédéric Fadel Aspectize 39
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
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
Polymorphisme comment ?
Frédéric Fadel Aspectize 43
Mét
hode
s vi
rtue
lles Classes abstraites
HéritageErreur historique totale
Frédéric Fadel Aspectize 44
Héritage
Frédéric Fadel Aspectize 45
Classificationa priori
Héritage : le mammifère n'existe pas !
Frédéric Fadel Aspectize 46
L'existence précède l'essence
Frédéric Fadel Aspectize 47
Classificationa posteriori
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
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.
Héritage : l'absent de l'industrie
Frédéric Fadel Aspectize 50
Automobile
Electronique
Electroménager…
Urbanisme
Pratiquent tous
l'assemblage
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
du rigide au souple…
Frédéric Fadel Aspectize 52
… Evolution…
Frédéric Fadel Aspectize 53
Rigide Souple
Physique Logique
Statique Dynamique
Les années 1980Les années "objet"
Frédéric Fadel Aspectize 54
L'informatique rigide
Frédéric Fadel Aspectize 55
Allouer tôt libér
er tard S'occuper des détails
Les années C++
Frédéric Fadel Aspectize 56
Les années 1990Les années "composant"
Frédéric Fadel Aspectize 57
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
Les années composants
Frédéric Fadel Aspectize 59
+ Encapsulation + Polymorphisme
Héritage abandonné
+ Modularité Distribution
AOP
MTS
Multi-langage
Web
Frédéric Fadel Aspectize 60
Les années 2000Les années "service"
Frédéric Fadel Aspectize 61
L'informatique souple
Frédéric Fadel Aspectize 62
Allouer
tard libérer tôt S'occup
er du métier
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
Objet technique
Frédéric Fadel Aspectize 64
Oui c'est un objet
Objet métier
Frédéric Fadel Aspectize 65
objet
données
Objet métier
Frédéric Fadel Aspectize 66
Un clientDonnée
Un serviceTraitement
objet
objet
Les années 2010 ?Les années "cloud"
Frédéric Fadel Aspectize 67
Le futur ?
Frédéric Fadel Aspectize 68
Impérative (1937)Déclarative (1936)
Le futur ?
Frédéric Fadel Aspectize 69
Abandon des variables ?Abandon de la Pile ?
Abandon des boucles ?
Abandon des références ?
5 slides pour conclure !Erreur historique ? Ou voie à poursuivre ?
Frédéric Fadel Aspectize 70
Langages
Frédéric Fadel Aspectize 71
Assembleur
C++
C# 1
C# 4
F#
Javascript
Technologies
Frédéric Fadel Aspectize 72
Objet ComposantService
IHM
Frédéric Fadel Aspectize 73
API Windows
MFC VB
Winforms
WPF
Silverlight
HTML
HTML 5CSSCSS 3
XAML
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
Avant-Après
Frédéric Fadel Aspectize 75
.netClasses
paramétrées
Ajax Http
Alors…
Frédéric Fadel Aspectize 76
Erreur Historique ?ou
Voie à poursuivre ?