Module:
Méthodologie de conception des systèmes d’information
Introduction à l’Orienté objet
L’Orienté Objet
Principes de base
Comment trouver les objets.
Comment décrire les objets + les relations entre
eux.
Comment utiliser ces objets pour structurer les
programmes.
Paradigme objets & terminologie
Approche fonctionnelle
Dans les programmes tels qu’on les a écrits (et décrits) jusqu’à présent, les
notions de type de données et de fonctions sont séparées :
Types de données
Fonctions
datatype1
dataType2
……
dataTypeN
Aspect statique
fonction1
fonction2
……
fonctionM
Aspect dynamique
Où les «dataTypei» sont des types de données (int, char, …, et ceux définis par
typedef), et les «fonctionsj» sont des fonctions utilisant ces types, par exemple :
dataType2 fonction2( dataType1 x, dataType2 y)
Approche fonctionnelle
Dans une approche fonctionnelle, vos programmes sont composés
d'une série de fonctions, qui assurent ensemble certains services. Il s'agit
d'une approche logique, cohérente et intuitive de la programmation.
Cette approche a un avantage certain appelé la factorisation des
comportements
Mais , l'approche fonctionnelle a aussi ses défauts, comme par exemple
une maintenance complexe en cas d'évolution de votre application (une
simple mise à jour de l'application à un point donné peut impacter en
cascade sur d'autres fonctions de notre application).
Approche orientée objet
Principe de réification
Réification = matérialiser un concept par un objet
Un concept abstrait peut être « réifié »
o « à 10h45 une carte bleue à été introduite » l’événement
Une relation entre deux objets peut être « réifié »
o « 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…
Approche orientée objet
attributs
….
message
attributs
….
méthodes
….
méthodes
….
attributs
….
méthodes
….
6
Principe d’abstraction
Une abstraction fait ressortir les caractéristiques d’une structure qui la
distinguent de tous les autres types de structures du domaine et donc
procure des frontières conceptuelles rigoureusement définies par
rapport au point de vue de l’observateur.
Abstraction
L'abstraction est une ignorance sélective
L'objectif de l'abstraction n'est pas d'être vague,
Publicité
mais de créer un nouveau niveau sémantique dans lequel
il est possible d'être très précis.
Edsger Dijkstra
le concept d'abstraction identifie et regroupe des
caractéristiques et traitements communs applicables à
des entités ou concepts variés ; une représentation
abstraite commune de tels objets permet d'en simplifier
la manipulation.
Principe d’encapsulation
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.
Encapsulation (…)
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é.
Cet éléments informatique est appelé : « objet »
◦ Les [structures de] données définies dans
un objet sont appelées les attributs de l’objet;
◦ Les fonctions [de manipulation] définies dans
un objet sont appelées les méthodes de l’objet.
data1
data2
….
fonction1
fonction2
….
On a donc la relation fondamentale:
OBJET = attributs + méthodes
Encapsulation (…)
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
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.
Prototype des méthodes
Déclaration des attributs
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.
Eléments privés
Définition des méthodes
Corps
Interface
Encapsulation (…)
Interface
réalisation
2 rôles :
- utilisateur : manipule les éléments de l’abstraction qui
constituent l’interface
- implanteur :réalise ce qui est encapsulé
Orienté Objet
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
Comment trouver les objets
À partir du monde réel
L’approche objet
Les langages objets sont fondés sur la connaissance
Publicité
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.
Concept des objets
Le monde est composé d’entités qui « collaborent »
chauffeur
direction
Boîte de
vitesse
moteur
roue
roue
Freins
Feu
• L’approche objet consiste à résoudre un problème en termes
d’objets qui collaborent.
• Ces objets sont des abstractions des objets réels
Comment utiliser ces objets pour 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.
corps
des méthodes
interface
structures de
données (attributs)
Objet concret : une pile
Encapsulation des Données et des Traitements dans un Objet
(…)
Un objet, 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 structurer des programmes
(…)
attributs
….
message
attributs
….
méthodes
….
méthodes
….
attributs
….
méthodes
….
attributs
….
méthodes
….
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
Classes & Objets
L’instanciation
L’envoi de message
Classification et héritage
Polymorphisme
Publicité
Qu'est-ce qu'une classe ?
VOITURE ?
Pour le philosophe…
◦ Un artéfact 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 création d'un vocabulaire ; nous communiquons ;
nous pensons !
Pour le programmeur orienté objet…
◦ Une construction syntaxique nommée qui décrit
un comportement et des attributs communs
◦ Une structure de données qui inclut les données
et les fonctions
Une grande partie de la
puissance conceptuelle
de l’approche objet
vient de la fusion de
ces
deux notions.
Les classes d’objet
La structure de base de l’approche objet :
La Classe
Module
Type
• Ensemble de services
• Masquage de l’information
• Des liens entre classes
• utilisée pour déclarer des
objets
• exemple = Objet : Classe;
( i : integer )
Classe : Définition
Classe : Une classe regroupe les caractéristiques (les primitives = attributs et
méthodes) communes à des objets et permettant de créer des objets possédant
ces propriétés
Méthodes
• Modifieurs : ont un effet sur l’instance mais ne produisent pas de résultats
• Accesseurs: ont un résultat, généralement pas d’effet
Une classe représente la structure, le moule commun à un ensemble
d’objets
Une classe est une abstraction d’objets
Qu'est-ce qu'un objet ?
Un objet est une instance d'une classe
OBJETS
Définitions
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
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
Exemples
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
Instanciation = Passage de l’indéfini au défini (par
Publicité
voiture
Immatricule :
couleur :
roues :
puissance :
vitesse :
moulage)
1717 TU 27
bleue
4
2CV
50 km/h
6742 TU 28
grise
4
2CV
10 km/h
accélérer
freiner
tourner
reculer
L’instance (Statique, Dynamique)= objet : ( selon lang. ex:
Java)
Possède les propriétés définies par sa classe
peut effectuer les opérations définies par sa classe
L’envoi de message
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();
Classification – Généralisation
& Spécialisation
Idée ancienne
Classification des espèces vivantes selon le genre et l’espèce :
Principe : factoriser des informations communes dans une
catégorie et introduire les spécificités dans des sous
catégories.
Les sous catégories héritent des propriétés des catégories parentes
(base/dérivée)
Polymorphisme
Poly = Multiple et Morphisme = Structure
Relatif à un traitement en mesure de s’adapter aux données qu’il
manipule
◦ Surcharge
Donner plusieurs significations à un même symbole
◦ Généricité
Paramétrer des traitements et des définitions de structures par des types
◦ Liaison dynamique
Établir le lien entre le nom d’une opération et l’algorithme de l’opération lors de l’exécution
Approche objet
Objet et
classe
Héritage
Héritage
Objet:Classe
Classe
Encapsu-
lation
Classe
Attributs
Opérations
Polymor-
phisme