Vous êtes sur la page 1sur 35

Dveloppement

Prof : Idrissi

1/35

Prof : Idrissi

Pourquoi les objets ?

Une premire raison est dapporter une solution pour rpondre la complexit
croissante des techniques informatiques (bureautique, CAO, robotique,
imagerie mdicale, cartographie ..).
La deuxime ide est de diminuer le foss smantique entre le monde rel et
sa reprsentation informatique.
Les gens voquent leur environnement en terme d'objets. Si lon parle de
quelque chose en lui attribuant des proprits, ou si cette chose doit tre
manipule, alors il faut la reprsenter sous forme dobjet.

Foss smantique

habite

conduit

Avec les objets, on se focalise sur la chose, sur ce qui doit tre manipul. De
ce fait, concevoir par objets, cest dabord rpondre la question : De quoi
parle-t-on ? avant de rpondre la question : Que veut-on faire ? .

2/35

Prof :Idrissi

Paradigme classique

Dcoupage net entre donnes et traitement

Traitement 1
Donnes
Traitement 2

Pour faire face la complexit, les amliorations portent sur :


le dveloppement de la programmation structure avec utilisation de
sous-programmes
lutilisation de bases de donnes avec utilisation de requtes
Programme 1

Sous-programme

SQL

SGBD
Programme 2

Programme 3

Il y a rupture entre le monde rel et sa reprsentation informatique.

3/35

Prof :Idrissi

Paradigme1 objet

Un programme devient un ensemble de petites entits informatiques qui


interagissent et communiquent par messages.
Chacune de ces entits informatiques est autonome et comprend une partie
donnes et une partie traitement.
Cest ce quon appelle un objet.

L'utilisateur apparat lui-mme comme un premier objet qui dialogue


naturellement avec les autres objets par le biais d'icnes, d'une souris, de
menus droulants et de botes de dialogue.

Paradigme : du gr. paradeigma exemple . Modle thorique de pense qui oriente la recherche et la rflexion
scientifiques.

4/35

Prof :Idrissi

Les origines

1967:
SIMULA
Cest le premier vritable langage objet. Ses auteurs cherchaient avant
tout disposer dun outil permettant de simuler des systmes physiques
ou des organisations humaines. N Oslo en Norvge, il fut conu
partir d'ALGOL. Il en reprit la syntaxe et le fonctionnement gnral. Les
adjonctions portrent sur la dfinition de classes et lapparition d'une
entit informatique regroupant une structure de donnes et l'ensemble
des procdures pour la manipuler : l'objet.
1972-1976:
SMALLTALK
En 1972, au centre de recherche de XEROX Palo Alto, Adle
GOLDBERG et un prodige de l'informatique: Alan KAY se donnent pour
objectif de raliser un ordinateur rellement convivial avec une nouvelle
interface homme-machine.
Ils dfinissent linterface graphique que nous connaissons aujourdhui:
souris, cran bit-map haute rsolution.
Tout cet environnement se devait d'tre facilement programmable. Ils
dcident donc de dvelopper un langage qui reprenne l'essentiel des
caractristiques de SIMULA en ajoutant le concept denvoi de message:
SMALLTALK-72.
Le langage senrichit avec le concept dhritage : SMALLTALK-76.
1980: Alan KAY rejoint le groupe APPLE.
1984:
sortie de LISA, puis du MACINTOSH, premier succs de linterface
graphique.
En parallle : travaux de lcole scandinave . Langage C (1972).
1983:
C++
Bjarne STROUSTRUP avait appris programmer en SIMULA.
Lorsqu'il rejoint les laboratoires Bell, berceau du langage C, il se mit en
devoir d'ajouter une couche objet au-dessus du C.
1989:
EIFFEL
C'est un langage franais conu par Bertrand MEYER, mais il fut d'abord
commercialis en Californie.

et bien dautres, comme JAVA : langage interprt qui facilite la portabilit.


5/35

Prof :Idrissi

Historique des langages objets

ALGOL 1960
Ecole scandinave
Notion de programmation structure

LISP 1956-58
Intelligence artificielle
Manipule des objets

SIMULA 1967

PASCAL

SMALLTALK 76
C

OBJECT
PASCAL

ADA

EIFFEL
1989

OBJECTIVE C

C++

JAVA

CLOS

Langages Orients Objets

6/35

Prof :Idrissi

Concepts de base

La programmation par objets repose sur trois concepts de base.

Un concept de modlisation avec les notions


dobjets, de classes et dinstances

Un concept dactivation avec les notions


denvoi de messages et de mthodes

Un concept de classification avec les notions


de gnralisation et dhritage

Ces principes sont simples, mais combins ils permettent une trs grande
puissance dexpression.

7/35

Prof :Idrissi

L'objet

Le monde dans lequel nous vivons est constitu dobjets matriels de toutes
sortes dont la taille est trs variable (du grain de sable aux toiles). Notre
perception intuitive de ce qui constitue un objet est donc fonde sur le concept
de masse.
Par extension, il est tout fait possible de dfinir dautres objets sans masse
mais visibles, comme des fentres sur un cran, des figures gomtriques,
mais aussi des concepts comme les comptes en banque, les quations
mathmatiques.

On appelle rification lopration essentielle de lapproche objet par


laquelle quelque chose est reprsente informatiquement sous la forme
dun objet.
Rifier : (Petit Robert) transformer en chose ; syn. de chosifier .

Cet objet informatique peut se caractriser ainsi :


Objet = identit + tat + comportement

L identit permet de diffrencier chaque objet parmi les autres.


Ltat est reprsent par des attributs (ou champs, variables d'instances).
Le comportement est assur par des oprations.

Attributs

Oprations

8/35

Prof :Idrissi

9/35

Prof :Idrissi

Exemples d'objets

uneVoiture

Un objet voiture

Attributs :
couleur = bleue
poids = 979 kg
puissance = 12 CV
capacit carburant = 50 l
conducteur = Dupont
vitesse instantane = 50 km/h
Oprations :
dmarrer ()
dplacer ()
mettreEssence ()

Un objet fentre

Un objet compte
unCompte

uneFentre

Attributs :
dbit
crdit
titulaire

Attributs :
point-sup-gauche
point-inf-droit
texture
en-tte

Oprations :
dposer (somme)
retirer (somme)
avoirSolde ()

Oprations :
activer ()
fermer ()
rduire (coeff)
agrandir (coeff)
dplacer (lieu)

10/35

Prof :Idrissi

Classe

Plusieurs objets peuvent possder une structure et des comportements


semblables.
La classe factorise les caractristiques communes de ces objets et, comme
son nom le suggre, permet den btir une classification.

Exemple de classes

Les concepts d'objet et de classe sont interdpendants. En effet, un objet


appartient une classe et une classe dcrit la structure et le comportement
communs d'objets.

Les classes ont un double rle :


dcrire et classer de faon abstraite des objets
servir de moule objets (mcanisme dinstanciation).

11/35

Prof :Idrissi

Instance

Une instance est un reprsentant particulier dune classe.


Elle possde les mmes attributs et les mmes oprations que les autres
instances de la classe. Les attributs prennent des valeurs distinctes dans
chacune des instances.

Classe

Instances ...

L'instanciation est le processus par lequel on cre de nouveaux objets,


partir du modle dfini par une classe.
Exemple: en Smalltalk, la cration dun objet se fait en utilisant la mthode
new :
Compte new (Dupont, 5000)
cre une instance de la classe compte avec initialisation des attributs nom et
solde.

12/35

Prof :Idrissi

Identification de l'objet

Un objet est unique dans le systme.


Son identit est reprsente par un identifiant (object identifier ou OID).
Cet identifiant nest ni modifiable, ni rutilisable car il est gnr par le systme
lors de la cration de lobjet.
Non seulement il n'est pas ncessaire, mais il est prfrable de ne pas
numrer de faon explicite les identifiants.

Personne

Personne

ID personne: ID
nom: chane
ge: entier

nom: chane
ge: entier

Incorrect

Correct

Ne pas confondre l'identifiant interne de lobjet avec un attribut lgitime, comme


le numro de scurit sociale, qui lui a un sens dans le monde rel.

13/35

Prof :Idrissi

Etat de l'objet

Reprsente laspect statique de lobjet.

Etat d'un objet : situation stable pendant la vie d'un objet


durant laquelle il peut excuter une activit (qui dure),
et/ou attendre un vnement.

Cest la valeur des attributs considrs dans leur ensemble, qui reflte l'tat
dans lequel se trouve l'objet un instant donn.

Exemples
La voiture :

uneVoiture

uneVoiture

Bleue

0 km/h

Bleue

50 km/h

l'arrt

Le compte :

en mouvement

unCompte

unCompte

5000
6500

3200
3000

crditeur

dbiteur

Ltat dun objet spcifie galement le contexte dans lequel les vnements
sont reus.
Les ractions de lobjet sen trouveront parfois affectes.

14/35

Prof :Idrissi

Envoi de messages

La partie dynamique des objets est assure par la notion denvoi de


messages.
Envoyer un message un objet, cest lui dire ce quil doit faire.

Dupont

RenseigneAge

18

RenseigneAge

Dupont

Cest lobjet rcepteur qui traite le message en activant la mthode qui


correspond au nom du slecteur indique par lmetteur.
Pour tre capable de l'excuter, lobjet rcepteur peut avoir besoin
dinformations supplmentaires. Le message contient alors des paramtres.

La structure d'un message est donc la suivante:


Rcepteur

Slecteur

15/35

Paramtres ...

Prof :Idrissi

Mthodes

Une mthode est un petit programme qui excute une opration.


Les mthodes sont dcrites au niveau des classes.
Chacune un nom (slecteur) qui permet de lactiver.
Exemple en Smalltalk :

Classe Personne
renseigneAge
connatreAge

renseigneNom

bonAnniversaire

connatreNom

Slecteurs et mthodes :
renseigneAge : nbAnne
age := nbAnnes
connatreAge
^ age

Remarque (SMALLTALK):

renseigneNom : unNom
nom := unNom

Par dfaut, lobjet retourn par une


mthode est lobjet receveur du message.

connatreNom
^ nom

Si on veut que la mthode retourne le


rsultat de lvaluation dune expression
donne, il faut prcder cette expression
du symbole ^.

bonAnniversaire
age := age + 1

16/35

Prof :Idrissi

Comportement de l'objet

Lensemble des mthodes permet dassurer le comportement des objets.

Exemples de mthodes dfinissant le comportement d'une voiture :


Dmarrer ()
Se dplacer ()
Mettre de l'essence ()

Les mthodes peuvent tre publiques ou prives.


Les mthodes publiques constituent l'interface de l'objet avec l'extrieur.
Les mthodes prives sont invisibles de lextrieur.
Donnes prive
Mthodes publiques

Mthodes prives

17/35

Prof :Idrissi

Encapsulation

Lencapsulation consiste masquer aux utilisateurs dun objet les dtails


relevant de son implmentation (vue interne ou ralisation), et de ne laisser
accessible que la vue externe ou interface.
Voiture

Dmarrer

kilomtrage
niveau dessence

Se dplacer
Mettre de lessence

Principe : les attributs ne doivent pas tre accessibles de lextrieur.


Seules les oprations sont habilites modifier les valeurs des attributs.
En consquence, un changement de format de ces attributs ne se rpercute
pas lextrieur.

Dautre part, les oprations peuvent apporter une valeur ajoute et non pas se
contenter dune simple restitution daccs aux attributs encapsuls.
exemple : on ne peut pas faire baisser le niveau dessence sans se dplacer,
ce qui modifie aussi le kilomtrage.

Il est important de noter :


quun objet nest connu que par son interface : les services quil peut
rendre
quil est autonome : il est responsable des actions quil sait effectuer.

18/35

Prof :Idrissi

Encapsulation - avantages

L'intrieur de l'objet est protg. L'accs direct aux donnes est


impossible. Il faut passer par une mthode (publique) constituant l'interface
de l'objet pour avoir accs aux donnes. Ceci garantit la scurit et lintgrit
des donnes.

La complexit est dissimule. Le programmeur n'a plus se proccuper ni


du dtail de la structure des donnes, ni de la manire dont sont effectus
les traitements.

La maintenance est simplifie. La porte des modifications est limite


lintrieur de lobjet concern. Limplmentation dune opration peut voluer
sans modifier linterface de lobjet.

Les changes avec l'extrieur sont codifis. Seules les caractristiques


que lon souhaite offrir aux utilisateurs potentiels de lobjet figurent dans la
partie externe. Cet interface constitue un contrat entre lobjet et ses clients,
cest--dire entre le concepteur et ses utilisateurs.

19/35

Prof :Idrissi

Classification
C'est dans l'invention de la hirarchie de classes que rside le vritable gnie
de la technologie oriente objet. Il se trouve que la connaissance humaine est
justement structure de cette manire.
Les hirarchies de classes ou classifications permettent de grer la
complexit en ordonnant les objets au sein d'arborescences de classes
d'abstraction croissante.
Les classes abstraites constituent lessence dune application.
Cest l que lessentiel se passe.
La hirarchisation des classes correspond une classification des
essences .
Exemple: larbre de Porphyre (philosophe du 3me sicle aprs J.C.)
Substance

Substance incorporelle

Corps

Corps anim

Corps inerte

Esprit

Pierre

Animal

Animal rationnel

Etre humain

Ange

20/35

Prof :Idrissi

21/35

Prof :Idrissi

Gnralisation

La gnralisation consiste factoriser les lments communs d'un ensemble


de classes dans une classe plus gnrale : la super-classe ou sur-classe.

Classes abstraites

Vhicule

Vhicule terrestre

Voiture

Vhicule arien

Camion

Avion

Hlicoptre

La gnralisation est une dmarche assez difficile car elle demande une bonne
capacit d'abstraction.
La mise au point d'une hirarchie optimale est dlicate et itrative.
Les arbres de classes sont construit en partant des feuilles qui appartiennent
au monde rel alors que les niveaux suprieurs sont des abstractions
construites pour ordonner et comprendre.

22/35

Prof :Idrissi

Spcialisation

La spcialisation permet de capturer les particularits d'un ensemble d'objets


non discrimines par les classes dj identifies. Les nouvelles
caractristiques sont reprsentes par une nouvelle classe, sous-classe d'une
des classes existantes.

L'exemple suivant montre une classification partielle des quipements de


transmission, selon deux grandes familles. Les dispositifs concrets sont ajouts
dans la hirarchie par spcialisation du parent le plus proche.

Transmission

Transmission continue

Variateur

Transmission discrte

Drailleur

Bote de vitesse

Extension par spcialisation

23/35

Prof :Idrissi

Gnralisation et spcialisation

La gnralisation et la spcialisation sont deux points de vue antagonistes du


concept de classification.
Elles expriment dans quel sens une hirarchie de classes est exploite. Dans
toute application relle, les deux points de vue sont mis en uvre
simultanment.

Vhicule
N plaque
Poids total

GENERALISATION

Camion
Charge

Voiture
portes

24/35

SPECIALISATION

Bus
capacit

Prof :Idrissi

Classes abstraites
Abstraction
Classe abstraite : qui ne peut pas avoir dinstance
Classe concrte : qui peut avoir des instances
Positionnement
Classe terminale: qui ne possde pas de sous-classe
Classe non-terminale: qui possde des sous-classes
Une bonne rgle pour avoir des classifications quilibres et extensibles:
Faire en sorte que seules les classes terminales soient
concrtes,
et que les classes non-terminales soient abstraites.

mauvais

Compte

Compte
devise

bon

Compte

Compte
devise

25/35

Compte
courant

Prof :Idrissi

Hritage

L'hritage est le mcanisme de transmission des proprits


d'une sur-classe vers ses sous-classes.

Dans cet exemple :


Tout se passe comme si la sous-classe
Compte d'pargne tait dcrite ainsi :
Compte

Compte
crdit
dbit

crdit
dbit

dposer
retirer
avoirSolde

dposer
retirer
avoirSolde

Compte d'pargne

Compte d'pargne

crdit
dbit
Taux

Taux
calculerIntrts

dposer
retirer
avoirSolde
calculerIntrts

On appelle aussi les sur-classes des anctres et les sous-classes des


descendants.
La flche est oriente en direction de l'anctre et ne porte aucun nom
particulier. Elle signifie toujours : "est_un" (en anglais "is_a" ou ISA).
Dans notre exemple, un compte d'pargne "est_un" compte.
Un autre procd mnmonique est : "tous les trucs sont des machins".
Ici, tous les comptes d'pargne sont des comptes.

26/35

Prof :Idrissi

Hritage remarques

Daprs J. Ferber :

La notion d'hritage peut tre comprise comme un


mcanisme de copie virtuelle non monotone.
En effet, tout se passe comme si toute la sur-classe tait recopie dans la
sous-classe (mcanisme de copie), mme si cela n'est pas effectivement
implment de cette manire (copie virtuelle), et la recopie ne s'effectue que
pour les informations qui ne sont pas dfinies au niveau de la sous-classe
(copie non monotone).
De ce fait, la dfinition du mcanisme d'hritage peut s'exprimer ainsi :
1. une sous-classe dispose implicitement de tous les attributs et de toutes les
mthodes dfinies dans la sur-classe.
2. les attributs et les mthodes dfinies dans la sous-classe sont prioritaires
par rapport aux attributs et mthodes de mme nom dfinis dans la surclasse.

Lhritage vite la duplication et facilite la rutilisation.

Un petit mot sur le vocabulaire :


Un problme dans ce concept de sous-classe et super-classe vient du fait que
les mots super et sous ont des significations qui ne sont pas vraiment
en rapport avec la manire dont on les comprend.
Le concept super fait souvent penser quelque chose ayant plus de capacit
que le reste. Dans ce contexte, il peut vouloir dire quasiment le contraire.
La classe qui hrite est souvent enrichie avec de nouvelles caractristiques et
dispose donc de plus de capacits que sa super-classe.
Mais un descendant peut aussi tre une restriction ou une spcialisation de
son anctre, c'est--dire un sous-ensemble.
En fait, c'est ce cas qui est l'origine du concept sous : les instances de sousclasses reprsentent un sous-ensemble des instances de la super-classe.

27/35

Prof :Idrissi

Recherche dune mthode

Lorsqu'un objet reoit un message lui demandant d'excuter une mthode qui
n'est pas dfinie dans sa propre classe, il remonte automatiquement dans la
hirarchie des classes pour retrouver cette mthode.
Si l'objet finit par trouver la mthode, il l'excute. Si, au contraire, il atteint
bredouille le sommet de la hirarchie, il rpond par un message d'erreur :
"j'aimerais bien vous aider, mais je ne comprend pas ce que vous voulez".

Je l'ai !

Ni l

elle n'est pas l

"Imprimer A"

28/35

Prof :Idrissi

Surcharge

Considrons un programme qui permet de dessiner un grand nombre de


formes diffrentes.
Un langage de programmation classique exigerait de donner un nom de
mthode par forme dessiner.
Le fait de demander une forme de sauto-dessiner deviendrait un exercice
complexe :
Si x type "cercle"
Alors dessinerCercle (x)
Sinon
Si x type "rectangle"
Alors dessinerRectangle (x)
Sinon
Si x type "triangle"
Alors dessinerTriangle (x)

Finsi

En langage objet, chaque type de forme est reprsent par une classe
diffrente.
Grce une technique que lon appelle la surcharge, on utilise le mme nom
pour les mthodes permettant de dessiner, lintrieur de chacune des
classes.
Le fait de demander une forme de sauto-dessiner devient tonnamment
simple :
message: [x ,dessineToi]
dessineToi

dessineToi

dessineToi

Cercle

Rectangle
29/35

dessineToi

Triangle
Prof :Idrissi

Cest au rcepteur dappliquer cette mthode sa manire propre.

30/35

Prof :Idrissi

Polymorphisme

On appelle polymorphisme (du grec signifiant plusieurs formes )


le fait de dissimuler des traitements diffrents derrire la mme
interface.

Le vritable intrt du polymorphisme est de permettre lvolution du logiciel


avec un minimum de modifications.
Ajoutons une nouvelle classe (octogone) lexemple prcdent :
Figure

Cercle
DessineToi ( )

Rectangle

Triangle

Octogone

DessineToi ( )

DessineToi ( )

DessineToi ( )

Il suffira de coder la mthode dessineToi dans la classe octogone.


Les objets existants nont mme pas besoin de savoir que lon a ajout une
nouvelle forme. Ils ne sont en rien affects par la modification.

Cet exemple montre limportance de la dissimulation de linformation.


Chaque objet ne doit pas trop en savoir sur les autres.

31/35

Prof :Idrissi

Redfinition de mthode

Redfinir une opration hrite avec un code diffrent.

Figure

Tourner ( )

Cercle

Rectangle

Triangle

Dessiner ( )
Tourner ( )

Dessiner ( )

Dessiner ( )

Considrons l'opration Tourner.


Elle est dfinie dans la classe Figure et est applicable toutes les formes.
Pour des raisons de performance, on peut tre amen "surcharger" cette
opration dans la sous-classe Cercle pour qu'elle soit une opration nulle.

32/35

Prof :Idrissi

Masquage de mthode

Supposons une hirarchie de la classe des vhicules comprenant dans la


super-classe vhicule une mthode rviser. Ajoutons maintenant la sousclasse avion.

Vhicule
Rviser

Voiture

Camion

Bus

Avion

La rvision dun avion nayant rien de semblable celle des autres vhicules, la
manire de rsoudre ce problme consiste redfinir Rviser pour la sousclasse avion afin de tenir compte de ce cas particulier.

Vhicule
Rviser

Voiture

Camion

Bus

Avion
Rviser

La mthode Rviser de la classe Vhicule traite le cas gnral.


La mthode Rviser de la classe Avion traite l'exception.
Cette technique de redfinition d'une mthode dans une sous-classe est un cas
particulier de surcharge, o le mme nom de mthode est utilis pour dcrire
des oprations diffrentes. On parle de supplantation, car la mthode de la
sous-classe supplante la version plus gnrale.
Lutilisation de la surcharge est controverse au sein de la communaut objet.

33/35

Prof :Idrissi

Association

Au niveau objet,
certains attributs reprsentent des liens (ou relations) avec d'autres objets.
Ces liens durent au cours du temps et impliquent que deux objets connaissent
chacun l'existence de l'autre.
Dupont : personne

:Voiture
couleur

conducteur

vhicules

Au niveau classe,
l'association exprime une connexion smantique bidirectionnelle entre
classes.
Voiture

Personne
conducteur >
< propritaire

Lassociation peut tre exprime dans les deux sens :


conducteur : de voiture vers personne ;
propritaire : de personne vers voiture.

Mta-modle :
classes.

un lien entre objets est une instance dassociation entre

34/35

Prof :Idrissi

Agrgation

L'agrgation est une relation "compos-composant" ou "partie de" dans


laquelle les objets reprsentant les composants d'une chose sont associs
un objet reprsentant l'assemblage entier.
(agrgation vient du latin aggregare qui signifie assembler).
C'est est une forme particulire d'association qui exprime un couplage fort
entre des instances dobjets.

AGREGATION

COMPOSITION
Vhicule

"partie de"

Chssis
Numro

N plaque
Poids total

Moteur
puissance
cylindre

"compos de"

Roue
diamtre

Remarque:
On dit agrgation quand on exprime cette relation du composant (la partie) vers
le compos (l'ensemble).
On dit composition quand on exprime cette relation du compos vers le
composant. (ce qui traduit le fait qu'un objet est compos de plusieurs autres).

35/35

Prof :Idrissi