Chapitre 1 : Introduction la POO
Introduction la
Programmation Orient e Objet
Objectifs sp cifiques :
Pr senter les volutions qui ont men s lav nement de la POO
Exposer lint r t de lapproche objet
Introduire les concepts objets
El ments de contenu :
Evolution de la programmation
Int r t de lapproche objet
Le mod le Objet
Les concepts objets
Volume horaire : 1h30
Page | 1
Chapitre 1 : Introduction la POO
1. Introduction
Depuis plusieurs ann es, le mat riel est de moins en moins cher, et de plus en plus puissant. Des
logiciels de plus en plus complexes doivent tre r alis s dans des d lais de plus en plus courts,
tout en maintenant le meilleur niveau de qualit possible.
Comment faire pour r pondre ces exigences contradictoires ?
R ponse : calquer les techniques de d veloppement du mat riel.
En ce qui concerne le mat riel, la solution a t de sous-traiter : Acqu rir des composants
(alimentation, carte m re, disque dur..) d j prouv (d j test et dont la fiabilit est assur e)
aupr s de vendeurs r put s et se charger uniquement de lassemblage des machines.
Les constructeurs achetaient des composants pr conditionn es cest- -dire des entit s ayant
des propri t s (poids, taille,&), une fonction particuli re et fournissant un ensemble de
services travers des interfaces d finies.
Si nous voulons reproduire le m me sch ma au niveau logiciel, il faudra donc mettre laccent
sur les points suivants :
Modulariser : d composer un probl me en un ensemble dentit s autonomes
permettant ainsi de faciliter la r utilisation et de limiter (et localiser) les modifications
lors des volutions.
Encapsuler : Faire abstraction du m canisme interne des composants afin de nen
pr senter que les services dont a besoin lutilisateur (linterface).
Mod liser :
La POO sappuie sur la m me id e.
D composer un programme en un ensemble dentit s (les objets) qui interagissent afin de
r aliser une ou plusieurs t ches. Chaque objet poss de certaines propri t s et peut accomplir
certaine op rations.
Page | 2
2. Evolution de la programmation
Chapitre 1 : Introduction la POO
1950s
1960s
1980s
1990s
20??s
Paradigme
Assembleur Proc dural
Orient Objet
Componentiel Orient
Agent
Entit
Donn es
Types abstrait
Objet
Composant
Agent
Contr le
Appel de
fonction
Envoie de
message
M thodes
Interaction
Call-back
Advertisement
Composition
modules
Hi rarchies
Frameworks Groupes
Programmation par branchement Goto : (Assembleur)
Un simple test sur les valeurs des donn es :
o
Interruption de l'ex cution du jeu d'instructions,
o Branchement vers une autre partie du programme.
Inconv nient :
Si nous sommes en pr sence dune grosse application, le programme r aliser sera alors
gros et complexe
Lisibilit , maintenance et r utilisation du code ne sont pas favoris es.
Programmation Proc durale structur e PPS : C, Pascal
La question qui se pose : Que doit faire le programme ?
Programmation bas e sur les traitements : Commencer par identifier lensemble des
fonctions permettant de r soudre le probl me. Puis, d duire partir des fonctions la
mani re de stocker les donn es.
Algorithme + structure de donn es = Programme
D composition d'une t che en termes de sous-programmes.
o Analyse du probl me de mani re descendante ("Top-Down").
S parer les donn es des traitements Subdivision bas e sur les traitements.
Page | 3
Chapitre 1 : Introduction la POO
Avantages : meilleur lisibilit
Inconv nients :
La sp cialisation des fonctions ne favorise pas leur r utilisation.
Ressemble peu notre mani re de penser :
Vue algorithmique d'un programme donc tr s pr s du langage de la machine
Le programmeur doit faire un effort cognitif pour interpr ter ce qu'il veut
mod liser pour tre "compris" par la machine
Peu intuitif lors de l'analyse d'un code existant
Tend g n rer du code "Spaghetti"
La maintenance et l'ajout de nouvelles fonctionnalit s demandent de modifier ou
d'ins rer des s quences dans ce qui existe d j
Peu devenir complexe tr s rapidement
Abstraction absente (ou presque)
Programmation Objet : C++, Java
La question qui se pose : De quoi se compose mon programme ?
Programmation bas e sur les donn es : Le programmeur commence dabord par
identifier les objets manipul s par le programme. Et cest seulement apr s quil associe
un traitement chacun des objets.
Un programme = une soci t d'entit s
Son ex cution : les entit s collaborent pour r soudre le probl me final en s'envoyant des
messages.
une entit = un objet qui prend en compte sa propre gestion (objet responsable)
Liaison in vitable entre donn es et proc dures op rant sur ces donn es.
Avantages
Faciliter le d veloppement en mode boite noire
Maximiser la localit des changements
Programmation modulaire : Permettre la r utilisation de code
Tr s proche de notre mani re de penser : Lid e de base de lApproche Orient e Objet
(A.O.O.) repose sur l'OBSERVATION de la fa on dont nous proc dons dans notre vie de
tous les jours.
Page | 4
Chapitre 1 : Introduction la POO
3. Les concepts fondamentaux de la POO
Les concepts objets se traduisent par les notions suivantes :
Objet / Classe
Encapsulation
Abstraction
H ritage
Polymorphisme
Ces concepts ont un impact direct sur :
La qualit du syst me
Le co t de d veloppement et de maintenance
Advertisement
Le d lai de d veloppement et de maintenance
3.1.
Lobjet
D finition
Un objet en POO est une entit informatique utilis e pour mod liser informatiquement
des "objets" de la vie courante ou des concepts.
o Exemples dobjets concrets : ville, v hicule, tudiant, un bouton sur l cran.
o Exemples dobjets conceptuels : date, r union, planning de r servation.
Un objet poss de :
o Une identit unique (permet de distinguer un objet dun autre)
o Un tat interne donn par des valeurs de variables (ou attributs)
Attributs d crivent l tat de lobjet un instant donn
o Un comportement (capacit s daction de lobjet) donn par des fonctions ou
sous-programmes, appel s m thodes (ou op rations).
Ces m thodes d finissent le comportement de lobjet (ce quil peut faire,
comment il peut le faire&) et ses r actions aux stimulations externes.
Exemple : Lobjet Montre
Une montre peut tre caract ris e par :
les attributs : Heure, Minutes, Secondes
Page | 5
Chapitre 1 : Introduction la POO
Les m thodes : setHeure(int h), setMinute(int m), setSeconde(int s), int getHeure(), int
getMinute(), int getSeconde(), void R glerAlarme()
Interaction entre objet
Les objets interagissent et communiquent entre eux par lenvoi de messages
Les m thodes publiques dun objet correspondent aux messages que lon peut lui
envoyer
Les messages sont caract ris s par
o objet cible du message
o nom de la m thode d clencher
o param tres de cette m thode
La r ponse la r ception dun message consiste ex cuter la m thode associ e
Figure 1.1 : Repr sentation de linteraction entre objets
3.2.
La classe
D finition
Une classe est la description des caract ristiques communes tous les objets.
Classe = sch ma/moule/mod le dobjets
Une classe est un mod le de d finition pour des objets
o ayant m me structure (m me ensemble d'attributs),
o ayant m me comportement (m mes op rations, m thodes),
o ayant une s mantique commune.
Page | 6
Chapitre 1 : Introduction la POO
Notation UML
Nom Classe
// d claration des attributs
//d claration des m thodes
Montre
- Heure : int ;
- Minutes :int ;
- Secondes : int ;
+setHeure(int h)
+setMinute(int m)
+setSeconde(int s)
+getHeure() : int
+getMinute() : int
+getSeconde() : int
Linstanciation
Les objets (instances) sont cr s (instanci s) partir de "moules" : les classes.
Figure 1.2 : Classe Moule
Classe = g n rateur dobjets par instanciation, on peut fabriquer des objets ob issant ce
sch ma/moule/mod le.
Exemple
Montre
- Heure : int ;
- Minutes :int ;
- Secondes : int ;
Advertisement
+setHeure(int h)
+setMinute(int m)
+setSeconde(int s)
+getHeure() : int
+getMinute() : int
+getSeconde() : int
M3 : Montre
- Heure : 18 ;
- Minutes :30 ;
- Secondes : 30 ;
Instance
M1 : Montre
- Heure : 9 ;
- Minutes :15 ;
- Secondes : 35 ;
M2 : Montre
- Heure : 10 ;
- Minutes :45 ;
- Secondes : 15 ;
Figure 1.2 : Exemple dinstanciation de la classe Montre
Page | 7
Chapitre 1 : Introduction la POO
3.3.
Labstraction
Cest un processus qui consiste montrer uniquement les caract ristiques utiles dun
objet, du point de vue de lobservateur et cacher les d tails superflus.
Exemple :
Prenons lexemple dune montre qui doit indiquer lheure. Lutilisateur na besoin de connaitre
que les diff rents l ments (afficheur et boutons) qui lui permettrons de consulter lheure, de la
modifier, de r gler une alarme&Il na nullement besoin de savoir comment cette montre est
mont e, ni quel m canisme permet de la faire fonctionner.
Abstraction de la montre
Encapsulation
Figure 1.4 : Exemple dabstraction/encapsulation dune montre
3.4.
Lencapsulation
D finition
Il y a deux facettes lencapsulation :
` Cest le fait de regrouper au sein dune m me entit (lobjet), les donn es (attributs)
et les traitements (m thodes).
Objet = donn es (attributs) + traitements (M thodes)
Traitements (m thodes)
Donn es (attributs)
Etat de lobjet
Comportement de lobjet
Un objet
a Cest galement un processus qui permet lisolement et la dissimulation des d tails
dimpl mentation.
Page | 8
Chapitre 1 : Introduction la POO
Lencapsulation permet de d finir deux niveaux de perception :
o Le niveau externe : Interface de lobjet : partie (visible) par les utilisateurs de
lobjet :
- prototype des m thodes et attributs accessibles hors de lobjet.
o Le niveau interne : d tails dimpl mentation de lobjet
- m thodes et attributs accessibles uniquement depuis lint rieur de
lobjet .
Interface de lobjet
Etat +impl mentation
(cach s)
Comportement (public)
Lobjet
Lacc s aux donn es ( tat) de lobjet ne peut tre fait quau travers des
m thodes.
Les donn es sont priv es (cach es)
Les m thodes publiques d finissent linterface de de lobjet.
Exemple : Montre
setHeure(int h) setMinute (int m) setSeconde(int s)
int heure
int minutes
int secondes
Advertisement
Lencapsulation de lobjet Montre
Niveau de visibilit
L'encapsulation permet de d finir des niveaux de visibilit des l ments de la classe. Il existe
trois niveaux de visibilit :
Page | 9
Chapitre 1 : Introduction la POO
Publique: les fonctions de toutes les classes peuvent acc der aux donn es ou aux
m thodes d'une classe d finie avec le niveau de visibilit public. Il s'agit du plus bas
niveau de protection des donn es.
Prot g : l'acc s aux donn es est r serv aux fonctions des classes h riti res, c'est- -
dire par les fonctions membres de la classe ainsi que des classes d riv es.
Priv : l'acc s aux donn es est limit aux m thodes de la classe elle-m me. Il s'agit du
niveau de protection des donn es le plus lev .
Int r t de lencapsulation
Lint r t de regrouper les traitements et les donn es est :
de permettre une meilleure visibilit et une meilleure coh rence au programme.
doffrir une plus grande modularit .
Lint r t de s parer les niveaux interne et externe est
de facilite l volution dune application : on peut modifier limpl mentation des attributs
dun objet sans modifier son interface, et donc la fa on dont lobjet est utilis .
de garantir lint grit des donn es, car elle permet dinterdire, ou de restreindre, lacc s
direct aux attributs des objets.
3.5.
LH ritage
Il permet de cr er une nouvelle classe partir d'une classe d j existante.
Le nom "H ritage" indique le fait que la classe fille (la classe nouvellement cr e)
contient les attributs et les m thodes de sa classe m re (la classe dont elle d rive). En
effet, les attributs et les m thodes de la classe m re (appel e aussi superclasse) sont
h rit s par la classe fille (appel e aussi classe d riv e). Toutefois, de nouveaux attributs
et m thodes peuvent tre ajout s.
On parle dh ritage simple lorsquune classe fille ne poss de quune classe m re.
On parle dh ritage multiple lorsquune classe fille poss de plusieurs classes m res.
Page | 10
Chapitre 1 : Introduction la POO
H ritage simple
H ritage multiple
Figure 1.5 : Exemple dh ritage simple / multiple
C++ permet lh ritage multiple, JAVA ne le permet pas
3.6.
Le Polymorphisme
D finition
Le nom de polymorphisme vient du grec et signifie qui peut prendre plusieurs
formes .
Alors que l'h ritage concerne les classes (et leur hi rarchie), le polymorphisme est
relatif aux m thodes des objets.
Le polymorphisme repr sente la facult dune m thode pouvoir sappliquer des
objets de classes diff rentes.
Le polymorphisme est un m canisme qui permet une sous classe de red finir une
m thode dont elle a h rit tout en gardant la m me signature de la m thode.
Exemples
Dans une soci t , le calcul du salaire dun administratif se fait selon une formule fixe alors que
celui dun commercial d pend dune commission sur la quantit vendu. On peut utiliser la m me
m thode calcul_salaire pour ces deux classes diff rentes et avoir un comportement diff rent
selon lobjet de la classe qui a appel la m thode.
Page | 11
Chapitre 1 : Introduction la POO
Figure 1.6 : Exemple repr sentant le polymorphisme
Int r t du polymorphisme
Le polymorphisme augmente la g n ricit , et donc la qualit du code.
Page | 12