Corso di Progettazione del Software

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Corso di Progettazione del Software"

Transcript

1 T. Mancini & M. Scannapieco S.JOO.6 Java Collections Framework February 2, 2008 p. 1/28 Università degli Studi di Roma La Sapienza Facoltà di Ingegneria Corso di Laurea in Ingegneria Gestionale Corso di Progettazione del Software Proff. Toni Mancini e Monica Scannapieco Dipartimento di Informatica e Sistemistica Università di Roma La Sapienza S.JOO.6 Java Collections Framework versione del February 2, 2008

2 T. Mancini & M. Scannapieco S.JOO.6 Java Collections Framework February 2, 2008 p. 2/28 odifiche rispetto alle versioni precedenti Aggiunte alcune slides in coda riguardo le classi generics supportate da Java 1.5 e la versione del JCF realizzata mediante generics. Rispetto alla versione del 9 Febbraio 2007

3 T. Mancini & M. Scannapieco S.JOO.6 Java Collections Framework February 2, 2008 p. 3/28 Introduzione al JCF Il Java Collections Framework è una libreria formata da un insieme di interfacce e di classi che le implementano per lavorare con gruppi di oggetti (collezioni). Le interfacce e le classi del Collections Framework si trovano nel package java.util Il Collections Framework comprende: Interfacce: rappresentano vari tipi di collezioni di uso comune. Implementazioni: sono classi concrete che implementano le interfacce di cui sopra, utilizzando strutture dati efficienti (vedi corso di Algoritmi e Strutture Dati). Algoritmi: funzioni che realizzano algoritmi di uso comune, quali algoritmi di ricerca e di ordinamento su oggetti che implementano le interfacce del Collections Framework.

4 T. Mancini & M. Scannapieco S.JOO.6 Java Collections Framework February 2, 2008 p. 4/28 Introduzione al JCF (2) Perchè usare il Collections Framework? Generalità: permette di modificare l implementazione di una collezione senza modificare i clienti. Interoperabilità: permette di utilizzare (e farsi utilizzare da) codice realizzato indipendentemente dal nostro. Efficienza: le classi che realizzano le collezioni sono ottimizzate per avere prestazioni particolarmente buone (vedi corso di Algoritmi e Strutture Dati).

5 Interfacce del Collections Framework T. Mancini & M. Scannapieco S.JOO.6 Java Collections Framework February 2, 2008 p. 5/28

6 T. Mancini & M. Scannapieco S.JOO.6 Java Collections Framework February 2, 2008 p. 6/28 Interfaccia Collection public interface Collection { // Basic Operations int size(); boolean isempty(); boolean contains(object element); boolean add(object element); // Optional boolean remove(object element); // Optional Iterator iterator(); // Bulk Operations boolean containsall(collection c); boolean addall(collection c); // Optional boolean removeall(collection c); // Optional boolean retainall(collection c); // Optional void clear(); // Optional L interfaccia specifica Operazioni di base quali inserimento, cancellazione, ricerca di un elemento nella collezione Operazioni che lavorano su intere collezioni quali l inserimento, la cancellazione la ricerca di collezioni di elementi Operazioni per trasformare il contenuto della collezione in un array. Operazioni opzionali che lanciano UnsupportedOperationException se non supportati da una data implementazione dell interfaccia. // Array Operations Object[] toarray(); Object[] toarray(object[] a);

7 T. Mancini & M. Scannapieco S.JOO.6 Java Collections Framework February 2, 2008 p. 7/28 Interfaccia Set public interface Set extends Collection { /* // Basic Operations int size(); boolean isempty(); boolean contains(object element); boolean add(object element); // Optional boolean remove(object element); // Optional Iterator iterator(); // Bulk Operations boolean containsall(collection c); boolean addall(collection c); // Optional boolean removeall(collection c); // Optional boolean retainall(collection c); // Optional void clear(); // Optional Set estende Collection Set non contiene altre dichiarazioni di operazioni che non siano già presenti in Collection Set serve a rappresentare il tipo insieme Set non permette di avere elementi duplicati (a differenza di Collection) le operazioni bulk corrispondono a: s1.containsall(s2) S 1 S 2 s1.addall(s2) S 1 S 2 s1.retainall(s2) S 1 S 2 */ // Array Operations Object[] toarray(); Object[] toarray(object[] a);

8 T. Mancini & M. Scannapieco S.JOO.6 Java Collections Framework February 2, 2008 p. 8/28 Interfaccia List public interface List extends Collection { /* // From Collection: Basic Operations int size(); boolean isempty(); boolean contains(object element); boolean add(object element); // Optional boolean remove(object element); // Optional Iterator iterator(); List estende Collection List contiene ulteriori dichiarazioni di operazioni rispetto a Collection (v. slide seguente) List serve a rappresentare il tipo lista List permette di avere elementi equal tra loro (a differenza di Set) // From Collection: Bulk Operations boolean containsall(collection c); boolean addall(collection c); // Optional boolean removeall(collection c); // Optional boolean retainall(collection c); // Optional void clear(); // Optional */ // From Collection: Array Operations Object[] toarray(); Object[] toarray(object[] a);

9 T. Mancini & M. Scannapieco S.JOO.6 Java Collections Framework February 2, 2008 p. 9/28 Interfaccia List (2) //...public interface List extends Collection { indexof(object o) e lastindexof(object o) Object get(int index); ritornano l indice della prima e ultima occorrenza di o, Object set(int index, Object element); // Optional int indexof(object o); rispettivamente. Se o non occorre nella lista, int lastindexof(object o); ritornano -1. get(int i) e set(int i) ritornano e aggiornano void add(int index, Object element); // Optional l elemento i-esimo della lista (di lunghezza maggiore boolean addall(int index, Collection c); // Optional di i); Object remove(int index); // Optional add(int i, Object o) aggiunge o in posizione // Other operations (omitted) i, facendo scorrere a destra di una posizione tutti gli elementi di indice i. remove(int i) rimuove l elemento in posizione i, facendo scorrere a sinistra di una posizione tutti gli elementi di indice i. Ritorna l elemento rimosso.

10 T. Mancini & M. Scannapieco S.JOO.6 Java Collections Framework February 2, 2008 p. 10/28 Iterator Un iteratore è un oggetto che rappresenta un cursore con il quale scandire una collezione alla quale è associato. un iteratore è sempre associato ad un oggetto collezione. per funzionare, un oggetto iteratore deve essere a conoscenza degli aspetti più nascosti di una classe, quindi la sua realizzazione dipende interamente dalla classe collezione concreta che implementa la collezione. public Iterator iterator() in Collection restituisce un iteratore con il quale scandire la collezione oggetto di invocazione. Iterator è una interfaccia (non una classe). Questa è sufficiente per utilizzare tutte le funzionalità dell interatore senza doverne conoscere alcun dettaglio implementativo.

11 T. Mancini & M. Scannapieco S.JOO.6 Java Collections Framework February 2, 2008 p. 11/28 Iterator (cont.) public interface Iterator { boolean hasnext(); Object next(); void remove(); // Optional Un iteratore ha le seguenti funzionalità: next() che restituisce l elemento corrente della collezione, e contemporaneamente sposta il cursore all elemento successivo; hasnext() che verifica se il cursore ha ancora un successore o se si è raggiunto la fine della collezione; remove() che elimina l elemento restituito dall ultima invocazione di next(); remove() è opzionale perchè in certe collezioni non si vuole mettere a disposizione del cliente funzioni che modifichino la collezione durante la scansione dei suoi elementi (come apputo fà remove()

12 T. Mancini & M. Scannapieco S.JOO.6 Java Collections Framework February 2, 2008 p. 12/28 Uso di un Iterator Un iteratore va usato per scandire la collezione come segue: Collection c =... //collezione dove memorizziamo oggetti istanze di E... Iterator it = c.iterator(); while (it.hasnext()) { //finche il cursore non e all ultimo elemento E e = (E)it.next(); // poni l elemento corrente in e ed avanza... // processa l elemento corrente (denotato da e) Si noti che l iteratore non ha alcuna funzione che lo resetti : una volta iniziata la scansione, non si può fare tornare indietro l iteratore; una volta finita la scansione, l iteratore non è più utilizzabile; l interfaccia List contiene la dichiarazione dell operazione listiterator() che ritorna un ListIterator, che può essere spostato avanti o indietro.

13 T. Mancini & M. Scannapieco S.JOO.6 Java Collections Framework February 2, 2008 p. 13/28 Una realizzazione dell interf. Set Struttura base di una classe public class XXX { // campi dati (rappresentazione degli oggetti XXX) // costruttori // funzioni proprie della classe // funzioni speciali ereditate da Object // funzioni non pubbliche ausiliarie

14 T. Mancini & M. Scannapieco S.JOO.6 Java Collections Framework February 2, 2008 p. 14/28 Una realizzazione dell interf. Set (2) Implementazione dell interfaccia Set import java.util.*; public class InsiemeArray implements Set { // campi dati // costruttori // funzioni proprie della classe // (realizzazione delle funzioni di Set) // basic operations public int size() {... public boolean isempty() {... public boolean contains(object e) {... public boolean add(object e) {... public boolean remove(object e) {... public Iterator iterator() {......

15 T. Mancini & M. Scannapieco S.JOO.6 Java Collections Framework February 2, 2008 p. 15/28 Una realizzazione dell interf. Set (3) //... public class InsiemeArray implements Set { // bulk Operations public boolean containsall(collection c) {... public boolean addall(collection c){ // opzionale - non supportata throw new UnsupportedOperationException("addlAll() non e supportata"); public boolean removeall(collection c) { // opzionale - non supportata throw new UnsupportedOperationException("removeAll() non e supportata"); public boolean retainall(collection c) { // opzionale - non supportata throw new UnsupportedOperationException("retainAll() non e supportata"); public void clear() { // opzionale - non supportata throw new UnsupportedOperationException("clear() non e supportata"); // array operations public Object[] toarray() {... public Object[] toarray(object[] a) {... // funzioni speciali ereditate da Object // funzioni ausiliarie

16 T. Mancini & M. Scannapieco S.JOO.6 Java Collections Framework February 2, 2008 p. 16/28 Una realizzazione dell interf. Set (4) Rappresentazione degli oggetti InsiemeArray basata su array dinamici. public class InsiemeArray implements Set { // campi dati protected Object[] array; protected static final int diminit = 10; //dim. iniz. array protected int cardinalita; // costruttori // funzioni proprie della classe // (realizzazione delle funzioni di Set)...

17 T. Mancini & M. Scannapieco S.JOO.6 Java Collections Framework February 2, 2008 p. 17/28 Una realizzazione dell interf. Set (5) Costruttori per InsiemeArray public class InsiemeArray implements Set { // campi dati protected Object[] array; protected static final int diminit = 10; //dim. iniz. array protected int cardinalita; // costruttori public InsiemeArray() { array = new Object[dimInit]; cardinalita = 0;...

18 T. Mancini & M. Scannapieco S.JOO.6 Java Collections Framework February 2, 2008 p. 18/28 Una realizzazione dell interf. Set (6) Funzioni speciali ereditate da Object public class InsiemeArray implements Set, Cloneable { // campi dati... // costruttori... // funzioni proprie della classe // (realizzazione delle funzioni di Set)... // funzioni speciali ereditate da Object public boolean equals(object o) { // verifica uguaglianza profonda public int hashcode() { /* ritorna hash-code */ public Object clone() { /* copia profonda */ public String tostring() {... Realizzazione dei singoli metodi (vedi codice allegato): equals(), hashcode(), clone(), tostring() size(), isempty(), contains() add(), remove()

19 T. Mancini & M. Scannapieco S.JOO.6 Java Collections Framework February 2, 2008 p. 19/28 Una realizzazione dell interf. Set (7) Realizzazione della funzione: iterator() public class InsiemeArray implements Set, Cloneable { // campi dati... // funzioni proprie della classe // (realizzazione delle funzioni di Set) // basic operations... public Iterator iterator() { return new IteratorInsiemeArray(this); //nota!...

20 T. Mancini & M. Scannapieco S.JOO.6 Java Collections Framework February 2, 2008 p. 20/28 Interfaccia Iterator L interfaccia Iterator public interface Iterator { boolean hasnext(); Object next(); void remove(); // Optional <-- noi non lo realizziamo Esempio di uso dell interfaccia Iterator public class ClenteDiSet {... public static void StampaElementi(Set s) { Iterator it = s.iterator(); while(it.hasnext()) { Object o = it.next(); System.out.println(o);...

21 T. Mancini & M. Scannapieco S.JOO.6 Java Collections Framework February 2, 2008 p. 21/28 Realizzazione dell interf. Iterator (1) Realizziamo literatore per InsiemeArray // Quanto segue deve stare nello stesso package di InsiemeArray package insiemearray; import java.util.*; class IteratorInsiemeArray implements Iterator { // nota non e pubblica, cioe ne impediamo l uso diretto da parte // dei clienti (che quindi possono usare solo l interfaccia Iterator) private InsiemeArray insiemearray; private int indice; public IteratorInsiemeArray(InsiemeArray ia) { insiemearray = ia; indice = 0; // Realizzazione funzioni di Iterator public boolean hasnext() { return indice < insiemearray.cardinalita; // accessibile perche nello stesso package!!! public Object next() { Object e = insiemearray.array[indice]; // accessibile perche nello stesso package!!! indice++; return e; public void remove() { // non non la supportiamo throw new UnsupportedOperationException("remove() non e supportata");

22 T. Mancini & M. Scannapieco S.JOO.6 Java Collections Framework February 2, 2008 p. 22/28 Collezioni omogenee L implementazione InsiemeArray di Set, cosi come tutte le implementazioni predefinite del Collections Framwork, realizzano collezioni disomogenee, cioè i cui elementi possono essere di tipi diversi (es. in prima posizione possiamo avere una String, in seconda un Integer, ecc.). Come possiamo realizzare collezioni omogenee, cioe i cui elementi siano tutti dello stesso tipo? Imporre che una collezione sia omogenea in modo statico (cioe a tempo di compilazione) non si puo in Java. Ma si puo imporlo in modo dinamico (cioe a tempo di esecuzione): dobbiamo memorizzare nella classe il tipo degli elementi, dobbiamo verificare durante l inserimento che gli oggetti che inseriamo siano del tipo giusto. Nota. In realtà, dalla versione 1.5, Java supporta il concetto di template (classi generics), che può essere usato a questo scopo (cf. seguito).

23 T. Mancini & M. Scannapieco S.JOO.6 Java Collections Framework February 2, 2008 p. 23/28 Insieme di elementi omogenei Costruiamo una classe InsiemeArrayOmogeneo che implementa Set, ma realizza insiemi omogenei. Riusiamo l implementazione InsiemeArray, realizzando InsimeArrayOmogeneo come una sua classe derivata, dove faremo overriding dei metodi che vanno modificati public class InsiemeArrayOmogeneo extends InsiemeArray { // campi dati protected Class elemclass; // costruttori public InsiemeArrayOmogeneo(Class cl) { super(); elemclass = cl; public InsiemeArrayOmogeneo() { this(object.class); // overriding delle basic operations public boolean add(object e) { if (!elemclass.isinstance(e)) return false; else return super.add(e); // overriding delle bulk oper.: non serve // overriding delle array oper.: non serve... // overr. delle funz. spec. ered. da Object public boolean equals(object o) { if (super.equals(o)) { InsiemeArrayOmogeneo ins = (InsiemeArrayOmogeneo)o; if (elemclass.equals(ins.elemclass)) return true; else return false; else return false; public Object clone() { return super.clone(); // Il campo elemclass viene copiato // superficialmente // overriding di tostring() non serve...

24 T. Mancini & M. Scannapieco S.JOO.6 Java Collections Framework February 2, 2008 p. 24/28 Classi collezione generics Dalla versione 1.5, Java supporta la possibilità di definire classi ed interfacce parametriche rispetto ad un tipo, i cosiddetti generics (o template). Tutte le classi ed interfacce del Java Collection Framework, dalla versione Java 1.5, sono state trasformate in classi generics, al fine di fornire un supporto nativo per le collezioni omogenee. In particolare: Le interfacce Collection e sue derivate sono diventate: Collection<E>, Set<E>, List<E>, etc., dove E è il nome di una classe, scelta dall utente, che limita la tipologia degli oggetti che possono essere inseriti nella collezione e il tipo degli oggetti che vengono ritornati. Le interfacce Iterator, ListIterator etc. sono diventate Iterator<E> etc. Le classi che implementano le interfacce, realizzando i tipi Insieme, Lista, etc., sono diventate tutte generics (cf. seguito).

25 T. Mancini & M. Scannapieco S.JOO.6 Java Collections Framework February 2, 2008 p. 25/28 Classi collezione generics (cont.) Usando le versioni generics delle interfacce e classi del JCF, non abbiamo più bisogno di classi realizzate ad-hoc per realizzare collezioni omogenee (come InsiemeArrayOmogeneo). Esempio di utilizzo delle versioni generics delle classi e interfacce del JCF. Set<String> setdistringhe = new HashSet<String>();... String s = new String("ciao"); setdistringhe.add(s); Punto p = new Punto(...); setdistringhe.add(p); // Errore!... Iterator<String> it = setdistringhe.iterator(); while(it.hasnext()) { String elem = it.next(); // Si noti la mancanza di cast: il tipo di ritorno di // Iterator<E>.next() e E e non piu Object! (cf. Java API docum.) System.out.println(elem);

26 T. Mancini & M. Scannapieco S.JOO.6 Java Collections Framework February 2, 2008 p. 26/28 antaggi nell utilizzo dei generics nel JCF Supporto nativo per le collezioni omogenee, con conseguente semplificazione nello sviluppo del codice e maggiore facilità di test. Ad esempio, l errore nell istruzione (nella slide precedente): setdistringhe.add(p); // Errore! viene rilevato dal compilatore (setdistringhe è stato dichiarato essere di tipo Set<String>) e non più a tempo di esecuzione, cosa che avverrebbe se avessimo usato InsiemeArrayOmogeneo, ad esempio così: Set setdistringhe = new InsiemeArrayOmogeneo(String.class); Punto p = new Punto(...); setdistringhe.add(p); /* Il compilatore non darebbe errori! Tuttavia, a run-time, il metodo InsiemeArrayOmogeneo.add() si rifiuterebbe di aggiungere l oggetto p, che non e istanza della classe String (cf. implementazione del metodo) */ Nota. È ancora possibile usare il JCF alla vecchia maniera : scrivere Collection, Set, HashSet, etc. equivale a scrivere Collection<Object>, Set<Object>, etc.

27 T. Mancini & M. Scannapieco S.JOO.6 Java Collections Framework February 2, 2008 p. 27/28 Vant. nell ut. dei generics nel JCF (cont.) Accesso a un ventaglio molto più ampio di classi esistenti nel JCF che implementano in modi alternativi i diversi tipi di collezioni (omogenee). Alcune di queste sono: Interfaccia Set<E> HashSet<E>: implementa molto efficientemente (in tempo O(1)) le operazioni add(), remove(), contains(), size(), al costo di una minore efficienza nell iterazione; TreeSet<E>: implementa abbastanza efficientemente (in tempo O(log(n))) le operazioni add(), remove(), contains(); Interfaccia List<E> ArrayList<E>: implementa molto efficientemente (in tempo medio O(1)) le operazioni size(), isempty(), get(), set(), iterator(), listiterator() al costo di una minore efficienza (in tempo circa O(n)) delle altre operazioni; LinkedList<E>: implementa liste mediante liste doppiamente collegate: simile a InsiemeLista, con l aggiunta che ogni elemento ha un riferimento sia all elemento successivo che a quello precedente, e la ricerca degli elementi può quindi essere effettuata sia a partire dall inizio che dalla fine (a ritroso), in base alla maggiore vicinanza dell indice richiesto all inizio o alla fine della lista. Si consulti la Java API docum. per i dettagli su queste e le altre classi che implementano le interfacce collezione del JCF.

28 T. Mancini & M. Scannapieco S.JOO.6 Java Collections Framework February 2, 2008 p. 28/28 Esercizi 1. Scrivere una funzione che, preso in input un insieme di oggetti che implementano l interfaccia Confrontabile (definita in precedenza), ritorni uno tra i suoi elementi massimali; 2. Scrivere una funzione che, preso in input un insieme di oggetti che implementano l interfaccia Confrontabile, ritorni l insieme dei suoi elementi massimali; 3. Scrivere una funzione che, presa in input una lista di oggetti L, ritorni una nuova lista, contenente gli oggetti in L di indice dispari, nello stesso ordine; 4. Scrivere una funzione che, presa in input una lista di oggetti L, ritorni una nuova lista, contenente gli oggetti in L in ordine inverso. 5. Realizzare le classi ListaArray e ListaArrayOmogenea che, implementando l interfaccia List, realizzino i tipi Lista e ListaOmogenea mediante un array (come avviene per InsiemeArray e InsiemeArrayOmogeneo). Realizzare inoltre la relativa classe IteratorListaArray; 6. Realizzare le classi ListaCollegata e ListaCollegataOmogenea che, implementando l interfaccia List, realizzino i tipi Lista e Lista Omogenea mediante una lista collegata (come avviene per InsiemeLista e InsiemeListaOmogeneo). Realizzare inoltre la relativa classe IteratorListaCollegata. Nota: si rifletta attentamente su quale possa essere una ragionevole implementazione di List.hashCode().

Introduzione al Java Collections Framework. Progettazione del Software Anno Accademico Interfacce del Collections Framework

Introduzione al Java Collections Framework. Progettazione del Software Anno Accademico Interfacce del Collections Framework Università di Roma La Sapienza, Facoltà di Ingegneria Corso di Progettazione del Software Anno Accademico 2003-2004 Corso di Laurea in Ingegneria Gestionale Prof. Giuseppe De Giacomo & Prof. Monica Scannapieco

Dettagli

Progettazione del Software Anno Accademico

Progettazione del Software Anno Accademico Università di Roma La Sapienza, Facoltà di Ingegneria Corso di Progettazione del Software Anno Accademico 2003-2004 Corso di Laurea in Ingegneria Gestionale Prof. Giuseppe De Giacomo & Prof. Monica Scannapieco

Dettagli

Introduzione al Java Collections Framework. Java Collections Framework (cont.) Interfacce del Collections Framework

Introduzione al Java Collections Framework. Java Collections Framework (cont.) Interfacce del Collections Framework Università degli Studi di Roma La Sapienza Corso di Laurea in Ingegneria dell Informazione (sede di Latina) Corso di Laurea in Ingegneria dell Informazione (consorzio Nettuno) Introduzione al Java Collections

Dettagli

Introduzione al Java Collections Framework

Introduzione al Java Collections Framework Università degli Studi di Roma La Sapienza Corso di Laurea in Ingegneria dell Informazione (sede di Latina) Corso di Laurea in Ingegneria dell Informazione (consorzio Nettuno) Insegnamento di PROGETTAZIONE

Dettagli

Progettazione del Software

Progettazione del Software Progettazione del Software Programmazione in Java (6) The Collections Framework Domenico Fabio Savo Dipartimento di Ingegneria Informatica, Automatica e Gestionale Antonio Ruberti Sapienza Università di

Dettagli

Diagramma delle classi UML. Diagramma e specifica degli use case. Specifica delel classi del diagramma

Diagramma delle classi UML. Diagramma e specifica degli use case. Specifica delel classi del diagramma Università di Roma La Sapienza, Facoltà di Ingegneria Diagramma delle classi UML Corso di PROGETTAZIONE DEL SOFTWARE (Ing. Gestionale) Giuseppe De Giacomo e Monica Scannapieco, A.A. 2003-04 SOLUZIONE ESAME

Dettagli

Diagramma delle classi UML

Diagramma delle classi UML Università di Roma La Sapienza, Facoltà di Ingegneria Corso di PROGETTAZIONE DEL SOFTWARE (Ing. Gestionale) Giuseppe De Giacomo e Monica Scannapieco, A.A. 2003-04 SOLUZIONE ESAME DEL 11/07/2003 Roma, 9

Dettagli

Il Java Collections Framework

Il Java Collections Framework Il Java Collections Framework Il Java Collections Framework è una libreria formata da un insieme di interfacce e di classi che le implementano per lavorare con gruppi di oggetti (collezioni). Le interfacce

Dettagli

Diagramma delle classi UML

Diagramma delle classi UML Università di Roma La Sapienza, Facoltà di Ingegneria Corso di PROGETTAZIONE DEL SOFTWARE (Ing. Gestionale) Prof. Giuseppe De Giacomo, A.A. 2001-02 SOLUZIONE ESAME DEL 25/06/2002 Roma, 23 giugno 2003 1

Dettagli

Introduzione al Java Collections Framework. Laboratorio di Programmazione Anno Accademico Interfacce del Collections Framework

Introduzione al Java Collections Framework. Laboratorio di Programmazione Anno Accademico Interfacce del Collections Framework Università di Roma La Sapienza, Facoltà di Ingegneria Corso di Laboratorio di Programmazione Anno Accademico 2004-2005 Corso di Laurea in Ingegneria Informatica Prof. Giuseppe De Giacomo (A L) & Prof.

Dettagli

//UML-class-diagram.txt. entrambe Molo e PostoBarca hanno responsabilità su contiene. solo PostoBarca ha responsabilità su assegnato, e

//UML-class-diagram.txt. entrambe Molo e PostoBarca hanno responsabilità su contiene. solo PostoBarca ha responsabilità su assegnato, e Università di Roma La Sapienza, Facoltà di Ingegneria Corso di PROGETTAZIONE DEL SOFTWARE (Ing. Gestionale) Prof. Giuseppe De Giacomo, A.A. 2001-02 SOLUZIONE ESAME DEL 25/06/2002 //UML-class-diagram.txt

Dettagli

Conoscere l uso delle collezioni in Java. Conoscere il concetto di Generics (programmazione

Conoscere l uso delle collezioni in Java. Conoscere il concetto di Generics (programmazione 1 Conoscere l uso delle collezioni in Java Comprendere le principali caratteristiche nelle varie classi di Collection disponibili Saper individuare quali classi di Collection usare in casi specifici Conoscere

Dettagli

Generics & Collections

Generics & Collections Generics & Collections Ingegneria del software Jody Marca jody.marca@polimi.it I Generics 2 I Generics rendono possibile definire tipi parametrici tramite classi ed interfacce che gestiscono tipi generici

Dettagli

Collezioni, mappe e iteratori (a cura del Prof. Marco Patella)

Collezioni, mappe e iteratori (a cura del Prof. Marco Patella) , mappe e iteratori (a cura del Prof. Marco Patella) 1 Introduzione al Java Collections Framework Una collezione (o contenitore) consente di organizzare e gestire un gruppo di oggetti collezioni (vere

Dettagli

Corso di Progettazione del Software

Corso di Progettazione del Software T. Mancini & M. Scannapieco S.JOO.3 Java: le classi Object e Class February 2, 2008 p. 1/12 Università degli Studi di Roma La Sapienza Facoltà di Ingegneria Corso di Laurea in Ingegneria Gestionale Corso

Dettagli

semplici ogni elemento contiene un riferimento al successivo doppie ogni elemento contiene un riferimento al successivo e al precedente

semplici ogni elemento contiene un riferimento al successivo doppie ogni elemento contiene un riferimento al successivo e al precedente Liste doppie Liste: semplici ogni elemento contiene un riferimento al successivo doppie ogni elemento contiene un riferimento al successivo e al precedente Rappresentazione grafica semplice: doppia: Gli

Dettagli

# $ $ A.A. 2006/07 Tutor: Daniele Tiles &== ? &7$ %% & '( ) * + $, $ $ -' %./, $ * $ $ 7 5 &7 2$ $ $ 3&4&&&

# $ $ A.A. 2006/07 Tutor: Daniele Tiles &== ? &7$ %% & '( ) * + $, $ $ -' %./, $ * $ $ 7 5 &7 2$ $ $ 3&4&&& ! A.A. 2006/07 Tutor: Daniele Tiles daniele.tiles@studio.unibo.it # $ $ %% & '( ) * + $, $ $ -' %./, 01 5 6 $ * $ $ 7 5 &7 2$ $ $ 3&4&&& 5 +8$ 9%: 5 6;< &&$ $ &== 1&:+$!*? &7$ $ @$ 1&&# &A1+ $ $ $, $,

Dettagli

Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma. Ingegneria del software A

Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma. Ingegneria del software A Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Ingegneria del software A Collezioni di oggetti (in Java) Michele Tomaiuolo Framework Framework

Dettagli

semplici ogni elemento contiene un riferimento al successivo doppie ogni elemento contiene un riferimento al successivo e al precedente

semplici ogni elemento contiene un riferimento al successivo doppie ogni elemento contiene un riferimento al successivo e al precedente 1 of 23 22/11/2004 10.23 Liste: semplici ogni elemento contiene un riferimento al successivo doppie ogni elemento contiene un riferimento al successivo e al precedente Rappresentazione grafica Lista semplice:

Dettagli

Metodi di una Collection

Metodi di una Collection Java Collections Introduzione Una java collection (a volte chiamata anche container) è un oggetto che raggruppa più elementi dello stesso tipo in una singola unità. Tipicamente è utilizzata per raggruppare

Dettagli

Esempio su strutture dati dinamiche: ArrayList

Esempio su strutture dati dinamiche: ArrayList Esempio su strutture dati dinamiche: ArrayList 1 ArrayList Abbiamo detto che gli array non possono cambiare la propria dimensione: il numero di elementi contenuti viene stabilito al momento della creazione

Dettagli

SOLUZIONE. Requisiti. Requisiti (cont.) Fase di analisi. Università di Roma La Sapienza, Facoltà di Ingegneria

SOLUZIONE. Requisiti. Requisiti (cont.) Fase di analisi. Università di Roma La Sapienza, Facoltà di Ingegneria Università di Roma La Sapienza, Facoltà di Ingegneria Corso di PROGETTAZIONE DEL SOFTWARE I (Ing. Informatica) Proff. Marco Cadoli e Maurizio Lenzerini, Canali A-L & M-Z A.A. 2003-04 Compito d esame del

Dettagli

Collezioni. (a cura del Prof. Marco Patella)

Collezioni. (a cura del Prof. Marco Patella) (a cura del Prof. Marco Patella) 1 Introduzione al Java Collections Framework Una collezione (o contenitore) consente di organizzare e gestire un gruppo di oggetti collezioni (vere e proprie) mappe implementate

Dettagli

Corso di Progettazione del Software

Corso di Progettazione del Software T. Mancini & M. Scannapieco S.JOO.5 Java: copia profonda February 2, 2008 p. 1/22 Università degli Studi di Roma La Sapienza Facoltà di Ingegneria Corso di Laurea in Ingegneria Gestionale Corso di Progettazione

Dettagli

22 - Strutture Dati (Java Collections Framework)

22 - Strutture Dati (Java Collections Framework) 22 - Strutture Dati (Java Collections Framework) Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/

Dettagli

se invoco un metodo di Object che è ridefinito in Point, viene invocato il metodo definito in Point

se invoco un metodo di Object che è ridefinito in Point, viene invocato il metodo definito in Point Gli HashSet Tipo predefinito che rappresenta insiemi di Object Cosa succede se... Posso mettere un riferimento a un Point in una variabile Object Object o=new Point(12,3); è quasi tutto come se l oggetto

Dettagli

Uguaglianza e copia di oggetti

Uguaglianza e copia di oggetti Uguaglianza e copia di oggetti Sommario 1. Classi Object e Class 2. Uguaglianza superficiale e uguaglianza profonda 3. Copia superficiale e copia profonda 4. Uguaglianza e copia in classi derivate 1 La

Dettagli

Esempio su strutture dati dinamiche: ArrayList

Esempio su strutture dati dinamiche: ArrayList Esempio su strutture dati dinamiche: ArrayList Fondamenti di Informatica L-B 1 ArrayList Abbiamo detto che gli array non possono cambiare la propria dimensione: il numero di elementi contenuti viene stabilito

Dettagli

Laboratorio Reti di Calcolatori Laurea Triennale in Comunicazione Digitale. Anno Accademico 2013/2014

Laboratorio Reti di Calcolatori Laurea Triennale in Comunicazione Digitale. Anno Accademico 2013/2014 Laboratorio Reti di Calcolatori Laurea Triennale in Comunicazione Digitale Anno Accademico 2013/2014 Collection Framework Collection: oggetto che raggruppa più elementi in una singola unità. per memorizzare,

Dettagli

Liste doppie. Doubly Linked Lists. GT: 6.2 (e 3.3) Argomenti della lezione

Liste doppie. Doubly Linked Lists. GT: 6.2 (e 3.3) Argomenti della lezione Liste doppie GT: 6.2 (e 3.3) Doubly Linked Lists 1 Argomenti della lezione ADT Position NodeList interface Position PositionList class DNode NodePositionList inserzione rimozione Iteratore ADT Iterator

Dettagli

Introduzione Generics Iteratori. Collezioni in Java. Dr. Giulio Pellitta. 13 aprile 2011

Introduzione Generics Iteratori. Collezioni in Java. Dr. Giulio Pellitta. 13 aprile 2011 13 aprile 2011 Cos è una collezione? Gerarchia delle collezioni Introduzione Una collezione è semplicemente un oggetto che raggruppa più oggetti (detti elementi della collezione) in una singola unità.

Dettagli

Bank. Bank. BankAccount. Bank. Bank. private BankAccount[] conti; // Posizione attuale private int posizioneattuale;...

Bank. Bank. BankAccount. Bank. Bank. private BankAccount[] conti; // Posizione attuale private int posizioneattuale;... Bank BankAccount Bank Bank Bank BankAccount private BankAccount[] conti; // Posizione attuale private int posizioneattuale;... Bank Bank public Bank(String nome, String internationalcode, int dimensione)

Dettagli

Fondamenti di Informatica T-1

Fondamenti di Informatica T-1 Fondamenti di Informatica T-1 Interfaccia Comparable e Collezioni Tutor: Allegra De Filippo allegra.defilippo@unibo.it a.a. 2015/2016 Fondamenti di Informatica T-1 Allegra De Filippo 1 / 22 Interfaccia

Dettagli

Notazione grafica UML

Notazione grafica UML Notazione grafica UML Estensione e implementazione in UML: estende implementa Per classi astratte e interfacce i nomi vanno in corsivo preceduti da e UtenteComputer

Dettagli

Programmazione in Java Parte II

Programmazione in Java Parte II Programmazione in Java Parte II Lezione 7 Dott. Marco Faella Il Java Collection Framework Java Collection Framework (JCF) è una parte della libreria standard dedicata alle collezioni, intese come classi

Dettagli

Sul pattern Iterator

Sul pattern Iterator Sul pattern Iterator 1 Introduzione Capita spesso di aver a che fare con strutture dati complesse, come ad esempio, liste, code, ecc. È buona norma accedere a queste strutture senza esporre la loro organizzazione.

Dettagli

Requisiti. Requisiti (cont.) Sapienza - Università di Roma Facoltà di Ingegneria

Requisiti. Requisiti (cont.) Sapienza - Università di Roma Facoltà di Ingegneria Sapienza - Università di Roma Facoltà di Ingegneria Corso di PROGETTAZIONE DEL SOFTWARE I (Corso di Laurea in Ingegneria Informatica) Prof. Giuseppe De Giacomo Canali A-L & M-Z A.A. 2006-07 Compito d esame

Dettagli

STRUTTURE DINAMICHE. (slide: A. Baratè L.A. Ludovico) Programmazione per la Musica Adriano Baratè

STRUTTURE DINAMICHE. (slide: A. Baratè L.A. Ludovico) Programmazione per la Musica Adriano Baratè STRUTTURE DINAMICHE (slide: A. Baratè L.A. Ludovico) Programmazione per la Musica Adriano Baratè DIFFERENZE RISPETTO AD ARRAY Finora le collezioni di dati sono state dichiarate come array (di stringhe,

Dettagli

Esempio su strutture dati dinamiche: ArrayList

Esempio su strutture dati dinamiche: ArrayList Esempio su strutture dati dinamiche: ArrayList 1 ArrayList Gli array non possono cambiare la propria dimensione: il numero di elementi contenuti viene stabilito al momento della creazione e rimane immutato.

Dettagli

18 - Vettori. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

18 - Vettori. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 18 - Vettori Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://pages.di.unipi.it/milazzo milazzo di.unipi.it Corso di

Dettagli

LINKEDLIST: implementazione iteratore. LINKEDLIST: iteratore INNERITERATOR INNERITERATOR

LINKEDLIST: implementazione iteratore. LINKEDLIST: iteratore INNERITERATOR INNERITERATOR LINKEDLIST: iteratore Il metodo iterator() restituisce un oggetto iteratore sulla lista per scandire gli elementi in sequenza a partire dall inizio della lista. public Iterator iterator() { return new

Dettagli

Fondamenti di Informatica T1 Interfaccia Comparable Collezioni

Fondamenti di Informatica T1 Interfaccia Comparable Collezioni Fondamenti di Informatica T1 Interfaccia Comparable Collezioni Tutor Melissa Licciardello melissa.licciardell2@unibo.it Melissa Licciardello Fondamenti di Informatica T1 1 / 19 Interfaccia Comparable Fa

Dettagli

Progettazione del Software

Progettazione del Software Progettazione del Software Simulazione di esame II Domenico Fabio Savo Dipartimento di Ingegneria Informatica, Automatica e Gestionale Antonio Ruberti Sapienza Università di Roma Requisiti L applicazione

Dettagli

Le Collezioni (Java Collections)

Le Collezioni (Java Collections) Le Collezioni (Java Collections) G. Grossi 20 dicembre 2006 Indice 1 Le Collezioni (Java Collections) Esempi di Liste : for-each e Iteratori Indice Le Collezioni (Java Collections) 1 Le Collezioni (Java

Dettagli

Esempio su strutture dati dinamiche: ArrayList

Esempio su strutture dati dinamiche: ArrayList Esempio su strutture dati dinamiche: ArrayList 1 ArrayList! Abbiamo detto che gli array non possono cambiare la propria dimensione: il numero di elementi contenuti viene stabilito al momento della creazione

Dettagli

14. Java Collection Framework Le collezioni: insiemi e liste

14. Java Collection Framework Le collezioni: insiemi e liste 14. Java Collection Framework Le collezioni: insiemi e liste Marco Faella Dip. Ing. Elettrica e Tecnologie dell'informazione Università di Napoli Federico II Corso di Linguaggi di Programmazione II Il

Dettagli

SOLUZIONE. Requisiti. Requisiti (cont.) Requisiti (cont.)

SOLUZIONE. Requisiti. Requisiti (cont.) Requisiti (cont.) SAPIENZA Università di Roma Facoltà di Ingegneria Sede di Latina Corso di Laurea in Ingegneria Informatica e dell Informazione Requisiti Corso di PROGETTAZIONE DEL SOFTWARE Prof. Domenico Lembo A.A. 2008-09

Dettagli

SOLUZIONE. Requisiti. Requisiti (cont.) Requisiti (cont.) Sapienza - Università di Roma Facoltà di Ingegneria

SOLUZIONE. Requisiti. Requisiti (cont.) Requisiti (cont.) Sapienza - Università di Roma Facoltà di Ingegneria Sapienza - Università di Roma Facoltà di Ingegneria Requisiti Corso di PROGETTAZIONE DEL SOFTWARE I (Corso di Laurea in Ingegneria Informatica) Prof. Giuseppe De Giacomo Canali A-L & M-Z A.A. 2006-07 Compito

Dettagli

Parte I Java. Metodologie di Programmaziona Secondo Appello, 14/2/2006 1

Parte I Java. Metodologie di Programmaziona Secondo Appello, 14/2/2006 1 Metodologie di Programmaziona 05 06 Secondo Appello, 14/2/2006 1 Parte I Java Considerate le seguenti definizioni di classe. class T { class S extends T { class A { public void print(string s) { System.out.println(s);

Dettagli

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione Orientata agli Oggetti in Linguaggio Java Programmazione Orientata agli Oggetti in Linguaggio Java Tecniche di Programmazione: Collezioni Parte b versione 2.3 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi

Dettagli

PROGRAMMAZIONE Collezioni in Java: il Java Collections Framework (JCF)

PROGRAMMAZIONE Collezioni in Java: il Java Collections Framework (JCF) PROGRAMMAZIONE 2 14. Collezioni in Java: il Java Collections Framework (JCF) 1 Perché le collezioni Spesso in un programma dobbiamo rappresentare e manipolare gruppi di valori oppure oggetti di uno stesso

Dettagli

Testo di Riferimento (usato nei corsi precedenti)

Testo di Riferimento (usato nei corsi precedenti) Parti II e III 1 Framework Collections in Java: API Java http://java.sun.com/ Generics in Java Tutorial Sun (in inglese) http://java.sun.com/j2se/1.5/pdf/generics-tutorial.pdf Testo di Riferimento (usato

Dettagli

INFORMATICA III Parte B -Progettazione e Algoritmi

INFORMATICA III Parte B -Progettazione e Algoritmi INFORMATICA III Parte B -Progettazione e Algoritmi Implementazione di codice algoritmico in Java Patrizia Scandurra patrizia.scandurra@unibg.it Università degli Studi di Bergamo a.a. 2010-11 Stessa interfaccia,

Dettagli

Progettazione del Software

Progettazione del Software Progettazione del Software La fase di realizzazione (parte I) Domenico Fabio Savo Dipartimento di Ingegneria Informatica, Automatica e Gestionale Antonio Ruberti Sapienza Università di Roma Anno Accademico

Dettagli

Collezioni in Java. Emilio Di Giacomo e Walter Didimo

Collezioni in Java. Emilio Di Giacomo e Walter Didimo Collezioni in Java Emilio Di Giacomo e Walter Didimo Strutture dati Una struttura dati è un contenitore in cui i dati sono organizzati in maniera che possano essere recuperati e manipolati efficientemente

Dettagli

Algoritmi e strutture dati

Algoritmi e strutture dati Algoritmi e strutture dati Argomenti Strutture dati elementari e loro implementazioni in Java: Vettori Liste Stack (Pile) Queue (Code) Esempi di applicazione Tipo di dato astratto Tipo di dato astratto

Dettagli

Fondamenti di Informatica I

Fondamenti di Informatica I Sapienza Università di Roma, Facoltà di Ingegneria Corso di Fondamenti di Informatica I Canale 1 (A-K) Anno Accademico 2009-2010 Corso di Laurea in Ingegneria Informatica Docente: Camil Demetrescu Esercitatore:

Dettagli

Corso di Progettazione del Software

Corso di Progettazione del Software T. Mancini & M. Scannapieco S.R.3 La fase di Realizzazione: realizzazione di associazioni a resp. singola February 26, 2008 p. 1/35 Università degli Studi di Roma La Sapienza Facoltà di Ingegneria Corso

Dettagli

Programmazione Orientata agli Oggetti in Linguaggio Java

Programmazione Orientata agli Oggetti in Linguaggio Java Programmazione Orientata agli Oggetti in Linguaggio Java Ruoli e Responsabilità: Incapsulamento versione 2.1 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima

Dettagli

STRUTTURE DATI: OLTRE GLI ARRAY LISTE

STRUTTURE DATI: OLTRE GLI ARRAY LISTE STRUTTURE DATI: OLTRE GLI ARRAY le strutture dati progettate per ospitare una collezione di elementi, sono variazioni di array Ma l'array ha dimensione fissa anche in Java determinata a priori, in linguaggi

Dettagli

Argomenti della lezione. Tipo di dato astratto. Array. Tipo di dato Lista. Liste Implementazione di liste in Java Stack Code

Argomenti della lezione. Tipo di dato astratto. Array. Tipo di dato Lista. Liste Implementazione di liste in Java Stack Code Argomenti della lezione! Tipi di dato astratti! Strutture dati elementari Liste Implementazione di liste in Java Stack Code! Esempi di applicazione Tipo di dato astratto! Tipo di dato astratto o ADT (Abstract

Dettagli

Corso di Progettazione del Software

Corso di Progettazione del Software T. Mancini & M. Scannapieco S.JOO.4 Java: uguaglianza superficiale e profonda February 2, 2008 p. 1/31 Università degli Studi di Roma La Sapienza Facoltà di Ingegneria Corso di Laurea in Ingegneria Gestionale

Dettagli

Corso di Progettazione del Software

Corso di Progettazione del Software T. Mancini & M. Scannapieco S.R.1 La fase di Realizzazione: realizzazione di strutture dati February 26, 2008 p. 1/22 Università degli Studi di Roma La Sapienza Facoltà di Ingegneria Corso di Laurea in

Dettagli

Si usano quando serve accesso rapido sia in lettura che in scrittura su un insieme non ordinato

Si usano quando serve accesso rapido sia in lettura che in scrittura su un insieme non ordinato Le tavole hash È il modo con cui sono realizzati gli HashSet Si usano quando serve accesso rapido sia in lettura che in scrittura su un insieme non ordinato Principio base Gli array hanno le caratteristiche

Dettagli

10 Java Collections Framework

10 Java Collections Framework 10 Java Collections Framework Mirko Viroli mirko.viroli@unibo.it C.D.L. Ingegneria e Scienze Informatiche Alma Mater Studiorum Università di Bologna, Cesena a.a. 2015/2016 Mirko Viroli (Università di Bologna)

Dettagli

Fondamenti di Informatica L-B Esercitazione n 6 Java: Collezioni, Classi Wrapper, & Generics. Il package java.util. Strutture dati avanzate in Java

Fondamenti di Informatica L-B Esercitazione n 6 Java: Collezioni, Classi Wrapper, & Generics. Il package java.util. Strutture dati avanzate in Java Fondamenti di Informatica L-B Esercitazione n 6 Java: Collezioni, Classi Wrapper, & Generics A.A. 2007/08 Tutor: Barbara Pettazzoni barbara.pettazzoni@studio.unibo.it Il package java.util Avete giá avuto

Dettagli

Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona

Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona Laboratorio di Programmazione II Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona Tipi Tipo Astratto di Permette di specicare dati in modo astratto Astratto Indipendentemente

Dettagli

Esercizio: Lista Circolare

Esercizio: Lista Circolare Esercizio: Lista Circolare Si realizzi in Java un gestore di una lista circolare. La dimensione minima della lista è 2 elementi (ed è anche la dimensione iniziale). La dimensione massima è 20 elementi.

Dettagli

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Dispensa 09 ADT: Lista, Pila, Coda A. Miola Marzo 2007 http://www.dia.uniroma3.it/~java/fondinf2/ ADT: Lista, Pila, Coda 1 Contenuti Tipo

Dettagli

JAVA GENERICS. Angelo Di Iorio Università di Bologna

JAVA GENERICS. Angelo Di Iorio Università di Bologna JAVA GENERICS Angelo Di Iorio Università di Bologna Tipi parametrici In diversi casi è utile definire classi che operano su tipi di dato diverso e implementano un comportamento comune e indipendente dal

Dettagli

Fondamenti di Informatica T-1. Collezioni

Fondamenti di Informatica T-1. Collezioni Collezioni 2 Collezioni Java Collection Framework (JCF): supporto a qualunque struttura dati per contenere "elementi generici". Collection: nessuna ipotesi sul tipo di collezione Set: introduce l idea

Dettagli

Fondamenti di Informatica e Laboratorio T-AB T-15 Strutture dati

Fondamenti di Informatica e Laboratorio T-AB T-15 Strutture dati Fondamenti di Informatica e Laboratorio T-AB T-15 Strutture dati Paolo Torroni Dipartimento di Elettronica, Informatica e Sistemistica Università degli Studi di Bologna Anno Accademico 2008/2009 Sommario

Dettagli

SAPIENZA Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica

SAPIENZA Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica SAPIENZA Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica Esercitazioni di PROGETTAZIONE DEL SOFTWARE (Corso di Laurea in Ingegneria Informatica ed Automatica Corso

Dettagli

Collections. ASD-L - Luca Tesei

Collections. ASD-L - Luca Tesei Collections Dagli array alle List Interfaccia List Interfaccia Comparable Interfaccia Comparator Algoritmi polimorfi sulle liste Collections e implementazioni Set, SortedSet 1 Bank Supponiamo di voler

Dettagli

ArrayList. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi132 Sesto San Giovanni

ArrayList. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi132 Sesto San Giovanni ArrayList Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi132 Sesto San Giovanni ArrayList Sotto diversi aspetti un ArrayList può essere considerato come un array migliore. I Miglioramenti sono

Dettagli

Progettazione del Software

Progettazione del Software Progettazione del Software simulazione di esame III Domenico Fabio Savo Dipartimento di Ingegneria Informatica, Automatica e Gestionale Antonio Ruberti Requisiti L'applicazione da progettare riguarda la

Dettagli

Corso di Progettazione del Software

Corso di Progettazione del Software T. Mancini & M. Scannapieco E.P.1 Segreteria Studenti (SOLUZIONE) February 25, 2008 p. 1/20 Università degli Studi di Roma La Sapienza Facoltà di Ingegneria Corso di Laurea in Ingegneria Gestionale Corso

Dettagli

Ereditarietà (ultima)

Ereditarietà (ultima) Ereditarietà (ultima) Classi astratte Un ibrido tra classi e interfacce Hanno alcuni metodi implementati normalmente, altri astratti Un metodo astratto non ha implementazione abstract class AccountTransaction...

Dettagli

Ereditarietà (ultima)

Ereditarietà (ultima) Ereditarietà (ultima) Classi astratte Un ibrido tra classi e interfacce Hanno alcuni metodi implementati normalmente, altri astratti Un metodo astratto non ha implementazione abstract class AccountTransaction

Dettagli

SOLUZIONE. Requisiti. Requisiti (cont.) Fase di analisi. Università di Roma La Sapienza Facoltà di Ingegneria

SOLUZIONE. Requisiti. Requisiti (cont.) Fase di analisi. Università di Roma La Sapienza Facoltà di Ingegneria Università di Roma La Sapienza Facoltà di Ingegneria Corso di PROGETTAZIONE DEL SOFTWARE I (Corso di Laurea in Ingegneria Informatica) Proff. Marco Cadoli e Giuseppe De Giacomo Canali A-L & M-Z A.A. 2005-06

Dettagli

PROGRAMMAZIONE 2 Collezioni in Java: il Java Collections Framework (JCF)

PROGRAMMAZIONE 2 Collezioni in Java: il Java Collections Framework (JCF) PROGRAMMAZIONE 2 Collezioni in Java: il Java Collections Framework (JCF) 1 Perché le collezioni Spesso in un programma dobbiamo rappresentare e manipolare gruppi di valori oppure oggetti di uno stesso

Dettagli

Le collezioni di oggetti. Prof. Accarino IIS Altiero Spinelli via Leopardi 132 Sesto San Giovanni

Le collezioni di oggetti. Prof. Accarino IIS Altiero Spinelli via Leopardi 132 Sesto San Giovanni Le collezioni di oggetti Prof. Accarino IIS Altiero Spinelli via Leopardi 132 Sesto San Giovanni Contenitori di oggetti Java mette a disposizione una libreria per gestire gruppi di oggetti organizzandola

Dettagli

A. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas

A. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas Classi e oggetti A. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas Oggetti La programmazione orientata agli oggetti, OOP (Object-Oriented Programming),

Dettagli

Collections. Laboratorio di Programmazione

Collections. Laboratorio di Programmazione Collections Dagli array alle List Interfaccia List Interfaccia Comparable Interfaccia Comparator Algoritmi polimorfi sulle liste Collections e implementazioni Set, SortedSet 1 Bank Supponiamo di voler

Dettagli

Progettazione del Software

Progettazione del Software Progettazione del Software Simulazione di esame Domenico Fabio Savo Dipartimento di Ingegneria Informatica, Automatica e Gestionale Antonio Ruberti Sapienza Università di Roma Requisiti L applicazione

Dettagli

Progettazione del Software

Progettazione del Software Progettazione del Software Simulazione di esame Domenico Fabio Savo Dipartimento di Ingegneria Informatica, Automatica e Gestionale Antonio Ruberti Sapienza Università di Roma Anno Accademico 2015/2016

Dettagli

Programmazione a Oggetti. Astrazione sui Dati e Iteratori

Programmazione a Oggetti. Astrazione sui Dati e Iteratori Programmazione a Oggetti Astrazione sui Dati e Iteratori Sommario Astrazione sui dati Specifica di classi Invariante di rappresentazione Funzione di astrazione Iteratori inner classes astrazione sul controllo

Dettagli

Capitolo 6. Uso della gerarchia. c 2005 Pearson Education Italia Capitolo 6-1 / 125

Capitolo 6. Uso della gerarchia. c 2005 Pearson Education Italia Capitolo 6-1 / 125 Capitolo 6 Uso della gerarchia c 2005 Pearson Education Italia Capitolo 6-1 / 125 Sommario: Uso della gerarchia 1 Notazione UML per le classi 2 Introduzione alla gerarchia 3 Gerarchia e tipi La gerarchia

Dettagli

Interfacce. Esempio: interfaccia I con una sola funzione g() public interface I {

Interfacce. Esempio: interfaccia I con una sola funzione g() public interface I { Interfacce Una interfaccia è un astrazione per un insieme di funzioni pubbliche delle quali si definisce solo la segnatura, e non le istruzioni. Un interfaccia viene poi implementata da una o più classi

Dettagli

Heap e Code di Priorità

Heap e Code di Priorità Heap e Code di Priorità heap heap = catasta condizione di heap 1. albero binario perfettamente bilanciato 2. ogni nodo contiene una chiave maggiore o eguale di quelle presenti negli eventuali figli non

Dettagli

Corso di Algoritmi e Strutture Dati con Laboratorio. Java Collections Framework (I parte)

Corso di Algoritmi e Strutture Dati con Laboratorio. Java Collections Framework (I parte) Corso di Algoritmi e Strutture Dati con Laboratorio Java Collections Framework (I parte) L infrastruttura JCF è una raccolta di interfacce e classi, tra loro correlate, appartenenti al pacchetto java.util.

Dettagli

tipi di dato astratti

tipi di dato astratti tipi di dato astratti A. FERRARI ADT Un tipo di dato astratto o ADT (Abstract Data Type) è un tipo di dato le cui istanze possono essere manipolate con modalità che dipendono esclusivamente dalla semantica

Dettagli

Programmazione 2 - Marco Ronchetti. Fac.Scienze Università di Trento. Collections

Programmazione 2 - Marco Ronchetti. Fac.Scienze Università di Trento. Collections 1 Collections 2 Riuso della conoscenza Riuso del software Algoritmi Pattern bag! 3 Che cosa hanno in comune? bag! 4 Collection: Basic operations int size(); boolean isempty(); boolean contains(object element);

Dettagli

Linguaggi di Programmazione: Paradigmi di Programmazione

Linguaggi di Programmazione: Paradigmi di Programmazione Linguaggi di Programmazione: Paradigmi di Programmazione Strutture Dati: & Co. Matteo Baldoni Dipartimento di Informatica - Universita` degli Studi di Torino C.so Svizzera, 185 - I-10149 Torino (Italy)

Dettagli

Strutture dati. Il che cosa e il come. F. Damiani - Alg. & Lab. 04/05

Strutture dati. Il che cosa e il come. F. Damiani - Alg. & Lab. 04/05 Strutture dati Il che cosa e il come Il che cosa ed il come Struttura dati: descrive come sono organizzati i dati e come sono realizzate le operazioni su di essi (cioe come si accede ai dati) Specifica

Dettagli

Gerarchie e polimorfismo: liste

Gerarchie e polimorfismo: liste Gerarchie e polimorfismo: liste 1 Generalizzare le liste di interi List lista di oggetti non modificabile vorremo poi definire un sottotipo versione ordinata 2 List classe astratta usate i sottotipi per

Dettagli