Concepts des langages de
programmation
Programmation procédurale et programmation orientée
objet
Plan
Introduction
Programmation procédurale
Programmation orientée objet
2
Plan
Introduction
Programmation procédurale
Programmation orientée objet
3
Introduction
Programmation procédurale
On s'intéresse à écrire les étapes séquentielles nécessaires pour
résoudre un problème
Met l'accent sur les étapes pour réaliser une tâche
Le programme est la liste des tâches et des opérations à exécuter
Convient mieux aux applications ne nécessitant pas ou peu d’interaction
avec les usagers
4
Introduction (suite)
Programmation orientée objet
On s'intéresse modéliser le problème par un ensemble d'objets
Met l'accent sur les objets requis pour résoudre un problème
Le programme est l’ensemble des objets et des interactions entre ces
objets
En programmation orientée objet, on cherche à identifier les
objets impliqués et leurs responsabilités respectives
5
Plan
Introduction
Programmation procédurale
Programmation orientée objet
6
Programmation Procédurale
Notion d’identificateur et de type
Notion de fonction
Instructions de contrôle du flux d’exécution
Comment concevoir un programme ?
7
Programmation Procédurale
Notion d’identificateur et de type
Notion de fonction
Instructions de contrôle du flux d’exécution
Comment concevoir un programme ?
8
Notion d’identificateur et de type
Identificateur : symbole sans signification universelle permettant de
désigner des objets qui n’ont pas d’existence en dehors du
programme.
Déclaration : fixe la signification d’un identificateur
Portée d’un identificateur : bloc d’instructions pour lequel la
déclaration est valable
9
Déclaration et assignation d’une variable
int i = 4 ;
type entier (entier : type prédéfini)
String s = "Bonjour";
identificateur
String s;
String p;
… // instructions
p= "Bonjour de p";
s=p;
10
Programmation Procédurale
Notion d’identificateur et de type
Notion de fonction
Instructions de contrôle du flux d’exécution
Comment concevoir un programme ?
11
Notion de fonction
Une fonction est un morceau de code qui permet de
résoudre un sous-problème du problème traité
La décomposition du code en tâches et sous- tâches, le
rend plus modulaire.
Le programme est plus clair,
plus lisible,
plus aisément modifiable…
Les fonctions cachent les détails d’implémentation : il
suffit de savoir "ce qu’elles font" et non comment "elles le
font"
12
Déclaration d’une fonction
Comprend essentiellement trois éléments:
Nom de la fonction
Liste des types d’arguments
Type de retour de la fonction
13
Exemple de déclarations de fonctions
int calculeSomme(int i, int j)
void println(String s)
String readLine(File f)
void ecrisAlEcranQuelQuechose()
14
Corps d’une fonction
int calculeSomme(int a, int b)
{
int somme;
somme = a+ b;
return somme;
}
15
Programmation Procédurale
Notion d’identificateur et de type
Notion de fonction
Instructions de contrôle du flux d’exécution
Comment concevoir un programme ?
16
Instructions de contrôle (en pseudocode)
Branchement conditionnel :
if … then… else … end ( si … alors … sinon …)
Switch …. case … case …end (équivalente à
l'imbrication de plusieurs if …then… else…)
Boucles :
while … do … end ou do … while ( fait tant que …)
for … do … end
17
Exemple
int calculeSomme(int a, int b)
{
int somme = a+b;
if (somme > 0)
somme =0;
return somme;e. Le return n’apparaît ici qu’une seule fois.
}
18
Programmation Procédurale
Notion d’identificateur et de type
Notion de fonction
Instructions de contrôle du flux d’exécution
Comment concevoir un programme ?
19
Comment concevoir un programme ?
Identifier précisément le problème que le programme se doit de
résoudre
Décomposer le problème en sous-problèmes
Définir les fonctions correspondantes
Écrire le programme principal en pseudo-code
Implémenter, exécuter le programme avec différentes données,
débugger …
20
Comprendre le problème
Premier pas essentiel vers la résolution du problème
Permet souvent de découvrir/mettre en place les premiers éléments de la
solution
Déterminer les résultats à obtenir
Isoler l’énoncé du problème et ce que l’on veut que le programme produise
Déterminer les données dont on dispose
Isoler l’énoncé du problème et ce que le programme devra obtenir avant de
commencer à effectuer les calculs et les traitements
Déterminer les méthodes de calcul qui permettent de passer des
données aux résultats
Trouver comment effectuer les calculs
données résultats
PROGRAMME
21
Identifier les tâches
Existe-t-il des informations devant être saisies par
l’utilisateur?
Existe-t-il des résultats devant être calculés par
l’application ?
Existe-t-il des informations devant être
affichées/imprimées ?
Existe-t-il d’anciennes informations devant être effacées
avant la saisie des nouvelles ?
22
Qu’est-ce qu’un algorithme ?
Définition
Résolution d’un problème de façon systématique
Identifier les processus élémentaires
Par décomposition : du complexe au simple
Description
Langage courant
Langage plus précis et mieux adapté
PseudoCode
23
Pseudocode
Algorithme
Ce que fait l’algorithme
Constantes
Énumération des constantes et de leur valeur
Variables
Énumération des variables
Logique du traitement
Étapes de résolution du problème
24
Exemple de pseudocode d'un algorithme
ALGORITHME
Cet algorithme simule une caisse enregistreuse. On lit le prix et la quantité d'un article acheté puis on calcule et
affiche le prix total avec les taxes.
CONSTANTES
TX_TPS = 0,07 , le taux de la TPS
TX_TVQ = 0,075 , le taux de la TVQ
VARIABLES
qté : entier , la quantité achetée
prixUn : réel , le prix unitaire d'un article
totalPartiel : réel , le prix avant taxe
tps, tvq : réel , la TPS et la TVQ à payer
taxes, total : réel , les taxes et le total à payer
LOGIQUE
1. Écrire « Entrez la quantité et le prix unitaire »
2. Lire qté, prixUn
3. Calculer totalPartiel = qté * prixUn
4. Calculer tps = TX_TPS * totalPartiel
5. Calculer tvq = TX_TVQ * (totalPartiel + tps)
6. Calculer taxes = tps + tvq
7. Calculer total = totalPartiel + taxes
8. Afficher taxes, total
25
Coder l’algorithme
Une fois l'algorithme défini, il reste à :
Choisir un langage de programmation
Traduire l’algorithme en ce langage
26
Limites de la programmation procédurale
Dans les années 80, la méthodologie de programmation
logicielle consistait essentiellement en l’abstraction
procédurale
Principaux problèmes
Difficulté de réutilisation du code
Critères de qualité facilement violés : modularité, lisibilité, …
Danger du « Code spaghetti »
Difficulté de la maintenance de grandes applications
…
Le concept central de la programmation orientée-objets est
l’objet : celui-ci contient ses propres données ainsi que les
traitements relatifs à ses données (encapsulation)
27
Plan
Introduction
Programmation procédurale
Programmation orientée objet
28
Programmation orientée objet (POO)
Pensons en termes d’objets
Une certaine façon d’appréhender le monde
Les classes et les objets
Envoie de messages
Héritage
29
Pensons le monde en objets
Une application est vue comme un ensemble d’objets qui
interagissent
par "envoi de messages"
Comme les objets du monde (une voiture, un vélo, une table,
…), les objets dans les langages OO ont des états et des
comportements
Une voiture est caractérisée par sa couleur, sa vitesse instantanée, sa
consommation : ce sont ses états
et par des actions telles que tourner, accélérer, s’arrêter : ce sont ses
comportements
30
Les classes
Plusieurs objets peuvent être de la même famille (type)
On dit qu'ils appartiennent à la même classe
Une classe définit les variables et les méthodes communes à tous les
objets de la classe
Un objet appartenant à une classe est dit instance de cette classe
Ainsi, après avoir créé une classe, il faut instancier (créer une instance)
avant de pouvoir l’utiliser
Exemples
Class : BankAccount
Object : acount_001_210
Class : GSM(Type, Num Identification)
Object : mon_GSM (Nokia, 1235321)
31
Les objets
Un objet logiciel regroupe des variables et des méthodes
(fonctions)
L’état d’un objet est défini par les valeurs de ses variables
Les comportements d'un objet sont ses méthodes
Ces variables et méthodes sont appelées variables et méthodes
d’instance ( par opposition aux variables et méthodes de classe)
32
Qu’est-ce qu’une variable ?
Une variable est un endroit de la mémoire à laquelle
on a donné un nom de sorte que l’on puisse y faire
facilement référence dans le programme
Une variable a une valeur, correspondant à un certain
type. La valeur d’une variable peut changer au cours
de l’exécution du programme
On distingue les variables de classes (variables
communes à l’ensemble des objets d’une classe) et les
variables d’instance (particulières à chaque objet)
33
Exemples d’objets
Une personne est un objet caractérisé par un nom, un
prénom, une date de naissance, une profession ... et pouvant
marcher, parler, réfléchir, écrire, …
Un compte en banque est un objet caractérisé par un numéro
de compte, un propriétaire, un taux d’intérêt, un solde, un
solde minimum, … et offre des services : consultation du
solde, retrait, virement …
Un objet graphique est un objet caractérisé par une taille, par
une position, une forme, une couleur … et peut changer de
taille, de forme, de couleur ...
34
Envoi de messages
La POO peut être vue comme
Ensemble d'objets interagissant
Et communiquant entre eux uniquement via l'envoi de messages
Envoyer un message revient à appeler une méthode dans l'objet receveur
Thermomètre Radiateur
-thermostat : int
- température : int -températureDésirée : int
Temperature ?
- changeThermostat() : void
+ getTempérature() : int + fixeLaTemperatureDesiree(int):
void
+ : méthode ou variable publique (accessibilité totale depuis l’extérieur de la classe)
- : méthode ou variable privée (limitation d’accès à la classe elle-même)
35
Principe d’héritage
L'héritage est le mécanisme qui permet de créer une classe à partir
d'une classe existante
La nouvelle classe hérite les variables et les méthodes de sa classe parente
Peut avoir d'autres variables et méthodes qui lui sont propres
Peut hériter d'un ou de plusieurs classes
Aide à factoriser le code
Exemple
PERSONNE PHYSIQUE et PERSONNE MORALE sont
deux classes qui héritent de la classe PROPRIETAIRE
36
Exemple de hiérarchie d ’héritage
EtreVivants
Animal Plante
Mammifère Oiseau
37
POO : récapitulatif
Tout est un objet
L’exécution du programme est réalisée par échange de
messages entre objets
Un message est une demande d’action, caractérisée par
les paramètres nécessaires à la réalisation de cette
action (appels de méthodes)
Tout objet est une instance de classe, qui est le "moule"
générique des objets de ce type
Les classes définissent les comportements possibles de
leurs objets
Les classes sont organisées en une structure
arborescente à racine unique : la hiérarchie d’héritage
38
Références
Manuel :
Robert W. Sebesta, Concepts of Programming Languages, 9ème édition,
Addison-Wesley, 2009
Autres :
Stefan Monnier : IFT2035, UdeM (2008)
[Link]
Marc Feeley : IFT2035, UdeM (2006)
[Link]
Lois Rigouste : CSI3525, Université d’ottawa (2008)
[Link]
Nathanaël Ackerman, DEA en Sciences Cognitives Introduction à l’Intelligence
Artificielle, Faculté de Psychologie et des Sciences de l’Education (belg)
HEC Montréal : 4-711-00, Programmation objet: application au commerce
électronique
39