27/02/2006L3 MIAGE - GLO ADA1 Les Paquetages Permettent d’encapsuler un groupe d’entités logiquement reliées. Comme toute unité de programme, le paquetage.

Slides:



Advertisements
Présentations similaires
La programmation orientée objet avec Java L3-MIAGE Plan
Advertisements

PL/SQL : Le Langage PL/SQL est une extension du SQL, qui offre
Cours n° 7 Standard Template Library II.
Rappels de C ECP – Option SA Henri Fallon. Objectifs Théorie + pratique Compréhension générale du langage Repartant « du début » Pour ceux qui savent.
Partie publique Corps Partie privée p1 Un paquetage est constitué dune partie publique dune partie privée et dun corps.
SI3 MAM3 Hydro Nathan Cohen Igor Litovsky Christophe Papazian
Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen
Rappels de C ECP – Option SA Henri Fallon. Objectifs Théorie + pratique Compréhension générale du langage Repartant « du début » Pour ceux qui savent.
1 Révisions. 2 Tableaux non contraints Déclaration du type : type Tvecteur = tableau ( intervalle dentiers) de entiers type Tvecteur is array (integer.
Oracle: OO.
High Frequency Trading Introduction. Séminaires de 30 minutes, une fois par semaine (8 en tout) Sujets abordés – Définition dun algorithme et introduction.
Les entrées /sorties en Java François Bonneville
MRP.
Chapitre IV Object, interfaces, classes imbriquées.
Tests Programmation par contrats
BlueJ_XI 1 Java, les objets : tout de suite ! Gestion des erreurs : les exceptions Notes de cours associées au chapitre 11 tutorial BlueJ
Structures de données linéaires
IPA – Catherine Faron Zucke et Anne Marie Deryr. suite ordonnée d'éléments de taille variable ArrayList liste; liste = new ArrayList (); Ne peuvent contenir.
CYCLE 3 : Alternatives Faire des choix dans un programme en C 1- AIGUILLAGE SIMPLE sur CONDITION : if-else 2-AIGUILLAGE MULTIPLE sur CONDITIONS if-else.
2 - Introduction à VHDL-AMS (1 à 23 = 1h45)
La programmation objet Illustration de la POO en Pascal
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
Gestion des erreurs Packages ©Alain Villeneuve, 1999
Programmation par Objets et Java
Structures de données IFT-2000 Abder Alikacem La librairie STL du C++ Département dinformatique et de génie logiciel Édition Septembre 2009.
Révision des notions OO et Java Semaine 1 Jian-Yun Nie.
Programmation Orienté Objet Application Au Langage JAVA Licence professionnelle ATC ~ 07/08 Bessem BOURAOUI
Introduction à la Programmation Orientée Objet Retour sur les principaux concepts SI3 MAM3 Hydro Nathan Cohen
PLSQL ORACLE 8i Connecter VB à BD Oracle Les collections Question de révision Les blocs anonymes Les triggers REVISION Par : Joël Huot.
IFT313 Introduction aux langages formels Froduald Kabanza Département dinformatique Université de Sherbrooke JavaCC.
IFT313 Introduction aux langages formels
Contrôle de types Les types en programmation Expressions de types Un contrôleur de types Equivalence de types Conversions de types Généricité.
IFT 6800 Atelier en Technologies d’information
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 3 : Classes et Objects.
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
Piles Premier arrivé, dernier servi: LIFO (Last In, First Out) Liste à usage restreint: Enlève et insère un élément seulement à un bout de la liste. Notation:
Chapitre 9 Les sous-programmes.
Types de données abstrait et mécanismes d'encapsulation
COURS DE PROGRAMMATION ORIENTEE OBJET :
CSI1502 Principes fondamentaux en conception des logiciels Chapter 8: Gestion des exceptions.
CSI2520 Le langage Scheme (2) Un langage de programmation fonctionnelle.
Introduction à Linda Béat Hirsbrunner References Nicholas Carriero, David Gelernter : "Linda in context", Communications of ACM, vol. 32 (n° 4, April 1989)

Structures de données IFT-10541
Procédures Stockées Schedule: Timing Topic 60 minutes Lecture
Structures de données IFT-2000
Structures de données IFT-2000
23/03/05SE Info2 - S. L'haire UNIGE1 TP 7 PROCEDURE Inserer(VAR a, crt : AgendaPtr; j, h : INTEGER; IN s : Chaine); VAR nouveau, temp : AgendaPtr; BEGIN.
Heg Haute école de gestion de Neuchâtel Gestionnaire d'exception Procédures stockées PL/SQL.
Implémentation Ada Gestion de la mémoire. Put 20 L'affectation de Comptes (σ-modèle) La sémantique intuitive des comptes ne laisse guère de place à l'affectation.
JavaScript Nécessaire Web.
LES PILES ET FILES.
O-notation 1. Introduction 2. O-notation 3. Opérations 3.1 Somme 3.2 Produit 4. Règles générales 5. Exemple 6.Analyse des algorithmes récursifs 6.1 Dilatation.
Packages et Types De la Spécification Formelle A l'implémentation Ada.
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Analyse de machines.
LIFI-Java 2004 Séance du Mercredi 22 sept. Cours 3.
Informatique de gestion – IO MER L3 – Pierre SOURNAC Informatique de Gestion part III – the macro rises L3 – IO MER
Le Langage de BLOC PL/SQL
Types Abstraits.
Cours 7 Classes locales Clonage Divers: tableaux.
Créer des packages.
Concepts intermédiaires de VHDL
Les classes et les objets Les données finales class A { … private final int n = 20 ; // la valeur de n est définie dans sa déclaration … } class A { public.
CSI 3525, Implémentation des sous-programmes, page 1 Implémentation des sous-programmes L’environnement dans les langages structurés en bloc La structure.
Cours LCS N°4 Présenté par Mr: LALLALI
Introduction  Langage propre à Oracle basé sur ADA  Offre une extension procédurale à SQL  PL/SQL permet d’utiliser un sous-ensemble du langage SQL.
Héritage Conception par Objet et programmation Java
Procédures Stockées Fonctions Paquetages
Nicolas Ribot Introduction aux triggers Nicolas Ribot - Licence GNU FDL - Version 1.1.
Analyse et programmation langage ADA
Transcription de la présentation:

27/02/2006L3 MIAGE - GLO ADA1 Les Paquetages Permettent d’encapsuler un groupe d’entités logiquement reliées. Comme toute unité de programme, le paquetage consiste en une spécification et un corps. L’utilisateur du paquetage n ’a accès qu’à la spécification. Machine abstraite & Type Abstrait

27/02/2006L3 MIAGE - GLO ADA2 Machine Abstraite : Pile (LIFO) Principe : elem1 ????? elem3 elem2 ????? elem1 elem4 elem3 elem2 ????? elem1 elem4 elem3 elem2 ????? Profondeur Top Push(elem4)Pop (elem4)

27/02/2006L3 MIAGE - GLO ADA3 Implémentation Naïve -- LA PILE function Is_Empty return Boolean; function Top return Float; procedure Push (X : in Float); procedure Pop; -- Réalisation de la pile : Max_Size : constant Integer := 10; Items : array (1.. Max_Size) of Float; Index_Of_Top : Integer range 0.. Max_Size := 0; with Io; procedure Main is -- Corps des sous-programmes -- a, b : float := 0.0; -- Les 2 variables sont initialisées !! begin a := 1.0; b := 2.0; push(a); push(b); a := top; pop; Io.put(a); b := top; pop; Io.put(b); end Main;

27/02/2006L3 MIAGE - GLO ADA4 Encapsulation package Stack is function Is_Empty return Boolean; function Top return Float; procedure Push (X : in Float); procedure Pop; Max_Size : constant Integer := 10; Items : array (1.. Max_Size) of Float; Index_Of_Top : Integer range 0.. Max_Size := 0; end Stack; with Io; procedure Main is a, b : float := 0.0; -- Les 2 variables sont initialisées !! begin a := 1.0; b := 2.0; Stack.push(a); Stack.push(b); a := Stack.top; Stack.pop; Io.put(a); b := Stack.top; Stack.pop; Io.put(b); end Main; package body Stack is -- Déclarations locales ATTENTION :  Spécification Corps des sous-programmes -- end Stack; Spécification Corps

27/02/2006L3 MIAGE - GLO ADA5 Danger de cette Implémentation package Stack is function Is_Empty return Boolean; function Top return Float; procedure Push (X : in Float); procedure Pop; Max_Size : constant Integer := 10; Items : array (1.. Max_Size) of Float; Index_Of_Top : Integer range 0.. Max_Size := 0; end Stack; with Io; procedure Main is begin Stack.Index_Of_Top :=1; -- DANGER !!!... end Main; package body Stack is -- Déclarations locales ATTENTION :  Spécification Corps des sous-programmes -- end Stck; Spécification Corps -- Compilation OK

27/02/2006L3 MIAGE - GLO ADA6 Masquage de l ’Information package Stack is function Is_Empty return Boolean; function Top return Float; procedure Push (X : in Float); procedure Pop; end Stack; with Io; procedure Main is begin Stack.Index_Of_Top :=1; -- ERREUR !!! end Main; package body Stack is Max_Size : constant Integer := 10; Items : array (1.. Max_Size) of Float; Index_Of_Top : Integer range 0.. Max_Size := 0; -- Corps des sous-programmes -- end Stack; Spécification Corps -- Compilation KO

27/02/2006L3 MIAGE - GLO ADA7 Premier Bilan La partie spécification du paquetage, à l’instar de celle d’un sous-programme, est visible du client. La partie corps, à l’instar de celle d’un sous- programme, ne l’est pas. On ne rend visible que le strict nécessaire en rejetant le maximum de choses dans le corps.

27/02/2006L3 MIAGE - GLO ADA8 Traitement des exceptions with Io; procedure Main is a : array (1..4) of float := (11,22,33,44) ; Begin begin a(0) := 2.5; exception when Constraint_Error => Io.put ("C_E"); end; for I in a’range loop Stack.push(a); end loop; exception when Stack.FULL_STACK => Io.put(" Pile Pleine "); end Main; package body Stack is Max_Size : constant Integer := 3;... procedure Push (X : in Float) is begin if Index_Of_Top = Max_Size then raise FULL_STACK; end if; Index_Of_Top := Index_Of_Top + 1; Items (Index_Of_Top) := X; end Push; end Stack; Corps package Stack is function Is_Empty return Boolean; function Top return Float; procedure Push (X : in Float); procedure Pop; FULL_STACK : exception ; end Stack; Spécification

27/02/2006L3 MIAGE - GLO ADA9 Unités de Bibliothèque Une unité de biliothèque est une partie de code que l’on peut compiler individuellement. Il s’agit le plus souvent de sous-programmes ou de paquetages. Elle est en général écrite dans des fichiers distincts de celui du programme principal: –fichier.ads : Spécification –fichier.adb : Corps On fait appel aux éléments de cette unité avec la clause with

27/02/2006L3 MIAGE - GLO ADA10 Unités de Bibliothèque package Stack is function Is_Empty return Boolean; function Top return Float; procedure Push (X : in Float); procedure Pop; end Stack; package body Stack is Max_Size : constant Integer := 10; Items : array (1.. Max_Size) of Float; Index_Of_Top : Integer range 0.. Max_Size := 0; -- Corps des sous-programmes -- end Stack; Stack.ads Stack.adb with Io; with Stack; -- !!!!! procedure Main is a, b : float := 0.0; -- Les 2 variables sont initialisées !! begin a := 1.0; b := 2.0; Stack.push(a); -- !!!!!!!!!!!! Stack.push(b); a := Stack.top; Stack.pop; Io.put(a); b := Stack.top; Stack.pop; Io.put(b); end Main; Main.adb Il suffit de lancer la compilation de Main.adb !!

27/02/2006L3 MIAGE - GLO ADA11 Type Abstrait L’utilisateur peut vouloir manipuler un type « Pile » –Pour gérer un tableau de piles –Pour passer des piles en paramètre de sous-programmes  Il faut lui fournir un type « Pile » et les sous-programmes de manipulation associés : pop, push, etc...

27/02/2006L3 MIAGE - GLO ADA12 1ère Idée package Stack is Max_Size : constant Integer := 10; type Vector is array (1.. Max_Size) of Float; type Pile is record Items : Vector; Index_Of_Top : Integer range 0.. Max_Size := 0; end record; function Is_Empty(S : Pile) return Boolean; function Top(S : Pile) return Float; procedure Push (X : in Float, S : in out Pile); procedure Pop(S : in out Pile); end Stack; Stack.ads Quel est le problème ?

27/02/2006L3 MIAGE - GLO ADA13 Solution package Stack is type Pile is private; function Is_Empty(S : Pile) return Boolean; function Top(S : Pile) return Float; procedure Push (X : in Float, S : in out Pile); procedure Pop(S : in out Pile); Stack.ads Intérêt : L’utilisation du type est complètement indépendante du choix d ’implémentation de ce type. end Stack; private Max_Size : constant Integer := 10; type Vector is array (1.. Max_Size) of Float; type Pile is record Items : Vector; Index_Of_Top : Integer range 0.. Max_Size := 0; end record; On y reviendra…

27/02/2006L3 MIAGE - GLO ADA14 Introduction à la Généricité generic Max_Size : integer; package Stack is function Is_Empty return Boolean; function Top return Float; procedure Push (X : in Float); procedure Pop; end Stack; package body Stack is -- Plus de déclaration de Max_Size Items : array (1.. Max_Size) of Float; Index_Of_Top : Integer range 0.. Max_Size := 0; -- Corps des sous-programmes -- end Stack; Stack.ads Stack.adb with Io; with Stack; procedure Main is package myStack is new Stack(20); a, b : float := 0.0; -- Les 2 variables sont initialisées !! begin a := 1.0; b := 2.0; myStack.push(a); -- !!!!!!!!!!!! myStack.push(b); a := myStack.top; myStack.pop; Io.put(a); b := myStack.top; myStack.pop; Io.put(b); end Main; Main.adb  Tout le traitement de la pile ne dépend pas de sa profondeur

27/02/2006L3 MIAGE - GLO ADA15 Type Générique generic type genType is private Max_Size : integer; package Stack is function Is_Empty return Boolean; function Top return genType; procedure Push (X : in genType); procedure Pop; end Stack; package body Stack is Items : array (1.. Max_Size) of genType; Index_Of_Top : Integer range 0.. Max_Size := 0; -- Corps des sous-programmes -- end Stack; Stack.ads Stack.adb with Io; with Stack; procedure Main is package IntegerStack is new Stack(integer,20); package CharacterStack is new Stack(character,10); begin IntegerStack.Push (1); IntegerStack.Push (2); CharacterStack.Push ('A'); CharacterStack.Push ('B'); Io.Put (IntegerStack.Top); Io.Put (CharacterStack.Top); end Main; Main.adb  Tout le traitement de la pile ne dépend pas du type des éléments

27/02/2006L3 MIAGE - GLO ADA16 Généricité : à retenir... La généricité se construit en 4 étapes : –Déclaration des paramètres génériques –Réalisation de l’objet générique en s’appuyant sur les paramètres génériques –Instantiation de l’objet générique  objet non-générique. –Utilisation de l’objet non-générique dans un corps.