Partie 2 - Cours 3 - de L'approche Fonctionnelle Vers L'app

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 28

Partie II : Le paradigme

objet
De l’approche procedurale
vers l’approche objet
Oualid Khayati
Année universitaire 2007-2021
L’approche procedurale
• Raisonnement en terme de fonctions du
système
– l’accent est mis sur les fonctions et non sur les
données
• Séparation des données et du code de
traitement
– Transposition dans les méthodes des contraintes du
matériel
• Diffusion des responsabilités
– Intégrité des données non garanties
– Ajout possible de nouvelles opérations à tout moment
• Décomposition fonctionnelle descendante
2007-2021 Oualid Khayati 3
Héros

Marcher Courir Sauter Tomber Coucher

Application « MonJeu »

struct Héros {
char* nom;
int Taille;
int rapidite;
};
Marcher (Héros,…);
Coucher (Héros,…);
2007-2021 Oualid Khayati 4
Limite de l’approche fonctionnelle
 Un programme est conçu comme un ensemble
de modules fonctionnels (procédures ou
fonctions) qui manipulent des données
 Communication entre fonctions :
– Par passage de paramètres
– Par variables globales
 Accès libre aux données par n’importe quelle
fonction
 Difficulté de réutiliser du code déjà écrit et testé

2007-2021 Oualid Khayati 5


La solution à ces limites et
problèmes
L’approche objet
• Regroupement données-traitements
• Diminution de l’écart entre le monde réel et sa
représentation informatique (approche naturelle)
– Les informaticiens sont pervertis : le monde est avant
tout objet
• Localisation des responsabilités : encapsulation
• Décomposition par identification des relations
entre objets :
– Association, composition,
généralisation/spécialisation
2007-2021 Oualid Khayati 7
L’approche objet
Les données ne sont manipulables que par
l’objet lui-même
Héros

Tomber Coucher
Application
« MonJeu »
Marcher Courir

nom, taille,
Heros.coucher(…) rapidite

2007-2021 Oualid Khayati 8


Un pas dans le bonne direction
• Étant donné que:
– Verbes => Procédures et Fonctions
– Noms => Données
• Alors:
– Programmes Orientés sur les fonctions =
Collection de Verbes Supportés par des
Noms (substantifs) [Nouns]
– Programmes Orientés Objets = Collection de
Noms Supportés par des Verbes
2007-2021 Oualid Khayati 9
Nous reprenons cette
comparaison pour la phase
d’analyse
Analyse structurée orientée-traitement
• Accent mis sur le traitement
– Vision descendante de l'analyse
– Décomposition en un programme principal
formé d'appels de sous-programmes
– Indépendants et de complexité moindre, sans
se soucier des détails de réalisation
– Ce processus est répété jusqu'à obtenir des
sous-programmes élémentaires, ie. dont la
réalisation est aisée
– L'unité de décomposition est le traitement
– Les langages procéduraux du type C sont
bien adaptés
2007-2021 Oualid Khayati 11
Analyse orientée-objet
• Accents mis sur les données
– Déterminer les entités qui appartiennent à
l'univers à modéliser et les opérations qui leur
sont applicables, avant de se préoccuper de
l'enchaînement des opérations
– L'unité de décomposition regroupe les
données et les opérations qui leur sont
associées

2007-2021 Oualid Khayati 12


Un exemple
pour mieux comprendre
• Exemple : Imprimer un livre
– Un livre est constitué d'un en-tête, d'une liste
de chapitres et d'une bibliographie
– Chaque chapitre est constitué d'une suite de
sections, elles-mêmes composées de
paragraphes et de figures

2007-2021 Oualid Khayati 14


Analyse orientée-traitement
• procédure imprimerLivre :
– imprimerEntête;
– imprimerListeDesChapitres;
– imprimerBibliographie;
• Puis décomposition plus fine

2007-2021 Oualid Khayati 15


ImprimerUnLivre

séquence 1 2 3

ImprimerEn-Tête ImprimerListedeChapitre Imprimer


Bibliographie

Imprimer Imprimer ImprimerChapitre


Titre Auteur
Imprimer
Référence
*

*
ImprimerSection

ImprimerParagrapheOuFigure

Condition Alors Sinon

2007-2021 Oualid Khayati 16


Ces procédures
• ne peuvent être réutilisées, sauf par
duplication (gare aux problèmes de
maintenance)
• dans la pratique, les traitements sont
souvent sortis de leur bloc d'origine afin de
pouvoir être utilisés globalement
(obligatoire en C qui n'autorise pas la
définition de fonctions locales)

2007-2021 Oualid Khayati 17


Analyse orientée objet
• Décomposition en "entités conceptuelles"
matérialisées par des classes
• Comment trouver les bonnes classes ?

2007-2021 Oualid Khayati 18


Un pas dans le bonne direction
• Étant donné que:
– Verbes => Procédures et Fonctions
– Noms => Données
• Alors:
– Programmes Orientés sur les fonctions =
Collection de Verbes Supportés par des
Noms (substantifs) [Nouns]
– Programmes Orientés Objets = Collection de
Noms Supportés par des Verbes
2007-2021 Oualid Khayati 19
• Exemple : Imprimer un livre
– Un livre est constitué d'un en-tête, d'une liste
de chapitres et d'une bibliographie
– Chaque chapitre est constitué d'une suite de
sections, elles-mêmes composées de
paragraphes et de figures

2007-2021 Oualid Khayati 20


Livre
entête : Entête
Entête
listeDeChapitre : set-of-chapitre
imprimer :
bibliographie : Bibliographie
titre imprimer ;
auteur imprimer ;
imprimer :
entête imprimer ;
listeDeChapitre imprimer ;
bibliographie imprimer ; Section
Imprimer :

Chapitre
Imprimer :

Figure
Imprimer :
Paragraphe

Imprimer :

Bibliographie
Imprimer :

2007-2021 Oualid Khayati 21


Evolution des méthodes
Programmation Conception Analyse

L’évolution des méthodes s’est faite de la programmation vers


l’analyse
PF : Programmation fonctionnelle & POO : Programmation Orientée-Objet
structurée COO : Conception Orientée-Objet
CS : Conception Structurée AOO : Analyse Orientée-Objet
AS : Analyse Structurée
PF & PS CS AS

POO CS AS

POO COO AS

POO COO AOO


2007-2021 Oualid Khayati 22
POO, COO, et AOO
• Programmation Orientée-Objet (POO) - une méthode
d'implantation dans laquelle les programmes sont
organisés comme une collection d'objets, chacun étant
une instance d'une classe, lesquels font partie d'une
hiérarchie de classes unifiées via des relations
d'héritage
• Conception Orientée Objet (COO) - une méthode de
conception contenant le processus de décomposition en
objets et une notation décrivant les modèles logique et
physique aussi bien que les modèles statiques et
dynamiques du système à concevoir
• Analyse Orientée Objet (AOO) - une méthode d'analyse
qui examine les besoins d'un point de vue de classes et
d'objets trouvés dans le domaine du problème
2007-2021 Oualid Khayati 23
Programmation Orientée-Objet
• Programmation Orientée-Objet (POO) - une
méthode d'implantation dans laquelle les
programmes sont organisés comme une
collection d'objets, chacun étant une instance
d'une classe, lesquelles font partie d'une
hiérarchie de classes unifiées via des relations
d'héritage
• Points clés de cette définition:
– POO utilise des objets, pas des algorithmes, comme
blocs fondamentaux de construction.
– Chaque Objet est un membre d'une classe.
– Les Classes sont reliées entre elles par le biais de
relation d'héritage.
2007-2021 Oualid Khayati 24
Conception Orientée-Objet
• Conception Orientée Objet (COO) - un méthode
de conception contenant le processus de
décomposition en objets et une notation
décrivant les modèles logique et physique aussi
bien que les modèles statique et dynamique du
système à concevoir
• Points clés de cette définition:
– COO mène à la décomposition orientée objet.
– COO utilise différentes notations pour présenter
différents modèles de la conception logique (classe et
la structure de l'objet) et physique (modules et
l'architecture des processus) du système.
– Note: COO se réfère à n'importe quelle méthode qui
mène à une décomposition en objets. La
décomposition en objet distingue COO de la
conception structurée.
2007-2021 Oualid Khayati 25
Analyse à Objets
• Analyse Orientée Objet (AOO) - une
méthode d'analyse qui examine les
besoins d'un point de vue de classes et
d'objets trouvés dans le domaine du
problème
• Points clés de cette définition:
– AOO utilise le vocabulaire du domaine du
problème, formant ainsi des modèles réels du
problème.
2007-2021 Oualid Khayati 26
Relation entre POO, COO, AOO
Construit
AOO Objets
Est Utilisés dans
suivi
par Construit
COO Objets

Est Utilisés dans


suivi
par POO

2007-2021 Oualid Khayati 27


Pour finir : L’approche objet
• Sépare spécification et implantation
• Organise le développement en unités
– plusieurs programmeurs
– plusieurs niveaux de programmation
• Exploite des composants écrits par d’autres
– encapsulation, confidentialité du code
– héritage ...
• Réduit le code produit
– héritage (le retour)
– liaison dynamique, généricité
2007-2021 Oualid Khayati 28

Vous aimerez peut-être aussi