Génie Logiciel avec Ada. 4 février 2013



Documents pareils
TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Arbres binaires de recherche

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement

Ensimag 1ère année Algorithmique 1 Examen 2ième session 24 juin Algorithmique 1

Programmer en JAVA. par Tama

Algorithmique & programmation

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

Programmation Orientée Objet

as Architecture des Systèmes d Information

Programmation Objet - Cours II

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

Polymorphisme, la classe Object, les package et la visibilité en Java... 1

Bases de données Oracle Virtual Private Database (VPD) pour la gestion des utilisateurs d applications

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Recherche dans un tableau

Traduction des Langages : Le Compilateur Micro Java

Auto-évaluation Programmation en Java

Objets et Programmation. origine des langages orientés-objet

OCL - Object Constraint Language

Chapitre VI- La validation de la composition.

Une introduction à Java

Introduction à MATLAB R

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

Plan du cours Cours théoriques. 29 septembre 2014

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Classes et Objets en Ocaml.

Débuter avec EXPRESS. Alain Plantec. 1 Schema 2

Initiation à JAVA et à la programmation objet.

Premiers Pas en Programmation Objet : les Classes et les Objets

basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB Olivier Augereau Formation UML

Héritage presque multiple en Java (1/2)

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Structure fonctionnelle d un SGBD

4. Groupement d objets

TP1 : Initiation à Java et Eclipse

Langage Java. Classe de première SI

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Cours de Programmation 2

Cours 1: Java et les objets

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

UML et les Bases de Données

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

Définitions. Numéro à préciser. (Durée : )

A QUOI SERVENT LES BASES DE DONNÉES?

LES TYPES DE DONNÉES DU LANGAGE PASCAL

F. Barthélemy. 17 mai 2005

Programmation Objet Java Correction

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa Novembre 2008

Université de Bangui. Modélisons en UML

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1

TD/TP PAC - Programmation n 3

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Programmation par composants (1/3) Programmation par composants (2/3)

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Cours Bases de données 2ème année IUT

Algorithmique et programmation : les bases (VBA) Corrigé

IFT2255 : Génie logiciel

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Cours 1 : La compilation

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Présentation du PL/SQL

Styler un document sous OpenOffice 4.0

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

Bases Java - Eclipse / Netbeans

Chapitre VIII. Les bases de données. Orientées Objet. Motivation

Introduction à la programmation concurrente

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

3. UML - Unified Modeling Language Diagrammes statiques

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Sage 100 CRM - Guide de la Fusion Avancée Version 8. Mise à jour : 2015 version 8

Université Bordeaux 1, Licence Semestre 3 - Algorithmes et struct...

INITIATION AU LANGAGE JAVA

Le langage VHDL. Eduardo Sanchez EPFL

Programmation VBA/Excel. Programmation VBA. Pierre BONNET. Masters SMaRT & GSI - Supervision Industrielle P. Bonnet

Plan du cours. Historique du langage Nouveautés de Java 7

Information utiles. webpage : Google+ : digiusto/

.NET - Classe de Log

ACTIVITÉ DE PROGRAMMATION

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Plateforme PAYZEN. Définition de Web-services

Le langage C. Séance n 4

NIVEAU D'INTERVENTION DE LA PROGRAMMATION CONCURRENTE

Algorithmique, Structures de données et langage C

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

Diagramme de classes

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

T. A. D. pile. Chapitre 7 (suite) Listes particulières. T. A. D. file. représentation chaînée de la file algorithmique. Files

Cours de Programmation Impérative: Zones de mémoires et pointeurs

Alfstore workflow framework Spécification technique

Java c est quoi? Java pourquoi?

Service On Line : Gestion des Incidents

UML. Diagrammes de classes (suite) Delphine Longuet.

Transcription:

Génie Logiciel 4 février 2013

Plan I. Généralités II. Structures linéaires III. Exceptions IV. Structures arborescentes V. Dictionnaires

I. Principes II. Notions propres à la POO I. Principes Chapitre I Généralités III. Conception de l objet II. Notions propres à la POO III. Conception de l objet

I. Principes II. Notions propres à la POO I. Principes Chapitre I Généralités III. Conception de l objet II. Notions propres à la POO III. Conception de l objet

I. Principes II. Notions propres à la POO I. Principes Chapitre I Généralités III. Conception de l objet II. Notions propres à la POO III. Conception de l objet

I. Principes II. Notions propres à la POO III. Conception de l objet La programmation structurée est basée sur une décomposition en actions. La programmation orientée objet travaille avec une décomposition en objet. Les instructions élémentaires sont les mêmes, mais leur regroupement est différent.

I. Principes II. Notions propres à la POO III. Conception de l objet La programmation structurée est basée sur une décomposition en actions. La programmation orientée objet travaille avec une décomposition en objet. Les instructions élémentaires sont les mêmes, mais leur regroupement est différent.

I. Principes II. Notions propres à la POO III. Conception de l objet La programmation structurée est basée sur une décomposition en actions. La programmation orientée objet travaille avec une décomposition en objet. Les instructions élémentaires sont les mêmes, mais leur regroupement est différent.

I. Principes II. Notions propres à la POO III. Conception de l objet On trouve dans l approche objet trois principes fondamentaux : l encapsulation : un objet regroupe à la fois ses attributs et ses opérations associées, l indépendance temporelle : le comportement d un objet est indépendant du contexte dans lequel il est appelé, l indépendance spatiale : les informations relatives à une même entité sont physiquement dans le même module.

I. Principes II. Notions propres à la POO III. Conception de l objet On trouve dans l approche objet trois principes fondamentaux : l encapsulation : un objet regroupe à la fois ses attributs et ses opérations associées, l indépendance temporelle : le comportement d un objet est indépendant du contexte dans lequel il est appelé, l indépendance spatiale : les informations relatives à une même entité sont physiquement dans le même module.

I. Principes II. Notions propres à la POO III. Conception de l objet On trouve dans l approche objet trois principes fondamentaux : l encapsulation : un objet regroupe à la fois ses attributs et ses opérations associées, l indépendance temporelle : le comportement d un objet est indépendant du contexte dans lequel il est appelé, l indépendance spatiale : les informations relatives à une même entité sont physiquement dans le même module.

I. Principes II. Notions propres à la POO III. Conception de l objet La programmation orientée objet apporte de nouvelles notions : notion de classe : une classe regroupe des objets ayant des propriétés et comportements communs (factorisation des propriétés) en Ada package, notion d héritage : une sous-classe est définie à partir d une classe avec des propriétés supplémentaires; la sous-classe hérite des propriétés et des opérations de la classe parente, notion de polymorphisme notion de liaison dynamique : capacité à associer le service surchargé correct en fonction de la référence de la classe, notion de généricité : pour décrire des données et des opérations indépendantes d éléments de la classe.

I. Principes II. Notions propres à la POO III. Conception de l objet La programmation orientée objet apporte de nouvelles notions : notion de classe : une classe regroupe des objets ayant des propriétés et comportements communs (factorisation des propriétés) en Ada package, notion d héritage : une sous-classe est définie à partir d une classe avec des propriétés supplémentaires; la sous-classe hérite des propriétés et des opérations de la classe parente, notion de polymorphisme notion de liaison dynamique : capacité à associer le service surchargé correct en fonction de la référence de la classe, notion de généricité : pour décrire des données et des opérations indépendantes d éléments de la classe.

I. Principes II. Notions propres à la POO III. Conception de l objet La programmation orientée objet apporte de nouvelles notions : notion de classe : une classe regroupe des objets ayant des propriétés et comportements communs (factorisation des propriétés) en Ada package, notion d héritage : une sous-classe est définie à partir d une classe avec des propriétés supplémentaires; la sous-classe hérite des propriétés et des opérations de la classe parente, notion de polymorphisme notion de liaison dynamique : capacité à associer le service surchargé correct en fonction de la référence de la classe, notion de généricité : pour décrire des données et des opérations indépendantes d éléments de la classe.

I. Principes II. Notions propres à la POO III. Conception de l objet La programmation orientée objet apporte de nouvelles notions : notion de classe : une classe regroupe des objets ayant des propriétés et comportements communs (factorisation des propriétés) en Ada package, notion d héritage : une sous-classe est définie à partir d une classe avec des propriétés supplémentaires; la sous-classe hérite des propriétés et des opérations de la classe parente, notion de polymorphisme notion de liaison dynamique : capacité à associer le service surchargé correct en fonction de la référence de la classe, notion de généricité : pour décrire des données et des opérations indépendantes d éléments de la classe.

I. Principes II. Notions propres à la POO III. Conception de l objet La programmation orientée objet apporte de nouvelles notions : notion de classe : une classe regroupe des objets ayant des propriétés et comportements communs (factorisation des propriétés) en Ada package, notion d héritage : une sous-classe est définie à partir d une classe avec des propriétés supplémentaires; la sous-classe hérite des propriétés et des opérations de la classe parente, notion de polymorphisme notion de liaison dynamique : capacité à associer le service surchargé correct en fonction de la référence de la classe, notion de généricité : pour décrire des données et des opérations indépendantes d éléments de la classe.

I. Principes II. Notions propres à la POO III. Conception de l objet on peut voir trois aspects du polymorphisme : il permet des fonctions de même but, donc de même nom mais dans des classes différentes; par exemple afficher; on parle aussi de surcharge, les fonctions se différencient alors par leurs paramètres (nombre et type) il permet aussi de définir une fonctionnalité sans préciser le type des paramètres; par exemple trier; on parle de généricité, il permet d utiliser une fonctionnalité écrite pour un type sur ses sous-types.

I. Principes II. Notions propres à la POO III. Conception de l objet on peut voir trois aspects du polymorphisme : il permet des fonctions de même but, donc de même nom mais dans des classes différentes; par exemple afficher; on parle aussi de surcharge, les fonctions se différencient alors par leurs paramètres (nombre et type) il permet aussi de définir une fonctionnalité sans préciser le type des paramètres; par exemple trier; on parle de généricité, il permet d utiliser une fonctionnalité écrite pour un type sur ses sous-types.

I. Principes II. Notions propres à la POO III. Conception de l objet on peut voir trois aspects du polymorphisme : il permet des fonctions de même but, donc de même nom mais dans des classes différentes; par exemple afficher; on parle aussi de surcharge, les fonctions se différencient alors par leurs paramètres (nombre et type) il permet aussi de définir une fonctionnalité sans préciser le type des paramètres; par exemple trier; on parle de généricité, il permet d utiliser une fonctionnalité écrite pour un type sur ses sous-types.

I. Principes II. Notions propres à la POO III. Conception de l objet conception de l objet On doit tout d abord établir le plus précisément ce que l on veut faire : c est la phase de spécification. spécifier = construire un modèle abstrait du réel et décrire ce modèle en vue d assurer l adéquation entre produit et utilisation requise du produit. pour représenter le réel on utilise une structure de données structure de données = modèle qui décrit le comportement d un ensemble d informations muni de ses propriétés. Une structure de données peut être vue de l extérieur (valeurs + opérations) et de l intérieur (réalisation concrète).

I. Principes II. Notions propres à la POO III. Conception de l objet conception de l objet On doit tout d abord établir le plus précisément ce que l on veut faire : c est la phase de spécification. spécifier = construire un modèle abstrait du réel et décrire ce modèle en vue d assurer l adéquation entre produit et utilisation requise du produit. pour représenter le réel on utilise une structure de données structure de données = modèle qui décrit le comportement d un ensemble d informations muni de ses propriétés. Une structure de données peut être vue de l extérieur (valeurs + opérations) et de l intérieur (réalisation concrète).

I. Principes II. Notions propres à la POO III. Conception de l objet conception de l objet On doit tout d abord établir le plus précisément ce que l on veut faire : c est la phase de spécification. spécifier = construire un modèle abstrait du réel et décrire ce modèle en vue d assurer l adéquation entre produit et utilisation requise du produit. pour représenter le réel on utilise une structure de données structure de données = modèle qui décrit le comportement d un ensemble d informations muni de ses propriétés. Une structure de données peut être vue de l extérieur (valeurs + opérations) et de l intérieur (réalisation concrète).

I. Principes II. Notions propres à la POO III. Conception de l objet conception de l objet On doit tout d abord établir le plus précisément ce que l on veut faire : c est la phase de spécification. spécifier = construire un modèle abstrait du réel et décrire ce modèle en vue d assurer l adéquation entre produit et utilisation requise du produit. pour représenter le réel on utilise une structure de données structure de données = modèle qui décrit le comportement d un ensemble d informations muni de ses propriétés. Une structure de données peut être vue de l extérieur (valeurs + opérations) et de l intérieur (réalisation concrète).

I. Principes II. Notions propres à la POO III. Conception de l objet étapes spécification fonctionnelle (ou abstraite) : on fait la liste des opérations (avec leurs définitions et restrictions) qui agiront sur les données. C est le document de référence de l utilisateur, spécification opérationnelle : elle consiste en deux étapes description logique : c est l interface entre les deux vues interne et externe; on organise la structure de données en utilisant des structures informatiques classiques (par exemple des tableaux), représentation physique : c est l implémentation complète faite dans un langage de programmation fixé.

I. Principes II. Notions propres à la POO III. Conception de l objet étapes spécification fonctionnelle (ou abstraite) : on fait la liste des opérations (avec leurs définitions et restrictions) qui agiront sur les données. C est le document de référence de l utilisateur, spécification opérationnelle : elle consiste en deux étapes description logique : c est l interface entre les deux vues interne et externe; on organise la structure de données en utilisant des structures informatiques classiques (par exemple des tableaux), représentation physique : c est l implémentation complète faite dans un langage de programmation fixé.

I. Principes II. Notions propres à la POO III. Conception de l objet étapes spécification fonctionnelle (ou abstraite) : on fait la liste des opérations (avec leurs définitions et restrictions) qui agiront sur les données. C est le document de référence de l utilisateur, spécification opérationnelle : elle consiste en deux étapes description logique : c est l interface entre les deux vues interne et externe; on organise la structure de données en utilisant des structures informatiques classiques (par exemple des tableaux), représentation physique : c est l implémentation complète faite dans un langage de programmation fixé.

I. Principes II. Notions propres à la POO III. Conception de l objet étapes spécification fonctionnelle (ou abstraite) : on fait la liste des opérations (avec leurs définitions et restrictions) qui agiront sur les données. C est le document de référence de l utilisateur, spécification opérationnelle : elle consiste en deux étapes description logique : c est l interface entre les deux vues interne et externe; on organise la structure de données en utilisant des structures informatiques classiques (par exemple des tableaux), représentation physique : c est l implémentation complète faite dans un langage de programmation fixé.

I. Principes II. Notions propres à la POO III. Conception de l objet pour spécifier un type de données abstrait on fournira 1 type : les noms des types définis 2 utilise : les types abstraits déjà définis utilisés 3 opérations : les opérations avec leur signature( 1 ) 4 préconditions : les restrictions éventuelles d utilisation des opérations 1. la signature d une opération est sa description syntactique

I. Principes II. Notions propres à la POO III. Conception de l objet pour spécifier un type de données abstrait on fournira 1 type : les noms des types définis 2 utilise : les types abstraits déjà définis utilisés 3 opérations : les opérations avec leur signature( 1 ) 4 préconditions : les restrictions éventuelles d utilisation des opérations 1. la signature d une opération est sa description syntactique

I. Principes II. Notions propres à la POO III. Conception de l objet pour spécifier un type de données abstrait on fournira 1 type : les noms des types définis 2 utilise : les types abstraits déjà définis utilisés 3 opérations : les opérations avec leur signature( 1 ) 4 préconditions : les restrictions éventuelles d utilisation des opérations 1. la signature d une opération est sa description syntactique

I. Principes II. Notions propres à la POO III. Conception de l objet pour spécifier un type de données abstrait on fournira 1 type : les noms des types définis 2 utilise : les types abstraits déjà définis utilisés 3 opérations : les opérations avec leur signature( 1 ) 4 préconditions : les restrictions éventuelles d utilisation des opérations 1. la signature d une opération est sa description syntactique

I. Exemple II. Pile Chapitre II Structures linéaires III. Généricité IV. File V. Allocation dynamique et pointeur VI. Listes chaînées VII. Sémantique de l affectation I. Exemple II. Pile III. Généricité IV. File V. Allocation dynamique et pointeur VI. Listes chaînées VII. Sémantique de l affectation

I. Exemple II. Pile Chapitre II Structures linéaires III. Généricité IV. File V. Allocation dynamique et pointeur VI. Listes chaînées VII. Sémantique de l affectation I. Exemple II. Pile III. Généricité IV. File V. Allocation dynamique et pointeur VI. Listes chaînées VII. Sémantique de l affectation

I. Exemple II. Pile Chapitre II Structures linéaires III. Généricité IV. File V. Allocation dynamique et pointeur VI. Listes chaînées VII. Sémantique de l affectation I. Exemple II. Pile III. Généricité IV. File V. Allocation dynamique et pointeur VI. Listes chaînées VII. Sémantique de l affectation

I. Exemple II. Pile Chapitre II Structures linéaires III. Généricité IV. File V. Allocation dynamique et pointeur VI. Listes chaînées VII. Sémantique de l affectation I. Exemple II. Pile III. Généricité IV. File V. Allocation dynamique et pointeur VI. Listes chaînées VII. Sémantique de l affectation

I. Exemple II. Pile Chapitre II Structures linéaires III. Généricité IV. File V. Allocation dynamique et pointeur VI. Listes chaînées VII. Sémantique de l affectation I. Exemple II. Pile III. Généricité IV. File V. Allocation dynamique et pointeur VI. Listes chaînées VII. Sémantique de l affectation

I. Exemple II. Pile Chapitre II Structures linéaires III. Généricité IV. File V. Allocation dynamique et pointeur VI. Listes chaînées VII. Sémantique de l affectation I. Exemple II. Pile III. Généricité IV. File V. Allocation dynamique et pointeur VI. Listes chaînées VII. Sémantique de l affectation

I. Exemple II. Pile Chapitre II Structures linéaires III. Généricité IV. File V. Allocation dynamique et pointeur VI. Listes chaînées VII. Sémantique de l affectation I. Exemple II. Pile III. Généricité IV. File V. Allocation dynamique et pointeur VI. Listes chaînées VII. Sémantique de l affectation

I. Exemple II. Pile III. Généricité IV. File V. Allocation dynamique et pointeur VI. Listes chaînées VII. Sémantique de l affectation Une structure de données est linéaire lorsque les données sont en quelque sorte les unes derrière les autres : chaque donnée a une donnée successeur et une donnée prédécesseur exception faite éventuellement des données qui sont aux extrémités. Une fois les données rangées, la structure sera amenée à évoluer par l ajout de nouvelles données ou la suppression de données appartenant à la structure. Selon la façon de procéder à ces modifications, on distinguera plusieurs types de structures.

I. Exemple exemple II. Pile III. Généricité IV. File V. Allocation dynamique et pointeur VI. Listes chaînées VII. Sémantique de l affectation Un robot piloté à distance reçoit différents types d instructions pour se déplacer : en avant, en arrière, à droite, à gauche. Il est de plus muni d une mémoire linéaire qui enregistre la suite d instructions et ne démarre qu une fois toutes les instructions reçues. Par exemple, en avant, en avant, à droite, en avant, à gauche, à gauche, en arrière. Le choix du déplacement dépendra de la façon dont est gérée la mémoire : il choisit soit la première instruction entrée soit la dernière. Dans le premier cas sa mémoire fonctionne comme une file. Dans ce dernier cas sa mémoire fonctionne comme une pile.

Génie Logiciel I. Exemple II. Pile 3 Mémoire pile, départ tourné vers le bas III. Généricité IV. File 2 V. Allocation dynamique et pointeur 1 départ VI. Listes chaînées VII. Sémantique de l affectation 0 arrivée -1-2 -3-3 -2-1 0 1 2 3

Génie Logiciel I. Exemple II. Pile 3 Mémoire file, départ tourné vers le bas III. Généricité IV. File V. Allocation dynamique et pointeur VI. Listes chaînées VII. Sémantique de l affectation 2 1 0-1 départ -2 arrivée -3-3 -2-1 0 1 2 3

I. Exemple II. Pile 1. spécification fonctionnelle 2. description logique 3. représentation physique 4. description logique 5. représentation physique 6. description logique 7. représentation physique III. Généricité IV. File V. Allocation dynamique et pointeur VI. Listes chaînées VII. Sémantique de l affectation Une pile est donc une structure de données linéaire dans laquelle ajout et suppression se font au même bout de la structure : son sommet. On dit qu on empile lorsque l on ajoute un nouvel élément à la pile et cet ajout se fait au sommet de la pile. On dit qu on dépile lorsque l on supprime un élément de la pile et puisque la suppression se fait aussi au sommet de la pile, l élément supprimé est nécessairement le dernier élément à avoir été empilé. Une pile est aussi désignée par l acronyme anglais LIFO (Last In First Out). Une pile permet par exemple à un navigateur (Firefox, IE...) de gérer le bouton reculer d une page ou pour un logiciel de gérer la fonctionnalité undo.

spécification fonctionnelle I. Exemple II. Pile 1. spécification fonctionnelle 2. description logique 3. représentation physique 4. description logique 5. représentation physique 6. description logique 7. représentation physique III. Généricité IV. File V. Allocation dynamique et pointeur VI. Listes chaînées VII. Sémantique de l affectation Elle est donc définie par le type de données abstrait pile suivant : type pile utilise type E, type booléen signature initilialiser : pile empiler : (pile,e) pile dépiler : pile pile sommet : pile E vide : pile booléen

I. Exemple II. Pile 1. spécification fonctionnelle 2. description logique 3. représentation physique 4. description logique 5. représentation physique 6. description logique 7. représentation physique III. Généricité IV. File V. Allocation dynamique et pointeur VI. Listes chaînées VII. Sémantique de l affectation préconditions axiomes dépiler(p) est défini si et seulement si vide(p)= Faux sommet(p) est défini si et seulement si vide(p)= Faux vide(initilialiser)= Vrai vide(empiler(p,e))=faux dépiler(empiler(p,e))=p sommet(empiler(p,e))= E remarques : les préconditions précisent la restriction du domaine de définition des deux opérations dépiler et sommet les axiomes assurent le fonctionnement LIFO.

description logique I. Exemple II. Pile 1. spécification fonctionnelle 2. description logique 3. représentation physique 4. description logique 5. représentation physique 6. description logique 7. représentation physique III. Généricité IV. File V. Allocation dynamique et pointeur VI. Listes chaînées Pour représenter une pile on utilisera tout d abord un tableau pour stocker les valeurs de type E. Il nous faut de plus un moyen de repérer le sommet de la pile : on utilisera donc un index sur le tableau qui contiendra l indice de la dernière valeur empilée. Pour ne pas avoir deux objets à gérer pour définir une pile, on regroupera ces deux données tableau + index dans une structure d article. VII. Sémantique de l affectation

description logique I. Exemple II. Pile 1. spécification fonctionnelle 2. description logique 3. représentation physique 4. description logique 5. représentation physique 6. description logique 7. représentation physique III. Généricité IV. File V. Allocation dynamique et pointeur VI. Listes chaînées Pour représenter une pile on utilisera tout d abord un tableau pour stocker les valeurs de type E. Il nous faut de plus un moyen de repérer le sommet de la pile : on utilisera donc un index sur le tableau qui contiendra l indice de la dernière valeur empilée. Pour ne pas avoir deux objets à gérer pour définir une pile, on regroupera ces deux données tableau + index dans une structure d article. VII. Sémantique de l affectation

description logique I. Exemple II. Pile 1. spécification fonctionnelle 2. description logique 3. représentation physique 4. description logique 5. représentation physique 6. description logique 7. représentation physique III. Généricité IV. File V. Allocation dynamique et pointeur VI. Listes chaînées Pour représenter une pile on utilisera tout d abord un tableau pour stocker les valeurs de type E. Il nous faut de plus un moyen de repérer le sommet de la pile : on utilisera donc un index sur le tableau qui contiendra l indice de la dernière valeur empilée. Pour ne pas avoir deux objets à gérer pour définir une pile, on regroupera ces deux données tableau + index dans une structure d article. VII. Sémantique de l affectation

description logique I. Exemple II. Pile 1. spécification fonctionnelle 2. description logique 3. représentation physique 4. description logique 5. représentation physique 6. description logique 7. représentation physique III. Généricité IV. File V. Allocation dynamique et pointeur On va réaliser une pile d entiers de façon à ce qu elle soit réutilisable. Pour cela on utilisera la notion de paquetage qui représente une unité de bibliothèque utilisable par la clause with que l on utilise par exemple pour appeler les procédures d entrée-sortie. Ada nous permet de séparer spécification fonctionnelle et spécification opérationnelle. VI. Listes chaînées VII. Sémantique de l affectation

I. Exemple II. Pile 1. spécification fonctionnelle 2. description logique 3. représentation physique 4. description logique 5. représentation physique 6. description logique 7. représentation physique III. Généricité IV. File V. Allocation dynamique et pointeur VI. Listes chaînées VII. Sémantique de l affectation Dans un fichier toto.ads (de suffixe ads pour Ada Specification) sont déclarés les types implémentant la structure de données les procédures et fonctions de la signature puis dans un fichier toto.adb (de suffixe adb pour Ada Body) seront précisés les corps des procédures et fonctions déclarées dans le fichier toto.ads. Un utilisateur du paquetage toto pourra utiliser tout ce qui est présent dans toto.ads (type et opérations). remarque : le fichier toto.adb peut contenir d autres déclarations servant à la réalisation des opérations de la spécification mais ces opérations n ont pas pour but d être utilisées par un utilisateur du paquetage toto.

le fichier pileentier.ads I. Exemple II. Pile 1. spécification fonctionnelle 2. description logique 3. représentation physique 4. description logique 5. représentation physique 6. description logique 7. représentation physique III. Généricité IV. File V. Allocation dynamique et pointeur package pileentier is type contenant is array ( positive range <>) of integer ; type pile is record tabpile : contenant (1..256) ; top : natural ; end record ; procedure initpile (p : out pile ) ; procedure empiler (p : in out pile ; e : in integer ) ; procedure depiler (p : in out pile ) ; function sommet (p : pile ) return integer ; function pilevide (p : pile ) return boolean ; end pileentier ; VI. Listes chaînées VII. Sémantique de l affectation

I. Exemple II. Pile 1. spécification fonctionnelle 2. description logique 3. représentation physique 4. description logique 5. représentation physique 6. description logique 7. représentation physique III. Généricité IV. File V. Allocation dynamique et pointeur VI. Listes chaînées le fichier pileentier.adb package body pileentier is procedure initpile (p : out pile ) is begin p. top := 0; end initpile ; procedure empiler (p : in out pile ; e : in integer ) is begin p. tabpile (p. top+1) := e ; p. top := p. top+1 ; end empiler ; procedure depiler (p : in out pile ) is begin p. top := p.top 1 ; end depiler ; function sommet (p : pile ) return integer is begin return (p. tabpile (p. top )) ; end sommet ; function pilevide (p : pile ) return boolean is begin return (p. top=0) ; end pile vide ; end pileentier ; VII. Sémantique de l affectation

I. Exemple II. Pile 1. spécification fonctionnelle 2. description logique 3. représentation physique 4. description logique 5. représentation physique 6. description logique 7. représentation physique III. Généricité IV. File V. Allocation dynamique et pointeur VI. Listes chaînées VII. Sémantique de l affectation Cette version pose certains problèmes : 1 elle ne fonctionne que pour des piles d entiers alors que le mécanisme de la pile est indépendant du type des valeurs qu elle contient 2 empiler(p,e) provoque une erreur si p.top = 256 3 sommet(p) ou depiler(p) provoque une erreur si p.top = 0 4 la déclaration d une pile ne l initialise pas et donc on ne peut appeler aucune procédure ou fonction si l on n a pas initialisé préalablement la pile. Pour le point 3, l utilisateur à qui on a fourni les spécifications doit connaître les préconditions et donc un usage impropre de sommet ou depiler est de sa responsabilité (d autant qu il a le moyen de tester si une pile est vide). Pour le point 4, l existence de initpile doit s accompagner d un commentaire pour faire comprendre que son usage est indispensable pour toute pile déclarée.

I. Exemple II. Pile 1. spécification fonctionnelle 2. description logique 3. représentation physique 4. description logique 5. représentation physique 6. description logique 7. représentation physique III. Généricité IV. File V. Allocation dynamique et pointeur VI. Listes chaînées VII. Sémantique de l affectation Cette version pose certains problèmes : 1 elle ne fonctionne que pour des piles d entiers alors que le mécanisme de la pile est indépendant du type des valeurs qu elle contient 2 empiler(p,e) provoque une erreur si p.top = 256 3 sommet(p) ou depiler(p) provoque une erreur si p.top = 0 4 la déclaration d une pile ne l initialise pas et donc on ne peut appeler aucune procédure ou fonction si l on n a pas initialisé préalablement la pile. Pour le point 3, l utilisateur à qui on a fourni les spécifications doit connaître les préconditions et donc un usage impropre de sommet ou depiler est de sa responsabilité (d autant qu il a le moyen de tester si une pile est vide). Pour le point 4, l existence de initpile doit s accompagner d un commentaire pour faire comprendre que son usage est indispensable pour toute pile déclarée.

I. Exemple II. Pile 1. spécification fonctionnelle 2. description logique 3. représentation physique 4. description logique 5. représentation physique 6. description logique 7. représentation physique III. Généricité IV. File V. Allocation dynamique et pointeur VI. Listes chaînées VII. Sémantique de l affectation Cette version pose certains problèmes : 1 elle ne fonctionne que pour des piles d entiers alors que le mécanisme de la pile est indépendant du type des valeurs qu elle contient 2 empiler(p,e) provoque une erreur si p.top = 256 3 sommet(p) ou depiler(p) provoque une erreur si p.top = 0 4 la déclaration d une pile ne l initialise pas et donc on ne peut appeler aucune procédure ou fonction si l on n a pas initialisé préalablement la pile. Pour le point 3, l utilisateur à qui on a fourni les spécifications doit connaître les préconditions et donc un usage impropre de sommet ou depiler est de sa responsabilité (d autant qu il a le moyen de tester si une pile est vide). Pour le point 4, l existence de initpile doit s accompagner d un commentaire pour faire comprendre que son usage est indispensable pour toute pile déclarée.

I. Exemple II. Pile 1. spécification fonctionnelle 2. description logique 3. représentation physique 4. description logique 5. représentation physique 6. description logique 7. représentation physique III. Généricité IV. File V. Allocation dynamique et pointeur VI. Listes chaînées VII. Sémantique de l affectation Cette version pose certains problèmes : 1 elle ne fonctionne que pour des piles d entiers alors que le mécanisme de la pile est indépendant du type des valeurs qu elle contient 2 empiler(p,e) provoque une erreur si p.top = 256 3 sommet(p) ou depiler(p) provoque une erreur si p.top = 0 4 la déclaration d une pile ne l initialise pas et donc on ne peut appeler aucune procédure ou fonction si l on n a pas initialisé préalablement la pile. Pour le point 3, l utilisateur à qui on a fourni les spécifications doit connaître les préconditions et donc un usage impropre de sommet ou depiler est de sa responsabilité (d autant qu il a le moyen de tester si une pile est vide). Pour le point 4, l existence de initpile doit s accompagner d un commentaire pour faire comprendre que son usage est indispensable pour toute pile déclarée.