Vous êtes sur la page 1sur 55

CHAPITRE 3:

PRINCIPES DE BASE OO

Olfa FAKHFAKH POO – ENSI – 2011/2012


Plan
2

 Pourquoi utiliser les objets

 Comment trouver les objets

 Comment décrire les objets + les relations entre eux.

 Comment utiliser ces objets pour structurer les programmes

 Paradigme objets & terminologie


1. Pourquoi utiliser les Objets :
Programmation Classique
3

• Un programme est conçu comme un ensemble de modules


fonctionnels (procédures ou fonctions) qui manipulent des
données.

• Séparation complète entre code et données.

• Communication entre modules fonctionnels :


o par passage de paramètres
o par variables globales

 Libre accès aux données par n’importe quel module.


1. Pourquoi utiliser les Objets :
Programmation Classique
4
5
1. Pourquoi utiliser les Objets :
Programmation Orientée Objets

L’approche objet permet de :


• améliorer la productivité des concepteurs / développeurs
• réduire le coût de revient des applications.
Investissement Approche Classique

Approche Objet

Investissement
initial
Taille ou fonctionnalité

• Coût de production d’une application informatique


en fonction de sa taille et de ses fonctionnalités
1. Pourquoi utiliser les Objets :
Intérêt des Objets Objet 1 Message

6
Objet 3

Structure d'une application objet : Objet 2

 flots de messages entre un certain nombre d'objets,

 les objets sont " presque " indépendants les uns des autres.

 Cette indépendance (l'une des grandes forces de l'approche


O.O.) permet la réutilisation des objets par de nombreuses
applications.
 Les objets sont plus stables que les spécifications qui définissent
leurs interactions
 les applications sont plus simples à écrire et à faire évoluer.
1. Pourquoi utiliser les Objets :
Intérêt des Objets
7
1. Pourquoi utiliser les Objets :
Principe de réification
8

 La réification consiste à transformer ou à transposer une


abstraction en un objet concret, à appréhender un concept
comme une chose concrète.
 Décision que prend le modélisateur de considérer
une portion du réel comme un objet
 Le principe de réification pragmatique formulé par Jacques
FERBER :

"Si l'on parle de quelque chose en lui attribuant des


propriétés, ou si cette chose doit être manipulée, alors il
faut la représenter sous forme d'objet."
1. Pourquoi utiliser les Objets :
Principe de réification
9

 Réification= matérialiser un concept par un objet


 Un concept abstrait peut être « réifié » :
 l’événement « à 10h45 une carte bleue à été introduite »

 Une relation entre deux objets peut être « réifiée »


 « Ali possède la voiture immatriculée 875 TU 129 » est
réifié dans le monde réel par une carte grise

 Réifier un concept permet de le manipuler concrètement


 Question ouverte : quels concepts réifier ?
 Une «bonne» vision objet réifie les «bons» concepts…
1. Pourquoi utiliser les Objets :
Exemple de réification
10

Une personne travaille pour une entreprise


– Cette relation est décrite par des informations
1. Pourquoi utiliser les Objets :
Intérêt des Objets
11
1. Pourquoi utiliser les Objets :
Principe d’abstraction
12

 Une abstraction fait ressortir les caractéristiques d’une


structure qui la distinguent de tous les autres types de
structures du domaine
 procure des frontières conceptuelles rigoureusement définies
par rapport au point de vue de l’observateur.

Marque : Austin Marque : Volkswagen


Couleur : Bleue
Couleur : Blanche
Accélération :
Accélération :
Tourner volant => voiture tourne
Freiner => voiture s’arrête Tourner volant => voiture tourne
Freiner => voiture s’arrête
1. Pourquoi utiliser les Objets :
Principe d’abstraction
13

 Pour être véritablement intéressant, un objet doit permettre un


certain degré d’abstraction.
 Le processus d’abstraction consiste à identifier pour un
ensemble d’éléments :
 des caractéristiques communes à tous les éléments

 des mécanismes communs à tous les éléments

 description générique de l’ensemble considéré : se focaliser sur


l’essentiel, cacher les détails.
1. Pourquoi utiliser les Objets :
Principe d’abstraction
14

 L'abstraction est une ignorance sélective

« L'objectif de l'abstraction n'est pas d'être vague, mais


de créer un nouveau niveau sémantique dans lequel il
est possible d'être très précis ».
Edsger Dijkstra
1. Pourquoi utiliser les Objets :
Principe d’encapsulation
15

Définition :

 L’encapsulation est le procédé de séparation des éléments


d’une abstraction qui constituent sa structure et son
comportement.

 Elle permet de dissocier l’interface contractuelle de la mise en


œuvre d’une abstraction
1. Pourquoi utiliser les Objets :
Principe d’encapsulation
16
1. Pourquoi utiliser les Objets :
Principe d’encapsulation
17

 Le principe d’encapsulation consiste à regrouper, dans un


même élément informatique, les aspects statique et dynamique
(c.a.d. les données et les fonctions) spécifiques à une entité.
data1
 Cet éléments informatique est appelé : « objet » data2
 Les [structures de] données définies dans ….
un objet sont appelées les attributs de l’objet; fonction1
 Les fonctions [de manipulation] définies dans fonction2
….
un objet sont appelées les méthodes de l’objet.

 On a donc la relation fondamentale:

OBJET = attributs + méthodes


1. Pourquoi utiliser les Objets :
Principe d’encapsulation
18

En plus du regroupement des éléments statique et dynamique


[d’une entité], l’encapsulation permet de définir deux niveaux de
perception :
• Le niveau externe : perception de l’objet depuis l’extérieur
• Le niveau interne : perception de l’objet depuis l’intérieur
1. Pourquoi utiliser les Objets :
Principe d’encapsulation
19

 Le niveau externe : correspond à la partie visible de l’objet.


 il est constitué des spécifications des éléments [de l’objet]
visibles de l’extérieur (appelé: « éléments publics »), à savoir
les prototypes et les déclarations de ses méthodes et attributs
publics.
 Ce niveau représente donc l’interface de l’objet avec
l’extérieur.

 Le niveau interne : correspond à l’implémentation de l’objet.


 il est constitué des éléments de l’objet visibles uniquement de
l’intérieur de cet objet (appelés « éléments privés »).
 Ce niveau représente donc le corps de l’objet.
1. Pourquoi utiliser les Objets :
Principe d’encapsulation
20
Orienté Objet
21

Représenter un système comme


un ensemble d’objets autonomes mais
interagissant via des envois de messages

 Chaque objet
• représente un objet ou un concept de la vie réelle
• a une identité unique et invariante
• a un état caractérisé par la valeur de ses attributs
• propose des services sous la forme de méthodes
• exécute un service lorsque l’objet reçoit un message
2. Comment trouver les objets
22

 À partir du monde réel


 Tout ce sur quoi l’attention peut se porter

…que l’on peut décrire


…dont on peut parler
2. Comment trouver les objets :
Exemples d’objets
23

• Des objets physiques


• Une voiture, une maison, etc.

• Un dossier, un plan de travail, un agenda, etc.

• Des objets conceptuels ou conventionnels


• Un compte bancaire, un contrat, etc.

• Un risque, un projet, etc.

• L’argent, la responsabilité, l’action, etc.


2. Comment trouver les objets :
L’approche objets
24

• Les langages objets sont fondés sur la connaissance d’une


seule catégorie d’entité informatique : l’objet.
• Dans un objet, traditionnellement ce sont les données qui
deviennent prépondérantes.

On se pose d’abord la question : "de quoi parle-t-on ?"


et non pas la question "que veut-on faire ?",
comme en programmation algorithmique.
2. Comment trouver les objets :
L’approche objets
25

 L’approche objet consiste à résoudre un problème en termes


d’objets qui collaborent.

 Ces objets sont des abstractions des objets réels


2. Comment trouver les objets :
Concept des objets
26

 Le monde est composé d’entités qui « collaborent »

 L’approche objet consiste à résoudre un problème en termes


d’objets qui collaborent.
 Ces objets sont des abstractions des objets réels
3. Comment décrire les objets
27

 Type Abstrait de Donnée (TAD) :


 un ensemble d'objets caractérisés par les mêmes opérations.
 Ces dernières opèrent sur la structure de l'objet
(appelée représentation) qui est composée des données
reflétant l'état de l'objet.

• Exemple : Il en est ainsi pour un objet pile qu'on peut


manipuler par des opérations comme empiler, dépiler,
sommet etc...
3. Comment décrire les objets
Objet concret : une Pile
28

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

dernier x
0

début

new(P)
P
x P.suiv = début; P.val=X;
début = P
3. Comment décrire les objets
Objet concret : une Pile
29

 Un programme qui nécessite l'usage d'une pile n'a besoin de


connaître que les opérations mentionnées et qu'on appelle
interface .

 Il n'a en pas besoin savoir qu'une pile est un tableau ( et


encore moins d'y accéder directement), ni même de
connaître le code des opérations, lequel peut varier selon la
représentation.
 C'est cela l'abstraction.
 Ce principe place le programmeur à un haut niveau de
conception.
3. Comment décrire les objets
Type abstrait – Spécification algébrique :
30

Les piles d’entiers


3. (suite)Comment décrire les relations
31
entre les objets
 Cas 1: les piles bornées

Comment faut-il modifier cette spécification pour


obtenir une pile bornée de taille maximale
« capacite »

Extension
3. (suite)Comment décrire les relations
32
entre les objets
 Cas 2: Compteur cyclique + Horloge

Un compteur cyclique est un compteur borné qui repart à


0 quand il atteint sa borne supérieure.

 Le compteur kilométrique d’une voiture, les minutes, les


secondes et les heures d’une horloge sont des exemples.

 Définir la description du type abstrait Compteur Cyclique.


 Donner le moyen pour fixer la valeur maximale, pour
incrémenter, pour remettre le compteur à une valeur initiale.

délégation
3. (suite)Comment décrire les relations
33
entre les objets
 Cas 3: Compte bancaire
3. (suite)Comment décrire les relations
34
entre les objets
 Cas 4: Cas d’une pile qcq
3. (suite)Comment décrire les relations
35
entre les objets
 Trois formes de fonctions dans la spécification d’un type
abstrait T :

 Constructeur : qcqchose  T(qcqchose)


exemple : nouvelle
 Accesseur : T(qcqchose) x qcqchose  qcqchose
exemple : sommet, vide
 Modifieur : T(qcqchose) x qcqchose  T(qcqchose)
exemple : empiler, depliler
4. Comment utiliser ces objets pour
36
structurer des programmes
 Identifier une encapsulation pour chaque TAD c.a.d à un
ensemble de structures de données décrite par les opérations
qui font partie de son interface officielle.
4. Comment utiliser ces objets pour
37
structurer des programmes
Objet concret : une pile

Encapsulation des Données et des Traitements dans un Objet


4. Comment utiliser ces objets pour
38
structurer des programmes
 Un TAD, encapsule les opérations et cache la structure sous-
jacente d'un objet.
 Ainsi, le programmeur consacrera ses efforts à la solution d'un
problème sans se préoccuper des détails inutiles.
 Il s'intéressera à ce qu'un objet peut fournir comme service et
ignorera comment ses services sont réalisés de façon concrète
 Si p est une pile, on écrira p.empiler(n), au lieu de quelque
chose comme s = s+1; t[s]=n;
4. Comment utiliser ces objets pour
39
structurer des programmes

L’approche objet consiste à résoudre un problème en


termes d’objets qui collaborent.
4. Comment utiliser ces objets pour
40
structurer des programmes
 Intérêt :
L’intérêt de la séparation entre niveau interne et externe est
de donner un cadre plus rigoureux des objets :

 Les objets ne peuvent être utilisés qu’au travers de leur


interface (niveau externe)
 De ce fait les éventuelles modifications apportées à leur
structure interne restent invisibles à l’extérieur
Paradigmes objets & Terminologie
41

 Classes & Objets


 L’instanciation
 L’envoi de message
Qu'est-ce qu'une classe ?
42

• Pour le philosophe…
VOITURE ?
o Un artéfact de la classification humaine !
o Une classification en fonction d'un
comportement ou d'attributs communs
o Un accord portant sur les descriptions et les noms
des classes utiles
o La création d'un vocabulaire ; nous communiquons ;
nous pensons !
• Pour le programmeur orienté objet…
o Une construction syntaxique nommée qui décrit
un comportement et des attributs communs
o Une structure de données qui inclut les données
et les fonctions
Les classes d’objets Une grande partie de la
puissance conceptuelle de
43 l’approche objet vient de la
fusion de ces
deux notions.

La structure de base de l’approche objet :


La Classe

Module Type

• Ensemble de services • utilisée pour déclarer des


• Masquage de objets
l’information • exemple = Objet : Classe;
• Des liens entre classes ( i : integer )
Les classes d’objets
44

 Abstraction d’un concept, ne contenant que les détails


nécessaires au système

 Encapsulation des données et des opérations


Les classes d’objets
45

 Des objets similaires peuvent être informatiquement décrits par une


même abstraction : une classe
 même structure de données et méthodes de traitement

 valeurs différentes pour chaque objet

Classe Lecteur
Classe Livre Classe Employé -nom, prénom
-titre, auteur -nom, prénom, statut
Classe Journal
-titre

Germinal
E. Zola
Le Monde Alice Dupont Anne Durand
Directrice Lectrice

Le seigneur des anneaux Arsène Deschamps


Michel Martin Lecteur
J.R.R.Tolkien Bibliothécaire
Définition : Classe
46
Définition de classes simples
47

• Les données et les méthodes sont regroupées dans une


classe
• Les méthodes sont publiques, les données privées

classe Pile
{ Les méthodes
Méthodes: publiques
empiler(int x) Décrivent le
{ T[++indice] = x; } comportement
depiler() accessible
{ indice--; }
... Les champs
Attributs: privés
int T[Max]; Décrivent l'état
int indice;
inaccessible
}
Qu’est-ce qu’un Objet ?
48
Objets : Définitions
49

Objet : entité autonome modélisant l’aspect statique et


dynamique d’une partie du monde réel.

• Un objet peut représenter une réalité physique ( une voiture,


un bateau … ) ou virtuelle ( sécurité sociale, un
raisonnement …)

• Chaque objet possède des attributs, des méthodes, une


identité
Objets : Définitions
50

• attributs ( données membres ) : données caractérisant l‘état


de l’objet

• méthodes ( fonctions membres ) : opérations définissant le


comportement de l’objet. Elles lui permettent d’agir sur ces
attributs et de réagir aux sollicitations extérieures

• identité : identifiant permettant de le distinguer des autres


indépendamment de son état

Objet = État + Comportement + Identité


Objets : Définitions
51

 Un objet est une entité qui possède:

 Une identité : nom qui permet de


distinguer un objet d’un autre objet

 Un état : ensemble de valeurs


caractérisant l’objet

 Des comportements : ensemble


d’opérations que l’objet peut
effectuer. Ces opérations peuvent
modifier l’état interne de l’objet
Objets : Exemples
52

 Peugeot 106 de couleur grise immatriculée 5039 TU 90 :


 Attributs : couleur = grise, marque = Peugeot, n° im= 5039
TU 90
 Méthodes : avancer ( ), reculer ( )
 identité : XRE-HGFRT-KIUT-…

 Renault espace de couleur verte immatriculée 985 TU 97 :


 Attributs : couleur = verte, marque = Renault, n° im = 985 TU
97
 Méthodes : avancer ( ), reculer ( )
 identité : HYU-XJKMP-PLTB-….
Instanciation
53
L’envoie de message
54

 Les objets communiquent entre eux via l’envoi de messages


 Un message consistera à demander à l’objet d’effectuer une
opération particulière

accélérer
 Le message est composé de :
 Le nom de l’opération souhaitée (le nom de la méthode)
 L’ensemble des informations nécessaires à son bon fonctionnement (les
paramètres ou arguments de la méthode)
 En retour l’objet pourra lui répondre par une valeur ou par un autre objet

 Paradigme d’envoi de messages


 A été capital dans le choix des langages OO pour les nouvelles
applications du à la facilité qu’il implique dans la création de systèmes
client-serveur
L’envoie de message
55

 Un objet est une entité indépendante dont la structure est


connue de lui seul, il ne peut pas, en principe, agir directement
sur un autre objet.

 Il doit pour se faire utiliser une des méthodes appartenant à


l’interface de l’objet.
• Message = requête dont la satisfaction est à la charge de
l’objet auquel est adressée.
• Envoi de message = unique moyen de communiquer avec
les objets Exemple :
Send (MaVoiture, « freiner »);

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

Vous aimerez peut-être aussi