Upload
others
View
5
Download
0
Embed Size (px)
Citation preview
Concepts des langages de
programmationprogrammation
Programmation procédurale et programmation orientée objet
Plan
� Introduction
� Programmation procédurale� Programmation procédurale
� Programmation orientée objet
2
Plan
� Introduction
� Programmation procédurale� 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� 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 objetsobjets
� En programmation orientée objet, on cherche à identifier les objets impliqués et leurs responsabilités respectives
5
Plan
� Introduction
� Programmation procédurale� 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� 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� 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� 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; … // instructionsp= "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� 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� 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)� void println(String s)� String readLine(File f)� void ecrisAlEcranQuelQuechose()
14
Corps d’une fonction
int calculeSomme(int a, int b)
{
int somme;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� 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…)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;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� 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� 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� 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
PROGRAMME
résultats
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 ? 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 � 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� É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 articleprixUn : 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, total25
Coder l’algorithme
� Une fois l'algorithme défini, il reste à :
� Choisir un langage de programmation� 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é, …� 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 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 � 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, � 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) � 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 variablesL’é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 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 � 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
35
Thermomètre Radiateur
Temperature ?- température : int
+ getTempérature() : int
-thermostat : int-températureDésirée : int
- changeThermostat() : void+ 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)
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� 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
Plante
37
Animal Plante
Mammifère Oiseau
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 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)
� http://www.iro.umontreal.ca/~monnier/2035/
� Marc Feeley : IFT2035, UdeM (2006)� http://www.iro.umontreal.ca/~feeley/cours/ift2030/index.html
� Lois Rigouste : CSI3525, Université d’ottawa (2008)� http://www.site.uottawa.ca/~nat/csi3520_2008/
� 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