Escolar Documentos
Profissional Documentos
Cultura Documentos
Approche
Objet
II-1
JMF
Approche Objet
En programmation
procdurale (Algol, ...)
Un programme = suite d'instructions
excutes par une machine.
Son excution = ces instructions agissent
sur des donnes.
DONNES
Fonction 1
Fonction 2
Fonction 3
Les fonctions et procdures travaillent "
distance" sur les donnes.
Accent mis sur les actions. Il s'agit de
rpondre la question: Que veut on faire ?
dissociation entre donnes et fonctions = >
problme lorsqu'on change les structures de
donnes.
II-2
JMF
Approche Objet
En programmation
procdurale (suite)
Les procdures s'appellent entre elles et
peuvent modifier les mmes donnes =>
problme lorsqu'on veut modifier une
procdure: comment avait elle t appele ?
Finalement conception plat de spaghettis
dans les appels de procdures. Il serait bien
de "responsabiliser" nos parties de
programmes
D'o une autre vision de la programmation
II-3
JMF
Approche Objet
Programmation par
objets
Un programme = une socit d'entits
Son excution : les entits collaborent pour
rsoudre le problme final en s'envoyant
des messages.
une entit = un objet qui prend en compte sa
propre gestion (objet responsable)
DONNES
fonctions oprant
sur les donnes
Messages
DONNES
DONNES
fonctions oprant
sur les donnes
fonctions oprant
sur les donnes
JMF
Approche Objet
Les objets
La question est: De quoi parle t - on ?
Quelles sont les entits qui interviennent
dans mon problme ?
exemple :
modliser un logiciel de trafic routier
les entits sont :
- les feux tricolores
- les carrefours
- les vhicules
- les agents de la circulation.
Lorsqu'un feu tricolore passe au vert il
envoie cette connaissance (= ce message)
l'agent post ce carrefour. L'agent prend
une dcision et en informe (envoi de
messages) les chauffeurs des vhicules.
II-5
JMF
Approche Objet
Notions manipules
dans le monde des
objets
Objets
Encapsulation
Classe
Hritage
Polymorphisme
II-6
JMF
Approche Objet
Objet
objet
=
donnes + oprations sur ces donnes
(mthodes)
=
variables de "type abstrait"
=
entit du domaine du problme
Un objet est compos de 2 parties :
- partie interface: oprations qu'on
peut faire dessus (partie publique)
- partie interne (intime): donnes
sensibles de l'objet (partie prive)
Les utilisateurs (i.e. les lments
extrieurs) de l'objet ne voient que la partie
interface.
Ces entits doivent tre indpendantes
II-7
JMF
Approche Objet
Objet (suite)
exemple d'objets :
la renault R21 bleue immatricule 2245
CDV 75 de mon chef de service est un objet
objet R21_de_mon_chef
genre : Renault
immatriculation : 2245 CDV 75
NbPlaces : 5
propritaire: chef de service
s_arreter()
avancer()
fin objet
II-8
JMF
Approche Objet
Encapsulation
Deux sens dans le monde des objets:
Encapsulation
=
regroupement de code et de donnes
masquage d'information au monde extrieur
(data hiding)
Avantages
meilleure modularit
l'unit de modularit est l'objet. Les
communications entre modules sont traites
par les oprations d'interface.
meilleure scurit
a) le code ne peut s'appliquer que sur des
types de donnes bien prcis et pas sur
d'autres donnes.
b) certaines parties de l'objet sont
inaccessibles pour certains (et n'ont
d'ailleurs pas tre connues)
meilleure conception ds le dbut
donnes et oprations sont spcifies en
mme temps.
meilleure lisibilit
donnes et dclarations des oprations sont
crites au mme endroit.
II-9
JMF
Approche Objet
Encapsulation
Avantages
simplicit apparente pour l'utilisateur
I'utilisateur ne connat que ce qui lui est
ncessaire. Il n'a pas connaissance du
contenu interne (intime!!) de certaines
donnes contenu qui peut tre norme.
meilleure portabilit
a) les parties masques pourront tre
optimises puis redonnes l'utilisateur
sans que celui ci ne change son code
puisque ces parties n'ont pas t utilises
directement
b) Dans ces parties masques on pourra
mettre des points dpendant machines et
implmenter ces points pour chaque
machine (=> portage facilit: on sait quelle
est la partie de code porter)
vision homogne des objets
Quel que soit l'environnement, l'utilisateur
a une mme vision des choses.
II-10
JMF
Approche Objet
Classe
classe
=
modle dcrivant le contenu et le
comportement des futurs objets de la classe
=
ensemble d'objets
le contenu = les donnes
le comportement = les mthodes
Exemple:
la classe des vhicules, la classe des
camions, des automobiles.
La classe des automobiles peut tre dcrite
par
classe Automobile
genre
immatriculation
NbPlaces
propritaire
s_arreter()
avancer()
fin classe
II-11
JMF
Approche Objet
VARIABLE
OBJET
TYPE
CLASSE
II-12
JMF
Approche Objet
Hritage
Notion rattache aux classes
Hritage
=
construire une classe partir d'une (d')
autre(s)
hritage simple
classe Vhicule
genre
immatriculation
propritaire
s_arreter()
avancer()
fin classe
classe automobile
NbPlaces
liste_passagers ()
fin classe
classe camion
tonnage
typeChargement()
finclasse
JMF
Approche Objet
Hritage (suite)
hritage multiple
classe automobile
NbPlaces
liste_passagers ()
fin classe
classe camion
tonnage
typeChargement()
finclasse
classe camionnette
type_d_utilisation
fin classe
II-14
JMF
Approche Objet
Hritage (fin)
L'hritage est la possibilit de pouvoir
reprendre intgralement tout ce qui a dj
t fait et de pouvoir l'enrichir : vision
descendante.
L'hritage est la possibilit de regrouper en
un seul endroit ce qui est commun
plusieurs : les modifications des lments
communs ne se font qu' un seul endroit :
vision ascendante.
Il s'utilise dans "les deux sens":
vers le haut
surtout lors de l'analyse O.O: on regroupe
dans une classe ce qui est commun
plusieurs classes.
exemple:
dans la classe vhicule on regroupe les
caractristiques communes aux camions et
aux automobiles
vers le bas
surtout lors de la rutilisabilit.
La classe vhicule tant dfinie, on peut la
reprendre intgralement pour construire la
classe bicyclette
II-15
JMF
Approche Objet
II-16
JMF
Approche Objet
Polymorphisme
On veut crer un paint :
zone de dessin
II-17
JMF
Approche Objet
Polymorphisme (suite)
classe FormeGomtrique
polymorphe dessiner()
polymorphe effacer()
fin classe
classe Cercle
dessiner()
effacer()
fin Cercle
classe Carr
dessiner()
effacer()
fin Carr
classe Triangle
dessiner()
effacer()
fin Triangle
II-18
JMF
Approche Objet
Polymorphisme (suite)
Si on a un ensemble de formes gomtriques
et qu'on veuille crire: rafraichir()
Pour toute forme dans zone de dessin
effacer()
Pour toute forme dans zone de dessin
dessiner()
remarque
A l'aide du polymorphisme, la
dtermination de la bonne fonction
effacer() et dessiner() est faite
automatiquement au moment de
l'EXCUTION. On ne s'en soucie pas au
moment du codage.
II-19
JMF
Approche Objet
Polymorphisme (suite)
Comparaison programmation
procdurale vs P.O.O
En programmation procdurale on aurait
crit :
dessiner(type_dessin)
{
switch (type_dessin)
case CARRE:
break ;
case CERCLE:
break ;
case TRIANGLE:
break ;
}
JMF
Approche Objet
Polymorphisme (fin)
Avantages
Les fonctions ayant la mme smantique ont
mme nom.
Programmation plus souple : si on veut
ajouter une classe Rectangle, il suffit de le
faire (!!) et d'implanter la mthode
dessiner() dans cette classe. En
programmation procdurale, il faut
reprendre le code de dessiner() (encore
faut il l'avoir !!) et l'enrichir (sans le
dtriorer !!).
Au moment d'crire rafraichir(), le
programmeur n'a pas connatre tous les
types d'objets : l'adjonction d'une forme
gomtrique (Rectangle) se fait sans
modification de la fonction rafraichir()
i.e. la fonction rafraichir() fonctionne
mme sur du code qui sera implant plus
tard !!
II-21
JMF
Approche Objet
Programmation Oriente
Objet
Programmation O.O = programmation dans
laquelle les programmes sont organiss
comme des ensembles d'objets cooprants.
Chaque objet reprsente une instance d'une
classe.
Les classes appartiennent une hirarchie
suivant la relation d'hritage
II-22
JMF
Approche Objet
Analyse et Conception
Oriente Objet
Dijkstra: "la technique appliquer pour
matriser la complexit du logiciel est
connue depuis trs longtemps : divide et
impera (diviser pour rgner)"
Descartes (Le discours de la mthode) :
"Diviser chacune des difficults que
j'examinerai en autant de parcelles qu'il se
pourrait et qu'il serait requis pour mieux
les rsoudre"
Donc dcomposer en parties de plus en plus
petites chacune d'elles pouvant tre
affines. Pour comprendre un niveau donn
d'un systme il ne faut avoir qu'
apprhender quelques parties (et non pas
toutes) du systme.
Dcomposition algorithmique :
L'accent est mis sur les actions effectuer
pour rsoudre le problme
L'analyse oriente objet est une mthode
d'analyse qui examine les besoins d'aprs la
perspective des classes et objets trouvs
dans le vocabulaire du domaine du problme
II-23
JMF
Approche Objet
II-24
JMF
Approche Objet
Un processus d'analyse
oriente objet
Dans cet ordre :
1) rpertorier les entits du domaine du
problme et leur comportement
2) En dduire les classes auxquelles ces
entits appartiennent.
3) Architecturer l'ensemble des classes en
regroupant les donnes ou procdures
communes certaines classes dans des
classes dont on hrite.
II-25
JMF
Approche Objet
Quitter
Sauvegarder
II-26
JMF
Approche Objet
bouton_radio1
(FM)
bouton_radio2
(GO)
bouton_radio3
(PO)
JMF
Approche Objet
Interfaces graphiques
Quand vous voyez ceci :
II-28
JMF
Approche Objet
Interfaces graphiques
(suite)
II-29
JMF
Approche Objet
classes
des
conteneurs
classes
des non
conteneurs
conclusion
Les 2 arbres dessins ont peu de choses
voir l'un l'autre.
Le premier est l'architecture de l'interface
i.e. le placement des divers composants
graphiques les uns par rapport aux autres,
le second est un arbre d'hritage de
classes donn une bonne fois par les
distributeurs d'objets graphiques (OSF pour
Motif, SUN pour Java)
II-30
JMF
Approche Objet
Bibliographie sur
l'orient objet
Concept gnraux et mthodes
Conception et programmation par objets:
Jacques Ferber ed Herms.
Conception oriente objet et applications:
Grady Booch ed InterEditions.
http://cedric.cnam.fr/~farinone/Java2810/7.html
jusqu'
http://cedric.cnam.fr/~farinone/Java2810/16.html
II-31
JMF