Notion de type abstrait de données

Documents pareils
Arbres binaires de recherche

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

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

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

Généralités. javadoc. Format des commentaires. Format des commentaires. Caractères spéciaux. Insérer du code

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

Premiers Pas en Programmation Objet : les Classes et les Objets

as Architecture des Systèmes d Information

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

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

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

Auto-évaluation Programmation en Java

Programmer en JAVA. par Tama

RMI le langage Java XII-1 JMF

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

TP1 : Initiation à Java et Eclipse

Introduction à la programmation concurrente

Les arbres binaires de recherche

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

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

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

Chapitre 10. Les interfaces Comparable et Comparator 1

Généralités sur le Langage Java et éléments syntaxiques.

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

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

Chapitre 5 : Les procédures stockées PL/SQL

Programmation Par Objets

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Corrigé des exercices sur les références

Cours 1: Java et les objets

TD/TP PAC - Programmation n 3

Bases de programmation. Cours 5. Structurer les données

Architecture des Systèmes d Information Architecture des Systèmes d Information

Diagramme de classes

Les structures de données. Rajae El Ouazzani

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Programmation Objet Java Correction

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

Développement Logiciel

Création d objet imbriqué sous PowerShell.

Programmation avec des objets : Cours 7. Menu du jour

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

Introduction au langage de programmation Java

Une introduction à Java

1 Définition d une classe en Java

Travaux Dirigés n 1 : chaînes de caractères

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

NIVEAU D'INTERVENTION DE LA PROGRAMMATION CONCURRENTE

et Programmation Objet

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

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

Conventions d écriture et outils de mise au point

Traduction des Langages : Le Compilateur Micro Java

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

Création d un service web avec NetBeans 5.5 et SJAS 9

Environnements de développement (intégrés)

Java DataBaseConnectivity

Classes et Objets en Ocaml.

TD/TP PAC - Programmation n 3

4. Groupement d objets

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Algorithmique & programmation

Chapitre VI- La validation de la composition.

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

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

Cours d initiation à la programmation en C++ Johann Cuenin

Utilisation d objets : String et ArrayList

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

Développement mobile MIDP 2.0 Mobile 3D Graphics API (M3G) JSR 184. Frédéric BERTIN

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

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

Java 1.5 : principales nouveautés

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

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

Paginer les données côté serveur, mettre en cache côté client

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Facultés Universitaires Notre-Dame de la Paix. Conception et Programmation Orientées- Object

Remote Method Invocation (RMI)

Dis papa, c est quoi un bus logiciel réparti?

Exercices INF5171 : série #3 (Automne 2012)

Langage Java. Classe de première SI

Introduction à JDBC. Accès aux bases de données en Java

Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée

Cours de Programmation 2

Algorithmique et Programmation, IMA

LOG4430 : Architecture logicielle et conception avancée

Java Licence Professionnelle CISII,

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

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

Université de Bangui. Modélisons en UML

INITIATION AU LANGAGE JAVA

Alfstore workflow framework Spécification technique

PROGRAMMATION PAR OBJETS

Introduction. Les méthodes. Les méthodes. Identité et égalité. Identité et égalité. La copie d'objets. Identité et égalité.

P r ob lé m a t iq u e d e la g é n é r icit é. Pr in cip e d e la g é n é r icit é e n Ja v a ( 1 /3 )

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

Module.NET 3 Les Assemblys.NET

C++ Programmer. en langage. 8 e édition. Avec une intro aux design patterns et une annexe sur la norme C++11. Claude Delannoy

Cours Programmation Système

Programme Compte bancaire (code)

Transcription:

1 de données

type abstrait = contrat (1) Structures de données Christian Carrez Cnam 2 utilisation implantation contrat l établissement d'un contrat entre l'implanteur et l'utilisateur accord entre les deux parties dire ce qu'il faut faire ne pas dire comment il faut le faire doit être suffisamment précis et rigoureux éviter d'imposer des contraintes d'implantation

type abstrait = contrat (2) Structures de données Christian Carrez Cnam 3 l But: en phase de conception, ne pas être encombré de détails ne pas être influencé par les contraintes secondaires repousser la représentation physique aux étapes ultérieures l un type abstrait de données: quelles sont les opérations quelles sont les propriétés intrinsèques des opérations

type abstrait = contrat (3) Structures de données Christian Carrez Cnam 4 l pour l'implanteur du type, vérifier que la réalisation respecte les propriétés du contrat guide à la mise au point l pour l'utilisateur du type, connaître a priori les propriétés sans savoir comment il est implanté vérifier la validité de son utilisation l exemple: nombres réels avec ses 4 opérations

le type booléen Structures de données Christian Carrez Cnam type booléen opérations vrai faux Ÿ _ nom sémantique pour tout a, b : booléen vrai = faux a = a vrai Ÿ a = a faux Ÿ a = faux a b = ( a Ÿ b ) : Æ booléen : Æ booléen : booléen Æ booléen : booléen booléen Æ booléen : booléen booléen Æ booléen signature ou syntaxe propriétés ou sémantique 5

type table (1) 6 l qu'est-ce qu'une table? structure de conservation d'une quantité fixe d'informations. informations identifiées par un numéro appartenant à un intervalle donné. permet de retrouver une information, préalablement mémorisée, à partir de son numéro. l création d'une table l mémorisation bi i bs l retrouver une information valeur définie en i i, j tab fi changer -ième [ bi.. bs] Æ?, i, e fi [ bi.. bs]æ? [ bi.. bs] Æ?, i Æ e, i [ bi.. bs] Æ?, i Æ e ième fi e

type table (2) Structures de données Christian Carrez Cnam type table nom aucune propriété supposée paramètre élément hiérarchie de type utilise entier, booléen opérations propriétés utilisées tab : entier entier Æ table changer-ième : table entier élément / Æ table ième : table entier / Æ élément opérations partielles bornesup : table Æ entier borneinf : table Æ entier opérations nécessaires défini : table entier Æ booléen pour expliciter les opérations externes, ou observateurs préconditions 7 opérations internes, ou constructeurs

type table (3) 8 préconditions ième(t, k): défini(t, k) changer-ième (t, k, e): borneinf(t) k bornesup(t) sémantique ième(changer-ième(t, i, e), j) = si j = i alors e sinon ième (t, j) fsi borneinf(t) = si t = tab(i, j) alors i sinon soit t = changer-ième(t', k, e); borneinf(t') fsi bornesup(t) = si t = tab(i, j) alors j sinon soit t = changer-ième(t', k, e); bornesup(t') fsi défini(t, k) = si t = tab(i, j) alors faux sinon soit t = changer-ième(t', i, e); si k = i alors vrai sinon défini(t', k) fsi fsi

difficultés du choix des axiomes Structures de données Christian Carrez Cnam 9 l dire la vérité, rien que la vérité (c'est le contrat) pas de contradiction (consistance) suffisamment d'axiomes (complétude) forme d'écriture tente de satisfaire ces critères l pour les observateurs: déduire une valeur et une seule pour tous les arguments vérifiant les préconditions l préciser le moins possible les opérations internes, pour laisser la liberté à l'implanteur l opérations nécessaires pour expliciter les propriétés (défini) => implantation optionnelle à préciser

implantation 10 l transformer la notation fonctionnelle pour réintroduire les variables opérations de construction: T est résultat sans être argument opérations d'accès: T est argument sans être résultat opérations de transformation: T est argument et résultat => transformer par "effet de bord" et non par recopie l représentation regroupement par contiguïté (tableaux ou articles) regroupement par chaînage (pointeurs, allocation/restitution dynamique) l quelle connaissance de cette représentation donne-t-on? l choix des opérations effectives réalisées

outils de Java (1) 11 l Il n'y a que des objets et pas de valeurs (sauf types élémentaires) l arborescence de classe, avec la classe object à la racine l Conséquences pour l'implanteur: variable = référence à un objet = pointeur déclaration d'une variable => pointeur null affectation = affectation de pointeurs égalité = égalité de pointeurs nécessité de définir éventuellement les opérations: clone: copie de la valeur pointée equals: test d'égalité des valeurs pointées

outils de Java (2) 12 l Connaissance du type l classe d'un paquetage publique (public): accessible à tous par défaut: accessibles aux classes du même paquetage l composant d'une classe (objet ou méthode) publique (public): accessible à tous protégé (protected): accessible aux classes du paquetage et aux classes dérivées sous certaines conditions par défaut: accessibles aux classes du même paquetage privée (private): accessible à l'intérieur de la classe paquetage classes composants méthodes interfaces constantes méth. abst.

outils de Java (3) 13 l Construction des objets 1 constructeur par défaut si aucun fourni l'implanteur définit un ou plusieurs constructeurs (selon signature) peuvent être public, protégé, privé ou à visibilité par défaut l Destruction des objets automatique par ramasse-miettes redéfinition éventuelle de la méthode finalize l Structures "fourre tout" définir une structure sur la classe object toute classe dérivant de la classe object => pas de contrainte

outils de Java (4) 14 l Structures paramétrées à la création par un (ou des) "specimen" attacher à la structure la classe du ou des specimens contrôler en interne qu'un objet est de la même classe que le specimen l Spécialisation partielle au moyen d'interfaces restreindre les classes possibles du specimen, fonctionnalités devant être implantées par la classe du specimen contrôler qu'un objet a les fonctionnalités attendues l Exemple (fonctionnalité clone attendue) public interface Clonable1 { Object Clone() throws CloneNotSupportedException; }

outils de Java (5) 15 l Prise en compte des erreurs au moyen des exceptions classe spécifique dans l'arborescence Throwable levée d'une exception Throw récupération des exceptions (try - catch) la signature d'une méthode doit lister les exceptions que la méthode peut lever spécialisation par des sous classes

outils de Java (6) 16 package bibsd java.les_tables; import bibsdjava.erreurs_types_abstraits.*; class Place { int Numero; Clonable1 Contenu; Place Suivant; } public class Table { int bi, bs; // intervalle Place Tete; // premier couple Class Type_Element; // le type des éléments de la table public Table (int i, int j, Clonable1 Specimen) throws CloneNotSupportedException {} public int Bi () { return bi; } public int Bs () { return bs; } public Object Ieme (int En) throws Erreur_Specification {} public void Changer_Ieme (int En, Clonable1 Avec) throws Erreur_Specification, Erreur_Typage {} }

outils de C++ (1) 17 l connaissance du type toute la connaissance struct Table { const int Bi, Bs; Pt_Place Tete; } connaissance limitée class Table { public:table (const int i, const int j); const int Bi, Bs; private: Pt_Place Tete; void operator= (Table &V) {}}; connaissance partielle aux classes dérivées protected:... l construction des objets constructeurs par défaut l'implanteur définit un ou plusieurs constructeurs exclusion explicite de l'affectation

outils de C++ (2) 18 l destruction des objets destructeur par défaut destructeur explicite défini par l'implanteur l généricité paramétrisation d'une classe par des types => "patrons" (template) => on peut faire des tables d'éléments sans savoir ce que sont ces éléments paramétrisation par des opérations => faire un tri sans savoir ce qu'est effectivement l'opération "<" l prise en compte des erreurs au moyen des exceptions une exception retourne un objet quelconque

outils de C++ (3) 19 template <class Element> class Table { public: Table (const int i, const int j): Bi(i), Bs(j) {Tete = 0;}; ~Table (); const int Bi, Bs; Element Ieme (const int En) const throw (Erreur_Specification); void Changer_Ieme (const int En, const Element &Avec); private: struct Place {int Numero; Element Contenu; Place* Suivant;}; typedef Place* Pt_Place; Pt_Place Tete; // ci-dessous, operations interdites void operator= (const Table<Element> &Valeur) {} Table (const Table<Element> &Copie) {} };

outils de Ada 95 (1) Structures de données Christian Carrez Cnam 20 l connaissance du type complète type Table (Bi, Bs : Integer) is record Tete : Pt_Place; end record; partielle (affectation et égalité) type Table(Bi, Bs : Integer) is private; limitée (uniquement les opérations fournies) type Table(Bi, Bs : Integer) is limited private; fournir la plus grande connaissance, tout en garantissant le bon fonctionnemment, quoiqu'il arrive l hérarchie des paquetages les utilisateurs ont accès à la partie visible de la spécification les enfants ont accès à la partie privée de la spécification de leurs parents

outils de Ada 95 (2) Structures de données Christian Carrez Cnam 21 l construction des objets initialisation des objets à la création, implicitement ou explicitement l destruction des objets pas de pointeur => automatique avec pointeurs => du ressort de l'implanteur (Finalisation) l généricité paramétrisation des modules par des types => on peut faire des tables d'éléments sans savoir ce que sont ces éléments paramétrisation par des opérations => faire un tri sans savoir ce qu'est effectivement l'opération "<" l prise en compte des erreurs au moyen des exceptions

outils de Ada 95 (3) Structures de données Christian Carrez Cnam 22 with Ada.Finalization; generic type Element is private; -- type des éléments de la table package Tables is type Table (Bi, Bs : Integer) is limited private; function Ieme (De : Table; En : Integer) return Element; procedure Changer_Ieme(De : in out Table; En : Integer; Avec : Element); private type Place; type Pt_Place is access Place; type Table (Bi, Bs : Integer) is new Ada.Finalization.Limited_Controlled with record Tete : Pt_Place := null; end record; procedure Finalize (T : in out Table); end Tables;