Transcript
Page 1: IFT-10541A : Hiver 2003 Semaine 1 : Type de données abstrait

IFT-10541A : Hiver 2003

Semaine 1 :Type de données abstrait

Page 2: IFT-10541A : Hiver 2003 Semaine 1 : Type de données abstrait

2

Programme = Algo. + données

Programmes et informations

information intermédiaire

outputinput

Page 3: IFT-10541A : Hiver 2003 Semaine 1 : Type de données abstrait

3

Conventions Représentation de l’information

conventions de représentation: integer idem pour tout programme sur

un même ordinateur, utilisant le même langage: int x;

conventions d’utilisation: integer pas de décimales: x = 5/2;

Page 4: IFT-10541A : Hiver 2003 Semaine 1 : Type de données abstrait

4

Conventions Structure d’information (de données):

conventions de représentation et d’utilisation d ’un certain type d’information

certaines sont fournies avec les langages: int, float, double, long, etc.

Page 5: IFT-10541A : Hiver 2003 Semaine 1 : Type de données abstrait

5

Conventions de représentation

Structuration de base = types simples

convention de représentation:

int x, y;

choix de représentation {manipulations}

0 0 00

0 0 ±00

± •bit de signe•complément à 1: C1

•complément à 2: C2

Page 6: IFT-10541A : Hiver 2003 Semaine 1 : Type de données abstrait

6

0 0 11

0 0 111

0

1 1 11

1 1 111

0

0 0 00

0 0 001

0

+3

-3

+15

-15

+0

-0

exemple: bit de signe

Conventions de représentation

Page 7: IFT-10541A : Hiver 2003 Semaine 1 : Type de données abstrait

7

Conventions d’utilisation manipulations:

accès: …x…, y = x; mise à jour: x = …; addition: y = x+1;

0 0 11

0 0 100

0 +3 (x)

+1

0 1 000 +4

+

Page 8: IFT-10541A : Hiver 2003 Semaine 1 : Type de données abstrait

8

Conventions d’utilisation0 0 11

0 0 100

0 +3 (x)

+(+1)

0 0 010 +2

-

0 0 11

0 0 101

0 +3 (x)

+(-1)

0 0 010 +2

+

Page 9: IFT-10541A : Hiver 2003 Semaine 1 : Type de données abstrait

9

Conventions d’utilisation0 0 11

0 1 000

0 +3 (x)

-(+4)

0 0 101 -1

-

0 1 00

0 0 110

0 +4

-(+3) (x)

0 0 101 -1

-

Page 10: IFT-10541A : Hiver 2003 Semaine 1 : Type de données abstrait

10

Opérateurs de haut niveau Opérateurs de plus haut niveau:

(plus abstraits)

post/pré-incrémentation: x++; ++x;

post/pré-décrémentation: x--; --x;

donnent une facilité de manipulation

Page 11: IFT-10541A : Hiver 2003 Semaine 1 : Type de données abstrait

11

Conventions transparentes Transparence des types de base:

00011101010101000101010101010010101010000111111100000101….

0 0 0 1 1

int x;

y = x++;

Page 12: IFT-10541A : Hiver 2003 Semaine 1 : Type de données abstrait

12

Types de base Types de base:

en C: int, float, char, double, long, short tableaux, struct, etc.

en Pascal: set

en SmallTalk: dictionnaires: {<clé,élément>}

Page 13: IFT-10541A : Hiver 2003 Semaine 1 : Type de données abstrait

13

Types structurés types de base modélisation de base

traitement numérique (appl. scientifiques) traitement de texte (caractères)

types structurés modélisation d’objets enregistrements (étudiants, cours, BD, …) modélisation orientée objet (OO)

types structurés = agrégation d’éléments de base

Page 14: IFT-10541A : Hiver 2003 Semaine 1 : Type de données abstrait

14

Construction d’un modèle Modélisation:

Réalité Modèle

typedef struct { plan pl[6]; } boite;

typedef struct { float x; float y; float z; } pt;

typedef struct { pt p[4]; } plan;

boite b1; float x;

x

Page 15: IFT-10541A : Hiver 2003 Semaine 1 : Type de données abstrait

15

Modélisation = transfert Modélisation:

Réalité Modèle

boite b1;…rotation(b1,45);…

Page 16: IFT-10541A : Hiver 2003 Semaine 1 : Type de données abstrait

16

Les types abstraits

typedef struct { plan pl[6]; } boite;

typedef struct { float x; float y; float z; } pt;

typedef struct { pt p[4]; } plan;

float x;boite b1;…rotation(b1,45);…

boîte noire

Modélisation: modèle près de la réalité modèle distant des détails d’implantation

Page 17: IFT-10541A : Hiver 2003 Semaine 1 : Type de données abstrait

17

Les types abstraits programme indépendant de

l’implantation du type boite :

boite b1, b2, b3;créer(b1, …);b2 = b1;b3 = b2;rotation(b1,45);pose_sur(b2,b3);

boite est alors un type abstrait!

Page 18: IFT-10541A : Hiver 2003 Semaine 1 : Type de données abstrait

18

Les types abstraits un type abstrait:

est défini uniquement par ses conventions d’utilisation par le comportement des objets de ce type (i.e., par

les fonctions applicables sur les objets de ce type) ne décrit pas le modèle d’implantation choisi

sert à isoler les programmes des données crée une indépendance des applications face aux

modèles d’implantation (continuité de la programmation structurée)

permet l’encapsulation de la définition d’un type

Page 19: IFT-10541A : Hiver 2003 Semaine 1 : Type de données abstrait

19

Les types abstraits Indépendance

programmes/données: modularité de développement facilité d’assemblage de modules validation modulaire et continue réutilisation coût d’entretien

Page 20: IFT-10541A : Hiver 2003 Semaine 1 : Type de données abstrait

20

L’interface avec les types de données de base :

donnéesprogramme

interface

int x, y;

y = x + 1;

int x, y;=, +, -, ++, --, *, /, ...

Page 21: IFT-10541A : Hiver 2003 Semaine 1 : Type de données abstrait

21

L’interface avec des types structurés :

donnéesprogramme

interface

boite b1;

rotation(b1,45);

boite b1;rotation, pose_sur, ...

Page 22: IFT-10541A : Hiver 2003 Semaine 1 : Type de données abstrait

22

Modèles d’implantation Choix d’un modèle d’implantation :

Besoins de l’application: temps de réponse volume de données volatilité des données

Ressources disponibles : temps CPU espace-mémoire systèmes d’exploitation et architecture du système complexité: temps de développement, d’implantation

et de mise à jour

Page 23: IFT-10541A : Hiver 2003 Semaine 1 : Type de données abstrait

23

Définition d’un type abstrait Programmation d’un type abstrait :

donnéesprogramme

interfacespécification formelled’un type abstrait

choix d’un modèled’implantation 

indépendants!!!

Page 24: IFT-10541A : Hiver 2003 Semaine 1 : Type de données abstrait

24

Cours de structures de données

Gestionnairede données

Programmeurd’application

interface

donnéesprogramme

spécification formelled’un type abstrait

choix d’un modèled’implantation 

Cours de structures de données

Page 25: IFT-10541A : Hiver 2003 Semaine 1 : Type de données abstrait

25

Tâches à maîtriser

Analyse:-besoins-contraintes

Conception:-choisir un modèle d ’implantation-réaliser l’implantation

Gestionnairede données

Programmeurd’application

interface

donnéesprogramme

spécification formelled’un type abstrait

choix d’un modèled’implantation 

3

4

1 2

Page 26: IFT-10541A : Hiver 2003 Semaine 1 : Type de données abstrait

26

Liste ordonnée d’éléments (int) L = <8,1,5,4,6> L1 = 8, L2 = 1, L3 = 5, L4 = 4, L5 = 6 <8,1,5,4,6> <8,1,4,6,5>

Utilité?

Un exemple : une liste ordonnée

Page 27: IFT-10541A : Hiver 2003 Semaine 1 : Type de données abstrait

27

Liste ordonnée d’éléments (int) L = <8,1,5,4,6> L1 = 8, L2 = 1, L3 = 5, L4 = 4, L5 = 6 <8,1,5,4,6> <8,1,4,6,5>

Utilité? liste de réquisitions

Réq.#1:2000 chemises1000 pantalons1500 cravates...

Réq.#2Réq.#3

Réq.#1

Un exemple : une liste ordonnée

Page 28: IFT-10541A : Hiver 2003 Semaine 1 : Type de données abstrait

28

Liste ordonnée d’éléments (int) L = <8,1,5,4,6> L1 = 8, L2 = 1, L3 = 5, L4 = 4, L5 = 6 <8,1,5,4,6> <8,1,4,6,5>

Utilité? liste de réquisitions file d’attente

32

1

Un exemple : une liste ordonnée

Page 29: IFT-10541A : Hiver 2003 Semaine 1 : Type de données abstrait

29

Liste ordonnée d’éléments (int) L = <8,1,5,4,6> L1 = 8, L2 = 1, L3 = 5, L4 = 4, L5 = 6 <8,1,5,4,6> <8,1,4,6,5>

Utilité? liste de réquisitions file d’attente parcours de graphe

4

85

6

1

Un exemple : une liste ordonnée

Page 30: IFT-10541A : Hiver 2003 Semaine 1 : Type de données abstrait

30

Liste ordonnée d’éléments (int) L = <8,1,5,4,6> L1 = 8, L2 = 1, L3 = 5, L4 = 4, L5 = 6 <8,1,5,4,6> <8,1,4,6,5>

Utilité? liste de réquisitions file d’attente parcours de graphe

4

85

6

1

Un exemple : une liste ordonnée

Page 31: IFT-10541A : Hiver 2003 Semaine 1 : Type de données abstrait

31

Manipulations (opérateurs): L L = ? (i.e., L = 0?) x L? Li

x = L?

L L +i x L -i L L L - x L = L’? L L’? L L’? lister L

L = <8,1,5,4,6>

Opérateurs d'une liste

Page 32: IFT-10541A : Hiver 2003 Semaine 1 : Type de données abstrait

32

Autres opérateurs?

sous-liste de L, à partir de i, pour une longueur de n: L[i,n]

concaténation de listes: L + L’

L = <8,1,5,4,6>

L[2,3] = <1,5,4>

L = <8,1,5,4,6>L’ = <1,9>

L + L’ = <8,1,5,4,6,1,9>

Opérateur : concaténation

Page 33: IFT-10541A : Hiver 2003 Semaine 1 : Type de données abstrait

33

Spécification formelle exemple d’utilisation: L L +posx

prototype de la fonction implantant l’opérateur: liste ajoutL(liste L, typeEl x, int pos, int *err);

préconditions conditions devant être vraies au départ pour assurer le bon fonctionnement de l ’opérateur

L ne doit pas être pleine et pos [1,|L|+1]

postconditions conditions étant vraies (observables) après l’application (correcte) de l’opérateur

L contient x si les préconditions sont respectées L est inchangée sinon *err contient 0 si l'ajout s'est bien déroulé, 1 si L est pleine, 2 si pos [1,|L|+1]

valeur(s) retournée(s) en output de l’application de l ’opérateur: L mise à jour ou L inchangée en cas d'erreurs

Page 34: IFT-10541A : Hiver 2003 Semaine 1 : Type de données abstrait

34

Spécification du type liste : -pos

L -posL

prototype: liste enleverPosEl(liste L, int pos, int *err);

préconditions: pos [1,|L|]

postconditions: L est inchangée si pos [1,|L|] avec *err = 2 L contient un élément de moins, l’élément Lpos avec *err=0,

sinon

valeur(s) retournée(s): L mise à jour ou inchangée en cas d'erreurs

Page 35: IFT-10541A : Hiver 2003 Semaine 1 : Type de données abstrait

35

Spécification du type liste : -

L L - x

prototype: liste enleverXL(liste L, typeEl x, int *err);

préconditions: x doit appartenir à L

postconditions: L contient un élément x de moins (le premier rencontré)

avec *err = 0 *err = 3 si x L

valeur(s) retournée(s): L inchangée si x n’appartenait pas à L L mise à jour sinon

Page 36: IFT-10541A : Hiver 2003 Semaine 1 : Type de données abstrait

36

Spécification du type liste : Lpos

Lpos

prototype: typeEl elL(liste L, int pos, int *err);

préconditions: pos [1,|L|]

postconditions: L est inchangée avec *err = 0 L est inchangée et *err = 2 si pos [1,|L|]

valeur(s) retournée(s): Une copie de Lpos si préconditions respectées


Recommended