Vous êtes sur la page 1sur 11

10/02/2011

1. Pourquoi utiliser les objets

Programmation classique
Un programme est conu comme un ensemble de modules fonctionnels (procdures ou fonctions) qui manipulent des donnes.
Chapitre 2 Principes de base Pourquoi utiliser les objets Comment trouver les objets. Comment dcrire les objets + les relations entre eux. Comment utiliser ces objets pour structurer les programmes. Paradigme objets & terminologie

Sparation complte entre code et donnes. Communication entre modules fonctionnels :


o o

par passage de paramtres par variables globales

Libre accs aux donnes par nimporte quel module.

Programmation Oriente Objets Programmation classique


Etat Centralis

Lapproche objet permet de : o amliorer la productivit des concepteurs / dveloppeurs et o rduire le cot de revient des applications.

Donnes

Donnes Donnes Code Code Code Rappels : Difficult de rutiliser du code dj crit et test. Maintenance coteuse (Instabilit,scurit, cot)
3

Donnes Donnes Code Donnes Code

Investissement (Homme-mois)

Approche Classique Approche Objet

Investissement initial

Taille ou fonctionnalit

Cot de production dune application informatique en fonction de sa taille et de ses fonctionnalits


4

10/02/2011

Intrt des objets


Extensibilit (maintenance) : les objets restent plus stables dans le temps Employ

1.1 Principe de rification

Rification = matrialiser un concept par un objet Un concept abstrait peut tre rifi
o

lvnement 10h45 une carte bleue t introduite

Une relation entre deux objets peut tre rifie


Gestion de la paie
o

Salaire

Ali possde la voiture immatricule 875 TU 129 est rifi dans le monde rel par une carte grise

Rifier un concept permet de le manipuler concrtement


Rification Nb dheures de travail Rutilisabilit : il faut pouvoir rutiliser des structures de donnes entires, non pas seulement les oprations Abstraction & Encapsulation
5

Question ouverte : quels concepts rifier ? Une bonne vision objet rifie les bons concepts

1.2 Principe dabstraction


Une abstraction fait ressortir les caractristiques dune structure qui la distinguent de tous les autres types de structures du domaine et donc procure des frontires conceptuelles rigoureusement dfinies par rapport au point de vue de lobservateur.

1.3 Principe dencapsulation

: Austin : Bleue Acclration :


Marque Couleur
Tourner volant => voiture tourne Freiner => voiture sarrte

: Volkswagen : Blanche Acclration :


Marque Couleur
Tourner volant => voiture tourne Freiner => voiture sarrte
7

Dfinition : Lencapsulation est le procd de sparation des lments dune abstraction qui constituent sa structure et son comportement. Elle permet de dissocier linterface contractuelle de la mise en uvre dune abstraction.

10/02/2011

Encapsulation

Encapsulation ()

Dans les programmes tels quon les a crits (et dcrits) jusqu prsent, les notions de type de donnes et de fonctions sont spares :
Types de donnes datatype1 dataType2 dataTypeN fonction1 fonction2 fonctionM Fonctions

Le principe dencapsulation consiste regrouper, dans un mme lment informatique, les aspects statique et dynamique (c.a.d. les donnes et les fonctions) spcifiques une entit. Cet lment informatique est appel : objet
Les [structures de] donnes dfinies dans un objet sont appeles les attributs de lobjet; Les fonctions [de manipulation] dfinies dans un objet sont appeles les mthodes de lobjet.
data1 data2 .

Aspect statique

Aspect dynamique

fonction1 fonction2 .

On a donc la relation fondamentale:


O les dataTypei sont des types de donnes (int, char, , et ceux dfinis par typedef), et les fonctionsj sont des fonctions utilisant ces types, par exemple : dataType2 fonction2( dataType1 x, dataType2 y)
9

OBJET = attributs + mthodes


10

Encapsulation ()

Encapsulation ()

En plus du regroupement des lments statique et dynamique [dune entit], lencapsulation permet de dfinir deux niveaux de perception :
Le niveau externe : perception de lobjet depuis lextrieur Le niveau interne : perception de lobjet depuis lintrieur
Prototype des mthodes Dclaration des attributs Elments privs Dfinition des mthodes Corps Interface

Interface ralisation

Le niveau externe, correspond la partie visible de lobjet; il est constitu des spcifications des lments [de lobjet] visibles de lextrieur (appel: lments publics ), savoir les prototypes et les dclarations de ses mthodes et attributs publics. Ce niveau reprsente donc linterface de lobjet avec lextrieur. Le niveau interne correspond limplmentation de lobjet; il est constitu des lments de lobjet visibles uniquement de lintrieur de cet objet (appels lments privs ). Ce niveau reprsente donc le corps de lobjet.

2 rles : - utilisateur : manipule les lments de labstraction qui constituent linterface - implanteur : ralise ce qui est encapsul

11

12

10/02/2011

2. Comment trouver les objets

Orient Objet
Reprsenter un systme comme un ensemble dobjets autonomes mais interagissant via des envois de messages Chaque objet reprsente un objet ou un concept de la vie relle a une identit unique et invariante a un tat caractris par la valeur de ses attributs propose des services sous la forme de mthodes excute un service lorsque lobjet reoit un message

partir du monde rel

13

14
Ch. 2 Principes de

Lapproche objet

Concept des objets

Les langages objets sont fonds sur la connaissance dune seule catgorie dentit informatique : lobjet. Dans un objet, traditionnellement ce sont les donnes qui deviennent prpondrantes.

Le monde est compos dentits qui collaborent


chauffeur Feu direction Bote de vitesse roue moteur roue Freins

On se pose dabord la question : "de quoi parle-t-on ?" et non pas la question "que veut-on faire ?", comme en programmation algorithmique.
15

Lapproche objet consiste rsoudre un problme en termes dobjets qui collaborent. Ces objets sont des abstractions des objets rels

16

10/02/2011

3. Comment dcrire les objets Objet concret : Une pile

Type Abstrait de Donne (TAD) = un ensemble

d'objets caractriss par les mmes oprations. Ces dernires oprent sur la structure de l'objet (appele reprsentation) qui est compose des donnes refltant l'tat de l'objet.
Exemple : Il en est ainsi pour un objet pile qu'on peut

dernier = dernier +1 TAB[dernier] = x; dernier

N+1

dernier = dernier -1 TAB[dernier] = x;

dernier 0 dbut P

manipuler par des oprations comme empiler, dpiler, sommet etc...

new(P) P.suiv = dbut; P.val=X; dbut = P


18

17

()

Type abstrait Spcification algbrique : Les piles dentiers


Type
o

Un programme qui ncessite l'usage d'une pile n'a besoin de connatre que les oprations mentionnes et qu'on appelle interface . Il n'a en effet pas besoin de savoir qu'une pile est un tableau (et encore moins d'y accder directement), ni mme de connatre le code des oprations, lequel peut varier selon la reprsentation. C'est cela l'abstraction. Ce principe place le programmeur un haut niveau de conception.

Pile

Pr-conditions

Fonctions : (oprations)
o o o o o

nouvelle : Pile empiler : Pile,int Pile depiler : Pile Pile sommet : Pile int vide : Pile Bool

o P Pile o depiler(P) : vide(P) vrai o sommet(P) : vide(P) vrai

Axiomes :

o P : Pile, x int, o vide(nouvelle()) = vrai o vide(empiler(P,x)) = faux o sommet(empiler(P,x)) = x o depiler(empiler(P,x)) = P

19

20

10/02/2011

3. (suite) Comment dcrire la relation entre objets

Cas 2 : Compteur Cyclique + Horloge

Cas 1 : les piles bornes Comment faut-il modifier cette spcification pour obtenir une pile borne de taille maximale capacite

Un compteur cyclique est un compteur born qui repart 0 quand il atteint sa borne suprieure. Le compteur kilomtrique dune voiture, les minutes, les secondes et les heures dune horloge sont des exemples. Dfinir la description du type abstrait Compteur Cyclique. Donner le moyen pour fixer la valeur maximale, pour incrmenter, pour remettre le compteur une valeur initiale. => dlgation
21 22

=> Extension

Cas 3 : Compte Bancaire

Cas 4 : Une pile dlments qcq

Pr-conditions

Types
compte

Axiomes :
P Personne, X Montant solde(nouveau(P,X)) = X titulaire(nouveau(P,X)) = P dbiter(P,X)) =

Types Pile[X] Fonctions : (oprations)


nouvelle : X Pile[X] empiler : Pile[X],X Pile[X] depiler : Pile[X] Pile[X] sommet : Pile[X] X vide : Pile[X] Bool
23

Fonctions : (oprations)

P Pile[X] depiler(P) vide(P) vrai sommet(P) vide(P)


vrai
Axiomes :

nouveau : Personne, Montant Compte Titulaire : Compte Personne solde : Compte montant dbiter : Compte, Montant Compte crditer : Compte, Montant Compte

Prconditions :
P Personne, X Montant Nouveau(P,X) Valeur(X) solde min. Dbiter(P,X) Valeur(X) Valeur(solde(P))

P Pile[X], x X, vide(nouvelle(X)) = vrai vide(empiler(P,x)) = faux sommet(empiler(P,x)) = x depiler(empiler(P,x)) = P


=> La gnricit
24

=> Association

10/02/2011

TA

4. Comment utiliser ces objets pour structurer des programmes


Identifier une encapsulation pour chaque TAD c.a.d un ensemble de structures de donnes dcrites par les oprations qui font partie de son interface officielle.

Trois formes de fonctions dans la spcification dun type abstrait T : 1. Constructeur : qcqchose

T(qcqchose)

exemple : nouvelle
2. Accesseur : T(qcqchose) x qcqchose

qcqchose
corps des mthodes

exemple : sommet, vide


3. Modifieur : T(qcqchose) x qcqchose

T(qcqchose)

exemple : empiler, depliler

structures de donnes (attributs)

interface
25 26

Objet concret : une pile

()

Un TAD, encapsule les oprations et cache la structure sous-jacente d'un objet. Ainsi, le programmeur consacrera ses efforts la solution d'un problme sans se proccuper des dtails inutiles. Il s'intressera ce qu'un objet peut fournir comme service et ignorera comment ces services sont raliss de faon concrte. Si p est une pile, on crira p.empiler(n), au lieu de quelque chose comme s = s+1; t[s]=n;
27 28

Encapsulation des Donnes et des Traitements dans un Objet

10/02/2011

Intrt

4. Comment utiliser ces objets pour structurer des programmes ()

attributs

attributs . mthodes .

Lintrt de la sparation entre niveau interne et externe est de donner un cadre plus rigoureux aux objets. Les objets ne peuvent tre utiliss quau travers de leur interface (niveau externe) De ce fait les ventuelles modifications apportes leur structure interne restent invisibles lextrieur

message

attributs . mthodes .

.
mthodes

attributs . mthodes .

29

30

5. Paradigmes objets & Terminologie

Qu'est-ce qu'une classe ?

Classes & Objets Linstanciation Lenvoi de message

Pour le philosophe
o o o o

VOITUR E?

Un artfact de la classification humaine ! Une classification en fonction d'un comportement ou d'attributs communs Un accord portant sur les descriptions et les noms des classes utiles La cration d'un vocabulaire ; nous communiquons ; nous pensons ! Une construction syntaxique nomme qui dcrit un comportement et des attributs communs Une structure de donnes qui inclut les donnes et les fonctions

Pour le programmeur orient objet


o o

31

32

10/02/2011

Les classes dobjet

Une grande partie de la puissance conceptuelle de lapproche objet vient de la fusion de ces deux notions.

Classe : Dfinition
Classe : Une classe regroupe les caractristiques (les primitives = attributs
et mthodes) communes des objets. Elle permet de crer des objets possdant des proprits communes. Mthodes
Modifieurs : ont un effet sur linstance mais ne produisent pas de rsultats. Accesseurs: ont un rsultat, gnralement pas deffet.

La structure de base de lapproche objet :

La Classe
Module
Ensemble de services Masquage de linformation Des liens entre classes

Type
utilise pour dclarer des objets exemple = Objet : Classe; ( i : integer )

Une classe reprsente la structure, le moule commun un ensemble dobjets Une classe est une abstraction dobjets

33

34

Qu'est-ce qu'un objet ? Dfinition de classes simples

Les donnes et les mthodes sont regroupes dans une classe Les mthodes sont publiques, les donnes prives classe Pile
{ Mthodes: empiler(int x) { T[++indice] = x; } depiler() { indice--; } ... Attributs: int T[Max]; int indice; }
Les mthodes publiques Dcrivent le comportement accessible Les champs privs Dcrivent l'tat inaccessible

Un objet est une instance d'une classe

35

36

10/02/2011

OBJETS Dfinitions
Objet : entit autonome modlisant laspect statique et dynamique dune
partie du monde rel Un objet peut reprsenter une ralit physique ( une voiture, un bateau ) ou virtuelle ( scurit sociale, un raisonnement )

OBJETS Dfinitions

attributs ( donnes membres ) : donnes caractrisant ltat de lobjet mthodes ( fonctions membres ) : oprations dfinissant le comportement de lobjet. Elles lui permettent dagir sur ces attributs et de ragir aux sollicitations extrieures identit : identifiant permettant indpendamment de son tat de le distinguer des autres

Chaque objet possde des attributs, des mthodes, une identit

Objet = tat + Comportement + Identit


37 38

Instanciation

OBJETS Exemples
Peugeot 106 de couleur grise immatricule 5039 TU 90 : Attributs : couleur = grise, marque = Peugeot, nim= 5039 TU 90 Mthodes : avancer ( ), reculer ( ) identit : XRE-HGFRT-KIUT- Renault espace de couleur verte immatricule 985 TU 97 : Attributs : couleur = verte, marque = Renault, nim = 985 TU 97 Mthodes : avancer ( ), reculer ( ) identit : HYU-XJKMP-PLTB-.

Instanciation = Passage de lindfini au dfini (par moulage) voiture


1717 TU 27 bleue 4 2CV 50 km/h Immatricule : couleur : roues : puissance : vitesse : acclrer freiner tourner reculer 6742 TU 28 grise 4 2CV 10 km/h

Linstance (Statique, Dynamique)= objet : ( selon lang. ex: Java) o Possde les proprits dfinies par sa classe o peut effectuer les oprations dfinies par sa classe
39 40
Ch. 2 Principes de

10

10/02/2011

Lenvoi de message

Un objet est une entit indpendante dont la structure est connue de lui seul, il ne peut pas, en principe, agir directement sur un autre objet. Il doit pour ce faire utiliser une des mthodes appartenant linterface de lobjet. Message = requte dont la satisfaction est la charge de lobjet auquel elle est adresse. Envoi de message = unique moyen de communiquer avec les objets.

Exemple : Send (MaVoiture, freiner );


C++, Java, C# : MaVoiture.freiner();
41

11

Vous aimerez peut-être aussi