Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Week 6: Java Collections Εβδομάδα 6: Συλλογές δεδομένων στην Java.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Ευρετήρια.
Advertisements

Ερωτηματολόγιο Συλλογής Απαιτήσεων Εφαρμογών Υψηλών Επιδόσεων
Πέτσας Δημήτριος Παρουσίαση στο μάθημα: Ψηφιακές Βιβλιοθήκες
Τύποι δεδομένων και τελεστές,
Συλλογές, Στοίβες και Ουρές Σε πολλές εφαρμογές μας αρκεί η αναπαράσταση ενός δυναμικού συνόλου με μια δομή δεδομένων η οποία δεν υποστηρίζει την αναζήτηση.
Διαχείριση Έργου Οργάνωση, σχεδιασμός και προγραμματισμός έργων ανάπτυξης λογισμικού.
-Στοίβα-Ουρά - Πλεονεκτήματα πινάκων -Δομές δεδομένων δευτερεύουσας μνήμης -Πληροφορική και δεδομένα -Παραδείγματα-Προβλήματα ψευδοκώδικα.
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ ΤΜΗΜΑΤΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
Εισαγωγή στους Η/Υ Πίνακες.
ΣΤΟΙΧΕΙΑ ΨΕΥΔΟΚΩΔΙΚΑ ΒΑΣΙΚΕΣ ΔΟΜΕΣ ΒΑΣΙΚΟΙ ΑΛΓΟΡΙΘΜΟΙ ΠΙΝΑΚΩΝ
ΜΑΘ3122/106 Γλώσσα Προγραμματισμού
Προγραμματισμός Ι Πίνακες •Ο πίνακας είναι μία συλλογή μεταβλητών ίδιου τύπου, οι οποίες είναι αποθηκευμένες σε διαδοχικές θέσεις μνήμης. Χρησιμοποιείται.
Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού
Πρόγραμμα Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ. Ε
Εκτέλεση Αλγορίθμων σε ψευδογλώσσα
Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 1 Εβδομάδα 9: Διανύσματα και λίστες.
Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 1 Εβδομάδα 3: Υλοποίηση μεθόδων.
TEMPLATES STANDARD TEMPLATE LIBRARY ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ C Evangelos Theodoridis.
Αλγόριθμοι Ταξινόμησης
Προγραμματισμός PASCAL Πληροφορική Γ' Λυκείου μέρος γ
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Week 11: Intro to Applets Εβδομάδα 11: Εισαγωγή στα Applets.
Αντικειμενοστρεφής Προγραμματισμός, Αντώνιος Συμβώνης, Πανεπιστήμιο Ιωαννίνων, Slide 1 Week 13: Review Εβδομάδα 13: Ανασκόπηση.
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Week 4: Exceptions Εβδομάδα 4: Εξαιρέσεις [Exceptions]
Page  1 Ο.Παλιάτσου Γαλλική Επανάσταση 1 ο Γυμνάσιο Φιλιππιάδας.
ΝΕΟ ΑΝΑΛΥΤΙΚΟ ΠΡΟΓΡΑΜΜΑ Α’, Β’, & Γ’ ΓΥΜΝΑΣΙΟΥ ΟΜΑΔΑ ΕΡΓΑΣΙΑΣ Ανδρέας Σ. Ανδρέου (Αναπλ. Καθηγητής ΤΕΠΑΚ - Συντονιστής) Μάριος Μιλτιάδου, Μιχάλης Τορτούρης.
Κώστας Διαμαντάρας Τμήμα Πληροφορικής ΤΕΙ Θεσσαλονίκης 2011 Συστολικοί επεξεργαστές.
© GfK 2012 | Title of presentation | DD. Month
Εισαγωγή στον Προγραμματισμό (στη γλώσσα Java)
Αντικείμενα, Κλάσεις και Μέθοδοι
Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 1 Εβδομάδα 7: Συμβολοσειρές.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Συλλογές.
Επανάληψη βασικών αρχών του αντικειμενοστρεφούς προγραμματισμού
Ισορροπημένα Δένδρα TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Μπορούμε να επιτύχουμε χρόνο εκτέλεσης για.
Δομές Αναζήτησης TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Χειριζόμαστε ένα σύνολο στοιχείων όπου το κάθε.
1 Α. Βαφειάδης Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Τρίτο Συστήματα.
Δομές Δεδομένων 1 Στοίβα. Δομές Δεδομένων 2 Στοίβα (stack)  Δομή τύπου LIFO: Last In - First Out (τελευταία εισαγωγή – πρώτη εξαγωγή)  Περιορισμένος.
ΚMΕΚMΕ Κυριότεροι Καταχωρητές της ΚΜΕ του υπολογιστή TRN KME APC I IRX.
Ο ΗΛΕΚΤΡΟΝΙΚΟΣ ΥΠΟΛΟΓΙΣΤΗΣ
Τεχνολογία ΛογισμικούSlide 1 Αλγεβρική Εξειδίκευση u Καθορισμός τύπων αφαίρεσης σε όρους σχέσεων μεταξύ τύπων λειτουργιών.
Συνδυαστικά Κυκλώματα
Μοντέλα Συστημάτων Παρουσιάσεις των συστημάτων των οποίων οι απαιτήσεις αναλύονται.
Προγραμματισμός ΙΙ Διάλεξη #5: Εντολές Ανάθεσης Εντολές Συνθήκης Δρ. Νικ. Λιόλιος.
Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 1 Εβδομάδα 11: Εκτέλεση Java χωρίς το BlueJ.
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Κληρονομικότητα.
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής (Αντικειμενοστρεφής Προγραμματισμός)
ANAKOINWSH H 2η Ενδιάμεση Εξέταση μεταφέρεται στις αντί για , την 24 Νοεμβρίου στις αίθουσες ΧΩΔ και 110 λόγω μη-διαθεσιμότητας.
Ανάπτυξη Πρωτοτύπου Λογισμικού
ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ 2: ΘΕΜΑΤΑ ΘΕΩΡΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ Η/Υ
Lists– Λίστες 1. Αυτό-αναφορικές δομές Τα μέλη μίας δομής μπορεί να είναι οποιουδήποτε τύπου, ακόμα και δείκτες σε δομές του ίδιου τύπου. Χρησιμοποιώντας.
Δείκτες (Pointers) – Δομές (Structs)
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Γενικευμένες κλάσεις Συλλογές.
Βάσεις Δεδομένων Εργαστήριο ΙΙ Τμήμα Πληροφορικής ΑΠΘ
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 1 Κεφάλαιο 3 Η Σημασιολογία των Γλωσσών Προγραμματισμού Προπτυχιακό.
TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Ουρά Προτεραιότητας (priority queue) Δομή δεδομένων που υποστηρίζει.
Computers: Information Technology in Perspective By Long and Long Copyright 2002 Prentice Hall, Inc. Προγραμματισμός Η / Υ 6 η Διάλεξη.
Δομές Δεδομένων - Ισοζυγισμένα Δυαδικά Δένδρα (balanced binary trees)
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Τάξεις και Αφαίρεση Δεδομένων.
ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ 2: ΘΕΜΑΤΑ ΘΕΩΡΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ Η/Υ
Λεξικό, Union – Find Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές.
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
Τεχνολογία ΛογισμικούSlide 1 Εξειδίκευση Βασισμένη σε Μοντέλο u Τυπική εξειδίκευση λογισμικού με ανάπτυξη μαθηματικού μοντέλου για το σύστημα.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα.
Αρχεσ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ ΤΑξη Β΄
Εβδομάδα 12: Ανασκόπηση.
Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ΑΕΠΠ
Εφαρμογή Μεθοδολογίας ICONIX
Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό (στη γλώσσα Java)
Μεταγράφημα παρουσίασης:

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Week 6: Java Collections Εβδομάδα 6: Συλλογές δεδομένων στην Java

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 2 Συλλογές δεδομένων [collections] Οι συλλογές [collections] (αναφέρονται και ως «υποδοχείς δεδομένων» [containers]) είναι κλάσεις που χρησιμοποιούνται για την αποθήκευση αντικειμένων Αποθηκεύουν μία συλλογή από στοιχεία [elements] Το αντικείμενο τύπου «συλλογής» Τα στοιχεία

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 3 Διανύσματα και συνδεδεμένες λίστες Οι συλλογές μπορεί να υλοποιηθούν με δύο διαφορετικές δομές δεδομένων: τα διανύσματα και τις συνδεδεμένες λίστες/δομές διάνυσμα Συνδεδεμένη λίστα

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 4 Διανύσματα [arrays] Υποστηρίζονται ως μέρος της Java Διαθέσιμα σε σχεδόν όλες τις γλώσσες προγραμματισμού Απευθείας αντιστοίχιση με την αρχιτεκτονική του υπολογιστή

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 5 Συνδεδεμένες δομές Μπορεί να υλοποιηθούν σε κάθε γλώσσα που υποστηρίζει αναφορές [references] ή δείκτες [pointers] (σχεδόν όλες οι σύγχρονες γλώσσες προγραμματισμού)

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 6 Εισαγωγή σε συνδεδεμένες λίστες πριν μετά

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 7 Διαγραφή από συνδεδεμένες λίστες πριν μετά

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 8 Άλλες συνδεδεμένες δομές Γράφημα δένδρο

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 9 Σύγκριση Ποια δομή υπερτερεί; Τα διανύσματα ή οι συνδεδεμένες δομές; Θέματα : –Αύξηση μεγέθους [growing] –Εισαγωγή στοιχείου –Διαγραφή στοιχείου –Προσπέλαση –Απαιτούμενη μνήμη

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 10 Διανύσματα μεταβλητού μεγέθους Τα διανύσματα στην γνήσια μορφή τους δεν είναι πρακτικά γιατί δεν μπορεί να αυξήσουν το μήκος τους όταν αυτό απαιτείται. Η λύση: «διανύσματα μεταβλητού μεγέθους» Ένα διάνυσμα μεταβλητού μεγέθους χρησιμοποιεί μία κλάση για να αποθηκεύει ένα απλό διάνυσμα. Όταν απαιτείται, η κλάση αντικαθιστά το διάνυσμα το οποίο χρησιμοποιεί με άλλο μεγαλύτερο. Το διάνυσμα χρησιμοποιείται με έμμεσο τρόπο. [Growable arrays]

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 11 Επανακαταχώρηση διανύσματος Νέο στοιχείο Δημιουργεί μεγαλύτερο διάνυσμα Αντιγράφει σε αυτό όλα τα στοιχεία Εισάγει το νέο στοιχείο Διαγράφει το παλιό διάνυσμα

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 12 Χωρητικότητα [capacity] Η επανακαταχώρηση είναι μία «ακριβή» λειτουργία Το μέγεθος του διανύσματος πρέπει να είναι μεγαλύτερο από το άμεσα αναγκαίο έτσι ώστε η προσθήκη κάθε νέου στοιχείου να μην προκαλεί επανακαταχώρηση του διανύσματος. Μέγεθος [size] σε αντιπαράθεση με χωρητικότητα [capacity] Μέγεθος: το λογικό μέγεθος των δεδομένων Χωρητικότητα: το φυσικό μέγεθος του διανύσματος

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 13 Αύξηση μεγέθους Διάνυσμα: πιθανή επανακαταχώρηση Συνδεδεμένη δομή: εύκολη Σύγκριση: Υλοποίηση βασιζόμενη σε διανύσματα και σε συνδεδεμένες δομές Πως υλοποιείται η αύξηση μεγέθους; Αποτέλεσμα : 0 : 1 Διάνυσμα : Συνδεδεμένη δομή

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 14 Εισαγωγή στοιχείων Διάνυσμα: άλλα στοιχεία (πιθανώς μεγάλος αριθμός) πρέπει να μετατοπισθούν [shifted] (μόνο εάν τα στοιχεία πρέπει να είναι διατεταγμένα) Συνδεδεμένη δομή: εύκολη Με ποιο τρόπο εισάγονται τα στοιχεία; Αποτέλεσμα : 0 : 2 Διάνυσμα : Συνδεδεμένη δομή

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 15 Διαγραφή στοιχείων Με ποιο τρόπο διαγράφονται τα στοιχεία; Διάνυσμα: άλλα στοιχεία (πιθανώς μεγάλος αριθμός) πρέπει να μετατοπισθούν (μόνο εάν τα στοιχεία πρέπει να είναι διατεταγμένα) Συνδεδεμένη δομή: εύκολη Αποτέλεσμα : 0 : 3 Διάνυσμα : Συνδεδεμένη δομή

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 16 Εισαγωγή στοιχείων Διάνυσμα: μπορεί να πραγματοποιηθεί με δυο καταχωρήσεις – όμοια με τις συνδεδεμένες δομές Στην περίπτωση που η διάταξη των στοιχείων δεν είναι απαραίτητη: Αποτέλεσμα : 1 : 3 Διάνυσμα : Συνδεδεμένη δομή

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 17 Προσπέλαση στοιχείων Με ποιο τρόπο προσπελάζονται τα στοιχεία; Διάνυσμα: άμεση, μια απλή εντολή, σταθερός χρόνος Συνδεδεμένη δομή: διαπέραση της λίστας από την αρχή – πολύ χρονοβόρα διαδικασία στην χειρότερη περίπτωση Αποτέλεσμα : 2 : 3 Διάνυσμα : Συνδεδεμένη δομή

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 18 Απαιτούμενη μνήμη Πόση μνήμη απαιτείται; Διάνυσμα: Μία αναφορά για κάθε στοιχείο (εάν η χωρητικότητα δεν διαφέρει πολύ από τον αριθμό των στοιχείων) Συνδεδεμένη δομή: συνήθως περισσότερη (δεν είναι προφανές από τα διαγράμματα – ισχύει στην πράξη) Αποτέλεσμα : 3 : 3 Διάνυσμα : Συνδεδεμένη δομή

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 19 Ανασκόπηση Όλες οι υλοποιήσεις των συλλογών δεδομένων βασίζονται σε διανύσματα ή σε συνδεδεμένες δομές (ή σε συνδυασμό τους) Η κατανόηση των θεμάτων που αφορούν την υλοποίηση των συλλογών είναι πολύ σημαντική στην εκλογή της κατάλληλης κλάσης-συλλογής της Java (με βάση το συγκεκριμένο σκοπό για τον οποίο πρόκειται να χρησιμοποιηθεί)

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 20 Συλλογές δεδομένων στην Java

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 21 Το πλαίσιο υλοποίησης συλλογών στην Java Στην Java 1.1: μερικές (όχι πολλές) υλοποιήσεις συλλογών δεδομένων ( Vector, Hashtable ) Στην Java 2 (JDK 1.2): Ένα πλαίσιο [framework] υλοποίησης συλλογών δεδομένων Πλαίσιο υλοποίησης: Ένα σύνολο από διαπροσωπείες [interfaces], κλάσεις και αλγορίθμους για συγκεκριμένούς σκοπούς

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 22 Το πλαίσιο υλοποίησης συλλογών στην Java Διαπροσωπείες (τύποι): Οι διαπροσωπείες της Java περιγράφουν διαφορετικούς λογικούς τύπους συλλογών δεδομένων Υλοποιήσεις: κλάσεις της Java που υλοποιούν συγκεκριμένους λογικούς τύπους και λαμβάνουν υπ’ όψιν τους θέματα επίδοσης [performance] (χρόνου και μνήμης) Αλγόριθμοι: στατικές μέθοδοι, διαθέσιμες για διάφορους τύπους συλλογών δεδομένων

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 23 Τα πλεονεκτήματα του πλαισίου υλοποίησης Μείωση της απαιτούμενης προγραμματιστικής εργασίας Αύξηση της ταχύτητας παραγωγής λογισμικού και της ποιότητάς του Μεταφερσιμότητα κώδικα Ευκολία εκμάθησης της χρήσης των συλλογών Επαναχρησιμοποίηση κώδικα

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 24 Διαπροσωπείες Η λογική οπτική γωνία των συλλογών δεδομένων Επικεντρώνονται στη λειτουργικότητα Αφαιρούν/παραβλέπουν τις λεπτομέρειες των υλοποιήσεων Όταν χρησιμοποιούμε μία συλλογή δεδομένων, πρώτα πρέπει να επιλέξουμε την διαπροσωπεία (τη λειτουργικότητα της συλλογής)

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 25 Οι κύριες διαπροσωπείες συλλογών Collection Set SortedSet List Map SortedMap

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 26 Οι κύριες διαπροσωπείες συλλογών (2) public interface Collection { // Basic Operations int size(); boolean isEmpty(); boolean contains(Object element); boolean add(Object element); boolean remove(Object element); Iterator iterator(); // Bulk Operations boolean containsAll(Collection c); boolean addAll(Collection c); boolean removeAll(Collection c); boolean retainAll(Collection c); void clear(); // Array Operations Object [ ] toArray(); Object [ ] toArray(Object a[ ]); } Collection : Ο αφηρημένος υπερτύπος όλων των συλλογών δεδομένων – Ένας υποδοχέας [container] στοιχείων

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 27 Set – Χωρίς επαναλήψεις στοιχείων, χωρίς διάταξη – Παράδειγμα: φοιτητές ενός τμήματος List – διατεταγμένες (ακολουθίες); Επιτρέπει επαναλήψεις στοιχείων, προσπέλαση με βάση τη θέση του στοιχείου στην ακολουθία [index access], (πχ. Vector) – Παράδειγμα: ημερήσιο πρόγραμμα ηλεκτρονικής ατζέντας Map – Προσπέλαση με βάση τη λέξη-κλειδί [key-value] κάθε στοιχείου (πχ. Hashtable) – Ταξινομημένες Οι κύριες διαπροσωπείες συλλογών (3)

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 28 Ταξινομημένες συλλογές δεδομένων Τα στοιχεία ταξινομούνται αυτόματα Τα στοιχεία κάθε τύπου ταξινομούνται με βάση τον ορισμό του τελεστή ταξινόμησής του – Πχ. Οι ακέραιοι ταξινομούνται με βάση την αριθμητική διάταξη, οι ημερομηνίες [Date] με βάση τη χρονολογική διάταξη, οι συμβολοσειρές με βάση την αλφαβητική διάταξη sorted set: παράδειγμα: λίστα φοιτητών τμήματος sorted map: παράδειγμα: λεξικό

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 29 Υλοποίηση ταξινομημένων συλλογών Παράδειγμα: συλλογή SortedSet από φοιτητές Χρειαζόμαστε έναν ορισμό για την «ταξινόμηση» των αντικειμένων Πως λειτουργεί; Λύση: Η διαπροσωπεία Comparable !

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 30 Η διαπροσωπεία Comparable Η διαπροσωπεία Comparable πρέπει να υλοποιείται από τα στοιχεία των ταξινομημένων συλλογών δεδομένων public interface Comparable { int compareTo(Object o); } Comparable Person

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 31 Η χρήση της διαπροσωπείας Comparable Οι ταξινομημένες συλλογές δεδομένων καλούν τη μέθοδο compareTo() των στοιχείων της συλλογής για να επιτύχουν την ταξινόμησή τους Comparable Person compareTo() SortedSet add() compareTo() does a cast of object to Comparable

Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 32 Ανασκόπηση Οι κύριες διαπροσωπείες συλλογών : – Τρεις βασικοί τύπου συλλογών: Set, List, Map – περιγράφουν διαφορετικούς λογικούς τύπους συλλογών δεδομένων Έχουμε ήδη μελετήσει: – Δυο βασικές τεχνικές υλοποίησης: συνδεδεμένες δομές και διανύσματα Επομένη ερώτηση : Ποιες είναι οι υλοποιήσεις; Ποιες είναι οι κλάσεις;