Chapter 12: Structures de données

Slides:



Advertisements
Présentations similaires
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:
Advertisements

CSI1502: Principes fondamentaux de conception de logiciels Chapitre 12: Structures de données.
Mettre en ligne des cartes.
Université de Nantes CHORD Vincent Trève. Introduction ● Problématique – Comment accéder efficacement aux données réparties sur un système pair à pair?

1 Programmation Orientée Objet ● Qu'est-ce qu'un objet ● Collaboration des objets ● Les classes ● Relations entre les classes – “Utilise”, “Contient”,
1 Programmation en C++ Cycle de vie ● La vie d'un objet ● Destructeur ● Gestion de mémoire dynamique.
Présentation python : Épisode 4 ● Les objets : héritage ● Introduction à l'héritage ● Un exemple illustrant l'héritage ● Détails sur l'appel de méthode.
Concepts pour le contrôle de flux
Cross-Plateform Cours JavaScript
Programmation en C++ Standard Library
Ce videoclip produit par l’Ecole Polytechnique Fédérale de Lausanne
Recherche Summon - HINARI (Module 3)
Lire et manipuler du XML...
Projet de programme et recommandations
Utilisation des Gammes La chaîne numérique en Productique
I- ANALYSE DU BESOIN / Plan
Coloration de graphe, backtracking, branch and bound
LES TABLEAUX EN JAVA.
Session 1 6 mars 2017 Plateforme ICONICS Justine Guégan
Les Tableaux Mme DJEBOURI. D.
SNMP - Comment calculer l'utilisation de la Bande passante
I21 Algorithmique et programmation II
Visite guidée - session 2
Javadoc et débogueur Semaine 03 Version A16.
Bddictionnairique Phase 1
Principes de programmation (suite)
Polymorphisme : règles
Réalisation d'agents de surveillance Zephir
Collecte de données CAPI
Technologies d’intelligence d’affaires
Présentation Structure données abstraite (TDA) Rappel : File
Plan Introduction Parcours de Graphe Optimisation et Graphes
Semaine #4 INF130 par Frédérick Henri.
Techniques du Data Mining
Bonnes pratiques Orienté Objet et Java
Programmation en C++ Classes
Stabilité des porteurs horizontaux (Poutres)
Présentation des EJB Enterprise Java Beans.
Notion De Gestion De Bases De Données
PROGRAMMATION INFORMATIQUE D’INGÉNIERIE II
Guide Utilisateur. Guide Utilisateur.
Type Concret – Type Abstrait
Programmation Orientée Objet
Programmation Android Bases De Données, SQL-lite
Formation sur les bases de données relationnelles.
Développement d’applications interactives
Diagrammes UML 420-KE2-LG.
L1 Technique informatique
Chapitre 2 Le Projet Poterie
© Robert Godin. Tous droits réservés.
Langages de programmation TP11
CHAPITRE 8 Equations - Inéquations
Le code de Huffman: est une méthode de compression statistique de données qui permet de réduire la longueur du codage d'un alphabet. Le code de Huffman.
Reconnaissance de formes: lettres/chiffres
Logiciel de présentation
PRO1026 Programmation et enseignement
7- Nouveaux services pédagogiques pour les élèves
Piles et files.
Le langage C# : Partie 1.
INTERFACE ET POLYMORPHISME
LISTES.
Les inégalités Ch 6,3.
Arbre binaire.
Chapter 11: Récursivité Java Software Solutions Second Edition
STOCKAGE DE DONNEES EN LIGNE
Fonctions.
© Robert Godin. Tous droits réservés.
Les données structurées et leur traitement
Gestion des destinataires (recipients)
Transcription de la présentation:

Chapter 12: Structures de données Presentation slides for Java Software Solutions Foundations of Program Design Second Edition by John Lewis and William Loftus Java Software Solutions is published by Addison-Wesley Presentation slides are copyright 2000 by John Lewis and William Loftus. All rights reserved. Instructors using the textbook may use and modify these slides for pedagogical purposes.

Structures de données Nous pouvons maintenant explorer certaines techniques avancées pour organiser et gérer de l’information Chapitre 12 se concentre sur: Structures dynamiques Les types abstraits de donnés («  Abstract Data Types (ADTs)  ») Listes chaînées Queues Piles

Structures statiques vs. dynamiques Une structure de données statique a une taille fixe Ici, la signification de statique est différente de la signification de static du Java Les tableaux sont statiques. En effet, une fois que le nombre d’éléments que le tableau peut contenir soit défini, il ne change pas dans la suite La taille d’une structure de données dynamique change dépendamment du changement du nombre d’informations qu’elle peut contenir

Références sur des objets Rappelons qu’une référence sur un objet est une variable qui stocke l’adresse de cet objet Une référence peut aussi être appelée un pointeur Une référence est souvent représentée graphiquement par: student John Smith 40725 3.57

Références comme liens Les références sur les objets peuvent être utilisés pour créer des liens entre des objets Supposons qu’une classe appelée Student contient une référence sur un autre objet Student John Smith 40725 3.57 Jane Jones 58821 3.72

Références comme liens Les références peuvent être utilisées pour créer une variété de structures. Par exemple, pour créer une liste chaînée studentList

Types abstraits de données (ADTs) Un type abstrait de données est une collection organisée d’information et un ensemble d’opérations à utiliser pour gérer cette information L’ensemble des opérations défini l’interface de l’ADT Tant que l’ADT répond correctement aux besoins de son monde extérieur (réponse via l’interface du ADT), alors il n’est pas important de savoir comment son implémentation a été faite Les objets sont un mécanisme de programmation parfait pour créer des ADTs, puisque leurs détails internes sont encapsulés

Abstraction Nos structures de données doivent être des abstractions C’est-à-dire, elles doivent cacher des détails Nous voulons séparer l’interface de la structure de l’implémentation de celle-ci Ceci permet de gérer la complexité et de faire des structures plus utiles

Nœuds intermédiaires Les objets en cours de stockage dans une structure de données ne doivent pas avoir de relations avec les détails de cette structure de données Par exemple, la classe Student stocke un lien sur le prochain objet Student dans la liste Au lieu de cela, nous pouvons utiliser une classe nœud séparée qui contient une référence sur l’objet stocké et un lien sur le prochain nœud de la liste Donc, la représentation interne devient en fait une liste chaînée de nœuds

Collection de livres Laissons-nous explorer un exemple d’une collection d’objets Book Cette collection est gérée par la classe BookList qui a une classe privée appelée BookNode Car BookNode est privée à BookList, les méthodes de BookList peuvent accéder directement les données de BookNode sans violer l’encapsulation Voir Library.java (page 500) Voir BookList.java (page 501) Voir Book.java (page 503)

Autres implémentations de listes dynamiques Dans certains cas, il est pratique d’implémenter une liste comme une liste doublement chaînée, avec une référence successeur et une référence prédécesseur list

Autres implémentations de listes dynamiques Dans certains cas, il est pratique d’utiliser un nœud séparé tête qui réfère au début et à la fin de la liste count: 4 front rear list

Queues Une queue est similaire à une liste, mais on ne peut ajouter un élément qu’à la fin de la liste et on ne peut supprimer un élément qu’à partir du début de la liste Elle est appelée une structure de données FIFO («   First-In, First-Out») Analogie: une ligne de gens devant un guichet d’une banque enqueue dequeue

Queues Les opérations sur une queue peuvent être: enqueue – ajouter un élément à la fin de la queue dequeue – supprime un élément à partir du début de la queue empty – retourne vrai si la queue est vide Comme avec l’exemple de liste chaînée, en stockant des références sur des objets génériques, n’importe quel objet peut être stocké dans la queue Queues sont souvent utilisées en simulations

Piles « Stacks » Comme une liste ou une pile, un ADT pile est linéaire Les éléments sont ajoutés et supprimés à partir seulement d’une des extrémités de la pile Elle est donc LIFO («  Last-In, First-Out  ») Analogie: pile d’assiettes

Pile (« Stacks ») Les piles sont souvent schématisées verticalement: pop push

Pile (« Stacks ») Des opérations sur les piles peuvent être: push – ajouter un élément au sommet de la pile pop - supprimer un élément du sommet de la pile peek - extraire l’élément du sommet de la pile empty – retourne vide si la pile est vide Le java.util package contient une classe Stack qui est implémentée en utilisant Vector Voir Decode.java (page 508)