Introduction aux paradigmes de programmation
Introduction aux paradigmes de programmation
C.MOUBSIT
Plan du cours
1 Paradigme
2 Classes et objets
3 Abstraction et encapsulation
5 Polymorphismes
5
C.MOUBSIT
Aborder un pb, en utilisant un ens de notions et d’idées couramment admises par
une société ou une communauté scientifique, ne veut pas dire que c’est la
meilleure ou l’unique démarche possible l’histoire des sciences : de
nombreux paradigmes disparu ou améliorés au profit d’autres.
Deuxième siècle : Ptolémée (astronome grec) impose le géocentrisme.
Dix-septième siècle : Galilée ( inspiré des travaux de Copernic) : la terre tourne
autour du soleil
Critiques ……
Le soleil est il fixe ????
6
C.MOUBSIT
Le monde de l’informatique ne fait pas l’exception a cette règle
du changement. ( Von Neumann – 1940)
Un web désigner et un développeur d’application web
Les concepts, selon lesquels nous interprétons un phénomène,
déterminent les éléments importants que nous cherchons à
identifier : ils dirigent notre attention vers certains détails et la
détournent d’autres.
La capacité de passer d’1 paradigme à un autre : évolution
intellectuelle Ex
7
C.MOUBSIT
8
C.MOUBSIT
Différence entre paradigme et langage de programmation
Un paradigme de programmation
* Traite la manière dont les solutions aux problèmes doivent être
formulées dans un langage de programmation.
Un langage de programmation
9
C.MOUBSIT
EXEMPLES DE PARADIGMES DE
PROGRAMMATION
Le paradigme de programmation :
Impérative
structurée/Procédurale
Orienté Objet
10
C.MOUBSIT
PARADIGMES DE PROGRAMMATION IMPÉRATIVE
gérer différents Pb dans sa vie courante ( il exécute ses tâches dans l’ordre
séquentiel).
l’instruction : « Go To »
11
C.MOUBSIT
PARADIGMES DE PROGRAMMATION IMPÉRATIVE
1100 instruction 2
1110 etc
1200 instruction 1
12
C.MOUBSIT
PARADIGMES DE PROGRAMMATION PROCÉDURALE
des données).
14
C.MOUBSIT
ETUDE DE CAS : UNE SIMULATION D’UN TRAFIC ROUTIER
16
C.MOUBSIT
ETUDE DE CAS : UNE SIMULATION D’UN TRAFIC ROUTIER
f/r15
18
C.MOUBSIT
19
C.MOUBSIT
20
C.MOUBSIT
OBJET, ATTRIBUTS ET MÉTHODES
Données (attributs)
21
C.MOUBSIT
NOTION D’ATTRIBUT ET MÉTHODE
Objet voiture
• Un attribut est une propriété visible de
l’extérieur de l’objet, il est propre et particulier Attributs
à un être, à quelqu'un ou à quelque chose.
• Une méthode définit un comportement
particulier de l’objet. C’est une tâche que
Méthodes
l’objet exécute lorsqu’un autre objet le lui
demande.
22
C.MOUBSIT
SIGNATURE D’UNE MÉTHODE
ETAT D’UN OBJET
nom de la méthode
ainsi que de
L’état d’un objet est définit par les valeurs de ses attributs.
L’état de l’objet n’est pas fixe dans le temps, il change à chaque fois qu’on
modifie la valeur d’un attribut de l’objet.
23
C.MOUBSIT
TYPE ET CLASSE
monEntier 3
Une valeur
Entière positive ou négative
Déclaration de la
variable monentier.
Int monEntier = 3
24
C.MOUBSIT
NOTION DE CLASSE
marque
model Structure de données identique
couleur… mais avec des valeurs différentes.
demarer()
arreter() marque : mercedes
model : 250
couleur : rouge
….
Objet 1
Structure de données commune
à tous les objets voiture marque : mercedes
model : 220
couleur : bleu
Classe Voiture: Création d’objets …. Objet 2
Voiture=identifiant ou
référence Deux vrais objets voiture crées avec
la même structure de données à
partir du Type Voiture
Classe
Le nom de la classe
26
C.MOUBSIT
CLASSE ET INSTANCIATION D’OBJETS
32
C.MOUBSIT
ABSTRACTION
L’abstraction du problème
Pour notre problème de simulation de trafic routier, nous ne
nous intéressons qu’à la modélisation des classes qui ont une
influence sur le trafic ( Voiture , Conducteur , Feu de
signalisation,...
33
C.MOUBSIT
ABSTRACTION
34
C.MOUBSIT
ABSTRACTION
L’abstraction des modèles
Prenons un exemple
35
C.MOUBSIT
ABSTRACTION
36
C.MOUBSIT
ABSTRACTION
Pour Voiture dans notre simulation, les attributs suivants
apparaissent essentiels :
la couleur : facilite la représentation dans l’interface graphique
numSerie : unique pour chaque voiture
Vitesse actuelle et maximale
moteur :pour distinguer la voiture des véhicules sans moteur et
de modéliser différents types d’accélération.
Ex
37
C.MOUBSIT
38
C.MOUBSIT
Notre code enfin finalisé nous passons aux tests
de notre simulation.
39
C.MOUBSIT
Le 1er principe de la POO n’est
pas respecté.
40
C.MOUBSIT
ENCAPSULATION
41
C.MOUBSIT
ENCAPSULATION
42
C.MOUBSIT
ENCAPSULATION
L’encapsulation permet d’obtenir:
Un niveau externe : la partie visible de l’objet :
Des données et des méthodes visibles depuis l’extérieur
C’est l’interface de l’objet avec l’extérieur
44
C.MOUBSIT
ACCÉDER AUX DONNÉES PROTÉGÉES
Exemples
public void setVistesse(int v) { public int getVitesse() {
if (v >= 0 ) vitesse = v ; return vitesse ;
} }
Ex
45
C.MOUBSIT
EXERCICE
On vient de résoudre le Pb des vitesses négatives.
46
C.MOUBSIT
public void setVistesse(int v) {
if (v >= 0 et estDemarre == true)
vitesse = v ;
}
47
C.MOUBSIT
ACCÉDER AUX DONNÉES PROTÉGÉES
+ Voiture
numSerie
couleur
vitesse
vitesseMax
estDemarre
puissanceMoteur
+demarrer()
+arreter()
+Accelerer(int)
+Freiner()
48
C.MOUBSIT
INTERFACE D’UN OBJET
Nom de la méthode
La liste des arguments
f/r42 Ex
51
C.MOUBSIT
52
C.MOUBSIT
Les relations entre
Classes
53
C.MOUBSIT
COMMUNICATION ENTRE LES OBJETS
54
C.MOUBSIT
COMMUNICATION ENTRE LES OBJETS
57
C.MOUBSIT
COMMUNICATION ENTRE LES OBJETS
58
C.MOUBSIT
LA RELATION D’ASSOCIATION
entre classes :
59
C.MOUBSIT
EXEMPLE D’ASSOCIATION
Le ZOO est composé d’ :
• Un ensemble de cages.
• Un ensemble d'animaux.
• Un ensemble de gardiens.
60
C.MOUBSIT
LA MULTIPLICITÉ D’ASSOCIATION
classe.
61
C.MOUBSIT
LA RELATION D’ASSOCIATION
entre classes. Ex
62
C.MOUBSIT
LA RELATION D’ASSOCIATION
63
C.MOUBSIT
ETUDE DE CAS : UNE SIMULATION D’UN TRAFIC ROUTIER
64
C.MOUBSIT
ETUDE DE CAS : UNE SIMULATION D’UN TRAFIC ROUTIER
67
C.MOUBSIT
TROISIÈME VERSION DU DIAGRAMME DE CLASSES
68
C.MOUBSIT
LA RELATION D’HÉRITAGE
• L’héritage est une technique rationnelle (appelée aussi dérivation)
• Contre exemple :
Ex
71
C.MOUBSIT
LA RELATION D’HÉRITAGE
Ex
72
C.MOUBSIT
LA RELATION D’HÉRITAGE
Ex
73
C.MOUBSIT
LA RELATION D’HÉRITAGE
74
C.MOUBSIT
L’HÉRITAGE MULTIPLE
• L’héritage peut être simple ou multiple.
Véhicule Poidslourd
Camion
l’héritage multiple
NB: certains langages(comme Java) ne supportent pas l’héritage multiple
75
C.MOUBSIT
HÉRITAGE PAR
SPÉCIALISATION
• L’héritage peut être utilisé en conception de deux façons :
76
C.MOUBSIT
HÉRITAGE PAR
GÉNÉRALISATION
77
C.MOUBSIT
RÉUTILISATION DES COMPOSANTS
Considérons un autre projet de un jeu de course de voitures.
Classe voiture
78
C.MOUBSIT
JEU DE COURSE DE VOITURES.
79
C.MOUBSIT
LA RELATION D’AGRÉGATION ET DE COMPOSITION
80
C.MOUBSIT
LA RELATION D’AGRÉGATION ET DE COMPOSITION
81
C.MOUBSIT
LA RELATION D’AGRÉGATION ET DE COMPOSITION
Agrégation
Composition
f/r61 Ex
82
C.MOUBSIT
LA RELATION D’AGRÉGATION ET DE
COMPOSITION
83
C.MOUBSIT
Polymorphisme
84
C.MOUBSIT
POLYMORPHISME
Notion de super type
Le polymorphisme traite de la capacité d’un objet à posséder
plusieurs formes (plusieurs types : son propre type et les super
types).
Exemple: Un objet voiture peut être traité comme une Voiture, mais
VehiculeAvecMoteur ou VehiculePersonnel.
86
C.MOUBSIT
POLYMORPHISME
87
C.MOUBSIT
POLYMORPHISME
88
C.MOUBSIT
POLYMORPHISME
89
C.MOUBSIT
PARAMÈTRE POLYMORPHE
Soit une nouvelle classe « Réparation » qui possède une
méthode réparer(…) dont le rôle est de réparer des
véhicules.
90
C.MOUBSIT
PARAMÈTRE POLYMORPHE
On va se retrouver avec une prolifération de méthodes
qui remplissent le même rôle et dont seul le paramètre
qu’on lui transmet change.
Autant de méthodes que de types de véhicules n’est pas
vraiment une solution.
« Réparer (Véhicule v ) ».
véhicule, etc
Paramètre Polymorphe
f/r72
92
C.MOUBSIT
ORIENTE « OBJET»
OU PROCEDURAL ?
93
C.MOUBSIT
ORIENTE « OBJET» OU PROCEDURAL ?
• Malgré la multitude de paradigmes et de langages de
programmation existants, tout problème pouvant être
résolu par un programme écrit dans un langage peut
également être résolu par un autre programme écrit dans
un autre langage.
• Cependant, même si la résolution du problème est faite, le
choix d'un paradigme plutôt qu'un autre ou d'un langage
plutôt qu'un autre peut influencer les qualités du
programme final.
• En effet, la qualité d'un programme n'est pas définie
seulement par le résultat obtenu, mais aussi par une
multitude de critères, certains plus importants que d'autres.
94
C.MOUBSIT
ORIENTE « OBJET» OU PROCEDURAL ?
• La réalisation de logiciels est composée de
plusieurs phases dont le développement ne
constitue que la première partie.
• Elle est suivie, dans la plupart des cas, d'une
phase dite de maintenance, phase qui consiste à
corriger le logiciel et à le faire évoluer.
• Cette dernière phase représente 70 % du coût
total d'un logiciel. D'où la nécessité d'utiliser
des règles permettant d'assurer une certaine
qualité de réalisation.
95
C.MOUBSIT
les plus importants critères
qu’il faut tenir compte lors de
la réalisation d'un projet
96
C.MOUBSIT
CRITÈRES…
• Voici une liste des critères les plus importants dont il faut
tenir compte lors de la réalisation d'un projet :
99
C.MOUBSIT
Comparaison entre
programmation procédurale
et POO
100
C.MOUBSIT
COMPARAISON ENTRE PROGRAMMATION
PROCÉDURALE ET POO
L ’Approche procédurale
101
C.MOUBSIT
COMPARAISON ENTRE PROGRAMMATION
PROCÉDURALE ET POO
L ’Approche procédurale
102
C.MOUBSIT
COMPARAISON ENTRE PROGRAMMATION
PROCÉDURALE ET POO
L ’Approche POO
103
C.MOUBSIT
COMPARAISON ENTRE PROGRAMMATION
PROCÉDURALE ET POO
L ’Approche POO
les données sont encapsulées dans l’objet. les traitement et les données
peuvent évoluer sans pour autant remettre en cause l’ensemble de
l’application.
105
C.MOUBSIT
COMPARAISON ENTRE PROGRAMMATION
PROCÉDURALE ET POO
Fonction 1
Fonction ….
Fonction 1 Données
Fonction 50 de
l’objet la réalisation d’une
application avec une
Données
Fonction 1
de
approche orienter
Fonction 50
l’objet
« objet »
Données
Fonction 1 de
Fonction 50 l’objet
107
C.MOUBSIT
COMPARAISON ENTRE PROGRAMMATION
PROCÉDURALE ET POO
108
C.MOUBSIT
Avantages et Inconvénients
des deux approches
109
C.MOUBSIT
PROGRAMMATION PROCÉDURALE
Avantages Inconvénients
111
C.MOUBSIT
Choix d’un paradigme
112
C.MOUBSIT
CHOIX D’UN PARADIGME
113
C.MOUBSIT
CHOIX D’UN PARADIGME
• La raison du choix de la POO est très simple à comprendre.
Pour calculer la vitesse d'un véhicule à un instant « t+1», nous
devons nous baser sur sa vitesse à l'instant t.
• Il faut donc avoir stocké cette vitesse quelque part. Le même
raisonnement s'applique pour l'état « démarré» ou « arrêté»,
« changement de voie », etc.
• Donc, chaque véhicule doit stocker un ensemble de valeurs
(état interne) sur lesquels nous nous basons pour trouver
l'état suivant. De manière intuitive.
116
C.MOUBSIT
CHOIX D’UN PARADIGME
•
117
C.MOUBSIT
CHOIX D’UN PARADIGME
118
C.MOUBSIT
CHOIX D’UN PARADIGME
• Un autre critère de choix du paradigme à utiliser,
consiste en la nature du projet sur lequel nous
travaillons.
120
C.MOUBSIT
CRITÈRES DE QUALITÉ D’UN LOGICIEL
Correct
- Le logiciel est capable de produire exactement les fonctions qu'on lui
demande par les spécifications.
- Demander 20$ au guichet bancaire automatique => obtenir 20$.
Robuste
- Le logiciel est capable de bien fonctionner dans des conditions
anormales.
- essayer une séquence de touches NON prévue au guichet bancaire
automatique => ne donne pas 500$ en conséquence.
Extensible
- Il est possible de modifier le logiciel simplement pour l'adapter à des
modifications dans les spécifications.
121
C.MOUBSIT
CRITÈRES DE QUALITÉ D’UN LOGICIEL
Extensible
- Ajouter une nouvelle fonction dans le guichet
bancaire automatique
Réutilisable
- Le logiciel peut être utilisé intégralement ou en partie
dans de nouvelles applications.
- Distributeur de boissons => Distributeur de tickets de
métro.
Portable
- C'est la facilité d'exécuter le logiciel sur différentes
plates-formes.
122
C.MOUBSIT
CRITÈRES DE QUALITÉ D’UN LOGICIEL
Efficace
- Cela se traduit par la bonne utilisation des ressources
(temps, mémoire, etc.)
- Ne pas attendre 15 minutes au guichet bancaire
automatique pour retirer 20$!
123
C.MOUBSIT