CSI1502: Principes fondamentaux de conception de logiciels Chapitre 12: Structures de données.

Slides:



Advertisements
Présentations similaires
Cours n° 7 Standard Template Library II.
Advertisements

Cours n° 6 Standard Template Library I.
Structures de données et complexité
Structures de données et complexité LIFO – FILO – FIFO – etc…
Introspection et Réflexion Manipulation dynamique de code Java.
Au programme du jour …. Ce que vous navez pas encore vu Constantes et variables de classe Main et Tests Utilisation de lAPI Existence des packages Existence.
Au programme du jour …. Un peu plus de structures de données
La classe String Attention ce n’est pas un type de base. Il s'agit d'une classe défini dans l’API Java (Dans le package java.lang) String s="aaa"; // s.
Cours n° 8 Conception et Programmation à Objets
La programmation générique avec la STL EIUMLV - Informatique et Réseaux 99 Benoît ROMAND.
Approfondissement du langage
(Classes prédéfinies – API Java)
Algorithme et structure de données
JAV - TD 6 Structures de données JAVA
Pattern État PowerPoint 2003, télécharger la visionneuse PowerPoint Viewer dernière édition si vous ne lavez pas…télécharger la visionneuse PowerPoint.
Structures collectives en Java
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.
Programmation orientée objet
JavaBeans Réalise par: EL KHADRAOUY TARIK AOUTIL SAFOWAN.
Structures de données et algorithmes – C5 Maria-Iuliana Dascalu, PhD
Les méthodes en java Une méthode est un regroupement d’instructions ayant pour but de faire un traitement bien précis. Une méthode pour être utilisée.
Les collections d'objets
POO-L3 H. Fauconnier1 Chapitre IV 1. classe Object, clonage 2. interfaces 3. classes internes et imbriquées.
II. Chaînage, SDD séquentielles
Leçon 6 : Structures de données dynamiques IUP 2 Génie Informatique Méthode et Outils pour la Programmation Françoise Greffier.
IFT313 Introduction aux langages formels
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
© 2007 P. Van Roy. All rights reserved. FSAB1402: Informatique 2 Le Langage Java et les Exceptions Peter Van Roy Département dIngénierie Informatique,
77 Utilisation des classes (suite). 7-2 Objectifs A la fin de ce cours, vous serez capables de : Définir des méthodes surchargées dans une classe Fournir.
Chapitre 21 Collections Partie I Introduction Une collection : est un objet qui regroupe multiple éléments dans une unité. Une collection est.
Structures de données IFT-2000
Structures de données IFT-2000
Structures de données IFT-2000 Abder Alikacem Standard Template library Édition Septembre 2009 Département dinformatique et de génie logiciel.
66 Utilisation des classes et des objets. 6-2 Objectifs A la fin de ce cours, vous serez capables de : Créer de nouvelles classes à laide de Eclipse Utiliser.
Rappels Java.
Introduction au paradigme orienté-objet (suite)
Présentation Structures de Données et TDA
Vector, Iterator, LinkedList
1 IFT 6800 Atelier en Technologies dinformation Le langage de programmation Java chapitre 3 : Classes et Objects.
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 :
Standard Template Library
CSI1502 Introduction au génie logiciel
CSI 1502 Principes fondamentaux de conception de logiciels
CSI1502 Principes fondamentaux en conception des logiciels
CSI 1502 Principes fondamentaux de conception de logiciels
Java, les objets : tout de suite ! Rassembler, grouper les objets
Structures de données IFT-10541
Objectifs À la fin de ce cours, vous serez capables de :
Ch. PAUL - Piles et Files à l'aide de listes chainées
LES PILES ET FILES.
Cours 7 Classes locales Clonage Divers: tableaux.
Un visiteur… …venu d’ailleurs Whooooooooooooooo!!!
Master 1 SIGLIS Java Lecteur Stéphane Tallard Les erreurs communes en Java.
© 2005 P. Van Roy. All rights reserved. FSAB1402: Informatique 2 Le Langage Java Peter Van Roy Département d’Ingénierie Informatique, UCL
ETNA – 1ème année Guillaume Belmas –
Structures de données avancées : Arbres ‘Left Leaning Red-Black’
Un visiteur… …venu d’ailleurs
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.
CSI 1502 Principes fondamentaux de conception de logiciels
Liste Une liste est une séquence d’éléments. Concept important: Chaque élément possède une position dans la liste. Notation: De quelles opérations a-t-on.
Types abstraits de données (TAD)
CSI2510 Structures des Données et Algorithmes
BlueJ_III 1 Java, les objets : tout de suite ! Interaction entre objets Notes de cours associées au chapitre 3 tutorial BlueJ
Chapter 12: Structures de données
LISTES.
Transcription de la présentation:

CSI1502: Principes fondamentaux de conception de logiciels Chapitre 12: Structures de données

2 Objectif d'apprentissage: Structures de données Quelques techniques pour l'organisation et la gestion d'information Comprendre: Collections dans Java Type de donnée abstraite / Abstract Data Types (ADTs) Structures dynamiques et listes chaînées Structures de données linéaires: queues et piles

3 Une collection est un objet qui sert à stocker autres objets, e.g. collection d'étudiants, CD, magazines, nourriture Une collection offre des services tels que l'addition, l'enlèvement, et la gestion des éléments qu'elle contient Parfois les éléments dans une collection sont ordonnés, parfois ils ne sont pas Parfois les collections sont homogènes, parfois elles sont hétérogènes Qu'est-ce une Collection?

4 Abstract Data Types: Implementing a collection Un type de donnée abstraite (ADT) est une collection d'information organizée et un ensemble d'opérations utilisé pour gérer cette information L'ensemble d'opérations définit l'interface à l'ADT On implémente un ADT utilisant une structure de donnée dynamique Une structure de donnée dynamique grandit et rétrécit lors de l'exécution comme nécessaire Une structure de donnée dynamique est implémentée avec des chaînes Question Question: Est-ce qu'un Array est une structure de donnée dynamique?

5 Références d'objet: Utilisé pour les ADTs Une référence d'objet est une variable qui stocke l'adresse de l'objet Une référence peut être appelé un pointeur Les références sont souvent représentées comme diagramme: student John Smith Student john = new Student(“John Smith…”);

6 Références d'objet comme chaînes Supposons que la classe Student contient une référence à un autre objet Student John Smith Jane Jones class Student { STRecord info; // info about the student Student next; // link to another Student object } Student john = new Student(“John Smith…”, null); Student jane = new Student(“Jane Jones..”, null); john.next = jane;

7 Références comme chaînes: La liste chaînée Les références peuvent être utilisé pour créer une variété de structures chaînées, tel qu'une liste chaînée: studentList

8 Le contenu des noeuds (nodes) intermédiaires Les objets stockés ne devraient pas avoir besoin de se concerner des détailles des structures de données dans lesquelles ils sont stockés Par exemple, la classe Student ne devrait pas avoir besoin de stocker le lien ou la chaîne au prochain objet Student object dans la liste Au lieu, on peut utiliser des classes noeuds (node class) séparées avec deux parties: 1) une référence à un objet indépendant et 2) un lien au prochain noeud dans la liste La représentation interne devient une liste chaînée de noeuds

9 Exemple: Une Collection de Magazines Voici un exemple d'une collection d'objet Magazine La collection est gérée par la classe MagazineList, qui contient une classe interne nommée MagazineNode Puisque MagazineNode est private à MagazineList, les méthodes de MagazineList peuvent accéder directement aux informations de MagazineNode sans violer l'encapsulation info next info next info next

10 MagazineRack.java public class MagazineRack { // Creates a MagazineList object, adds several magazines to the // list, then prints it. public static void main (String[] args) { MagazineList rack = new MagazineList(); rack.add (new Magazine("Time")); rack.add (new Magazine("Woodworking Today")); rack.add (new Magazine("Communications of the ACM")); rack.add (new Magazine("House and Garden")); rack.add (new Magazine("GQ")); System.out.println (rack); } }

11 MagazineList.java public class MagazineList { private MagazineNode list; // Sets up an initially empty list of magazines. MagazineList() { list = null; } Continued….

12 MagazineList.java // Creates a new MagazineNode object and adds it to the end of the linked list. public void add (Magazine mag) { MagazineNode node = new MagazineNode (mag); MagazineNode current; if (list == null) list = node; else { current = list; // we are at the list’s beginning while (current.next != null) // walk through the list to the end current = current.next; current.next = node; } } Continued….

13 MagazineList.java // Returns this list of magazines as a string. public String toString () { String result = ""; MagazineNode current = list; while (current != null) { result += current.magazine + "\n"; current = current.next; } return result; } Continued….

14 MagazineList.java public class MagazineList // An inner class that represents a node in the magazine list. // The public variables are accessed by the MagazineList class. private class MagazineNode { public Magazine magazine; public MagazineNode next; // // Sets up the node // public MagazineNode (Magazine mag) { magazine = mag; next = null; } } }

15 Magazine.java public class Magazine { private String title; // // Sets up the new magazine with its title. // public Magazine (String newTitle) { title = newTitle; } // // Returns this magazine as a string. // public String toString () { return title; } }

16 Collection Magazine Une méthode appelée insert peut être défini pour ajouter un noeud n'importe où dans la liste, pour la garder trié, par exemple info next info next info next info next newnode

17 Collection Magazine Une méthode appelée delete peut être défini pour enlever un noeud de la liste info next info next info next

18 Autres représentations pour listes dynamiques Parfois c'est convénient d'implémenter une liste comme une liste chaînée double, avec des références next et previous list

19 Autres implémentations pour listes dynamiques Parfois c'est convénient d'utiliser un header node séparé, avec un count et des références à la tête ( front ) et la queue ( rear ) de la liste count: 4 front rear list

20 Autres implémentations pour listes dynamiques Une liste chaînée peut être une liste circulaire, où le dernier élément de la liste est lié au premier élément de la liste Si la liste chaînée est doublement chaînée, le premier élément dans la liste est aussi lié au dernier élément de la liste Choix pour faire les liens: La représentation doit faciliter les opérations et les rendre facile à implémenter

21 Autres structures de donnée classiques Structures de donnée linéaires classiques, les queues et les piles Structures de donnée non-linéaires classiques, y compris les arbres, les arbres binaires, les graphes et les digraphes CSI2514 présente les structures de donnée en plus de détailles

22 Structure de donnée linéaire 2: Queues Une queue est similaire à une liste mais ajoute des éléments seulement à la fin de la liste et enlève des éléments seulement au début de la liste Ce s'appelle une structure de donnée FIFO: First-In, First- Out Analogie: une ligne d'attente à la banque Utilisé très souvent dans les systèmes opérationnelles Les queues sont souvent utiles dans les simulations ou les situations où des éléments sont sauvegardés en attendant d'être traité enqueue dequeue

23 Queues (suite) On peut définir des opérations pour la queue enqueue - ajoute un élément à la fin de la queue dequeue (ou serve) - enlève un élément du début de la queue empty - retourne vrai (true) si la queue est vide Une queue peut être représenté par une liste chaînée simple (singly-linked list); c'est plus performant si les références sont liées du début vers la fin de la queue

24 Structure de donnée linéaire 2: Piles Un type de donnée abstraite pile est aussi linéaire, comme une liste ou une queue Les éléments sont ajoutés et enlevés d'un bout de la pile seulement C'est donc LIFO: Last-In, First-Out Analogies: une pile d'assiettes dans un placard, une pile de factures à payer, ou une pile de balles de foin dans une grange poppush

25 Piles (suite) Quelques opérations pour les piles: push - ajoute un élément au sommet de la pile pop - enlève un élément du sommet de la pile peek (or top ) - extrait l'élément au sommet de la pile sans l'enlever de la pile empty - retourne vrai (true) si la pile est vide Le package java.util contient une classe Stack Voir Decode.java (page 649) Decode.java

26 Decode.java import java.util.Stack; import cs1.Keyboard; public class Decode { // Decodes a message by reversing each word in a string. public static void main (String[] args) { Stack word = new Stack(); String message; int index = 0; System.out.println ("Enter the coded message:"); message = Keyboard.readString(); System.out.println ("The decoded message is:"); Continued…

27 Decode.java (cont) while (index < message.length()) { // Push word onto stack while (index < message.length() && message.charAt(index) != ' ') { word.push (new Character(message.charAt(index))); index++; } // Print word in reverse while (!word.empty()) System.out.print (((Character)word.pop()).charValue()); System.out.print (" "); index++; } System.out.println(); } } Enter the coded message: Hello world The decoded message is: olleH dlrow

28 Structures de donnée en Java: Classes Collection La librairie standard de Java contient plusieurs classes pour représenter des collections, souvent référé comme Java Collections API Leur implémentation est sous-entendue dans les noms de classes tels que ArrayList et LinkedList Plusieurs interfaces sont utilisées pour définir les opérations sur les collections, telles que List, Set, SortedSet, Map, et SortedMap

29 Sommaire: Chapitre 12 Comprendre: Collections dans Java Type de donnée abstraite / Abstract Data Types (ADTs) Structures dynamiques et listes chaînées Structures de donnée linéaires: queues et piles