39
Concepts des langages de programmation Programmation procédurale et programmation orientée objet

Concepts des langages de programmationdift2035/e2009/cours/... · 2009-05-12 · En programmation orientée objet, on cherche à identifier les objets impliqués et leurs responsabilités

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Concepts des langages de programmationdift2035/e2009/cours/... · 2009-05-12 · En programmation orientée objet, on cherche à identifier les objets impliqués et leurs responsabilités

Concepts des langages de

programmationprogrammation

Programmation procédurale et programmation orientée objet

Page 2: Concepts des langages de programmationdift2035/e2009/cours/... · 2009-05-12 · En programmation orientée objet, on cherche à identifier les objets impliqués et leurs responsabilités

Plan

� Introduction

� Programmation procédurale� Programmation procédurale

� Programmation orientée objet

2

Page 3: Concepts des langages de programmationdift2035/e2009/cours/... · 2009-05-12 · En programmation orientée objet, on cherche à identifier les objets impliqués et leurs responsabilités

Plan

� Introduction

� Programmation procédurale� Programmation procédurale

� Programmation orientée objet

3

Page 4: Concepts des langages de programmationdift2035/e2009/cours/... · 2009-05-12 · En programmation orientée objet, on cherche à identifier les objets impliqués et leurs responsabilités

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

Page 5: Concepts des langages de programmationdift2035/e2009/cours/... · 2009-05-12 · En programmation orientée objet, on cherche à identifier les objets impliqués et leurs responsabilités

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

Page 6: Concepts des langages de programmationdift2035/e2009/cours/... · 2009-05-12 · En programmation orientée objet, on cherche à identifier les objets impliqués et leurs responsabilités

Plan

� Introduction

� Programmation procédurale� Programmation procédurale

� Programmation orientée objet

6

Page 7: Concepts des langages de programmationdift2035/e2009/cours/... · 2009-05-12 · En programmation orientée objet, on cherche à identifier les objets impliqués et leurs responsabilités

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

Page 8: Concepts des langages de programmationdift2035/e2009/cours/... · 2009-05-12 · En programmation orientée objet, on cherche à identifier les objets impliqués et leurs responsabilités

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

Page 9: Concepts des langages de programmationdift2035/e2009/cours/... · 2009-05-12 · En programmation orientée objet, on cherche à identifier les objets impliqués et leurs responsabilités

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

Page 10: Concepts des langages de programmationdift2035/e2009/cours/... · 2009-05-12 · En programmation orientée objet, on cherche à identifier les objets impliqués et leurs responsabilités

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

Page 11: Concepts des langages de programmationdift2035/e2009/cours/... · 2009-05-12 · En programmation orientée objet, on cherche à identifier les objets impliqués et leurs responsabilités

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

Page 12: Concepts des langages de programmationdift2035/e2009/cours/... · 2009-05-12 · En programmation orientée objet, on cherche à identifier les objets impliqués et leurs responsabilités

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

Page 13: Concepts des langages de programmationdift2035/e2009/cours/... · 2009-05-12 · En programmation orientée objet, on cherche à identifier les objets impliqués et leurs responsabilités

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

Page 14: Concepts des langages de programmationdift2035/e2009/cours/... · 2009-05-12 · En programmation orientée objet, on cherche à identifier les objets impliqués et leurs responsabilités

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

Page 15: Concepts des langages de programmationdift2035/e2009/cours/... · 2009-05-12 · En programmation orientée objet, on cherche à identifier les objets impliqués et leurs responsabilités

Corps d’une fonction

int calculeSomme(int a, int b)

{

int somme;int somme;

somme = a+ b;

return somme;

}

15

Page 16: Concepts des langages de programmationdift2035/e2009/cours/... · 2009-05-12 · En programmation orientée objet, on cherche à identifier les objets impliqués et leurs responsabilités

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

Page 17: Concepts des langages de programmationdift2035/e2009/cours/... · 2009-05-12 · En programmation orientée objet, on cherche à identifier les objets impliqués et leurs responsabilités

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

Page 18: Concepts des langages de programmationdift2035/e2009/cours/... · 2009-05-12 · En programmation orientée objet, on cherche à identifier les objets impliqués et leurs responsabilités

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

Page 19: Concepts des langages de programmationdift2035/e2009/cours/... · 2009-05-12 · En programmation orientée objet, on cherche à identifier les objets impliqués et leurs responsabilités

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

Page 20: Concepts des langages de programmationdift2035/e2009/cours/... · 2009-05-12 · En programmation orientée objet, on cherche à identifier les objets impliqués et leurs responsabilités

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

Page 21: Concepts des langages de programmationdift2035/e2009/cours/... · 2009-05-12 · En programmation orientée objet, on cherche à identifier les objets impliqués et leurs responsabilités

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

Page 22: Concepts des langages de programmationdift2035/e2009/cours/... · 2009-05-12 · En programmation orientée objet, on cherche à identifier les objets impliqués et leurs responsabilités

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

Page 23: Concepts des langages de programmationdift2035/e2009/cours/... · 2009-05-12 · En programmation orientée objet, on cherche à identifier les objets impliqués et leurs responsabilités

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

Page 24: Concepts des langages de programmationdift2035/e2009/cours/... · 2009-05-12 · En programmation orientée objet, on cherche à identifier les objets impliqués et leurs responsabilités

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

Page 25: Concepts des langages de programmationdift2035/e2009/cours/... · 2009-05-12 · En programmation orientée objet, on cherche à identifier les objets impliqués et leurs responsabilités

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

Page 26: Concepts des langages de programmationdift2035/e2009/cours/... · 2009-05-12 · En programmation orientée objet, on cherche à identifier les objets impliqués et leurs responsabilités

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

Page 27: Concepts des langages de programmationdift2035/e2009/cours/... · 2009-05-12 · En programmation orientée objet, on cherche à identifier les objets impliqués et leurs responsabilités

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

Page 28: Concepts des langages de programmationdift2035/e2009/cours/... · 2009-05-12 · En programmation orientée objet, on cherche à identifier les objets impliqués et leurs responsabilités

Plan

� Introduction

� Programmation procédurale� Programmation procédurale

� Programmation orientée objet

28

Page 29: Concepts des langages de programmationdift2035/e2009/cours/... · 2009-05-12 · En programmation orientée objet, on cherche à identifier les objets impliqués et leurs responsabilités

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

Page 30: Concepts des langages de programmationdift2035/e2009/cours/... · 2009-05-12 · En programmation orientée objet, on cherche à identifier les objets impliqués et leurs responsabilités

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

Page 31: Concepts des langages de programmationdift2035/e2009/cours/... · 2009-05-12 · En programmation orientée objet, on cherche à identifier les objets impliqués et leurs responsabilités

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

Page 32: Concepts des langages de programmationdift2035/e2009/cours/... · 2009-05-12 · En programmation orientée objet, on cherche à identifier les objets impliqués et leurs responsabilités

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

Page 33: Concepts des langages de programmationdift2035/e2009/cours/... · 2009-05-12 · En programmation orientée objet, on cherche à identifier les objets impliqués et leurs responsabilités

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

Page 34: Concepts des langages de programmationdift2035/e2009/cours/... · 2009-05-12 · En programmation orientée objet, on cherche à identifier les objets impliqués et leurs responsabilités

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

Page 35: Concepts des langages de programmationdift2035/e2009/cours/... · 2009-05-12 · En programmation orientée objet, on cherche à identifier les objets impliqués et leurs responsabilités

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)

Page 36: Concepts des langages de programmationdift2035/e2009/cours/... · 2009-05-12 · En programmation orientée objet, on cherche à identifier les objets impliqués et leurs responsabilités

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

Page 37: Concepts des langages de programmationdift2035/e2009/cours/... · 2009-05-12 · En programmation orientée objet, on cherche à identifier les objets impliqués et leurs responsabilités

Exemple de hiérarchie d ’héritage

EtreVivants

Plante

37

Animal Plante

Mammifère Oiseau

Page 38: Concepts des langages de programmationdift2035/e2009/cours/... · 2009-05-12 · En programmation orientée objet, on cherche à identifier les objets impliqués et leurs responsabilités

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

Page 39: Concepts des langages de programmationdift2035/e2009/cours/... · 2009-05-12 · En programmation orientée objet, on cherche à identifier les objets impliqués et leurs responsabilités

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