Fondamenti di Informatica T-1. Collezioni

Documenti analoghi
Fondamenti di Informatica T-1. Collezioni

Fondamenti di Informatica T-1

Fondamenti di Informatica T-1

Fondamenti di Informatica T-1

Fondamenti di Informatica T-1

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

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

Programmazione in Java Parte II

Generics & Collections

Collezioni. (a cura del Prof. Marco Patella)

Fondamenti di Informatica T1 Mappe

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

Fondamenti di Informatica T-1

Fondamenti di Informatica T-1

ESERCIZIO 1 ESERCIZIO 1

Fondamenti di Informatica T1 Interfaccia Comparable Collezioni

Esempio su strutture dati dinamiche: ArrayList

Esempio su strutture dati dinamiche: ArrayList

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

Fondamenti di Informatica T-1

Introduzione al Java Collections Framework

Metodi di una Collection

Progettazione del Software

Strutture lineari in Java

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

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

Notazione grafica UML

Esempio su strutture dati dinamiche: ArrayList

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

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

Fondamenti di Informatica T-1. Costruttori Ereditarietà

Fondamenti di Informatica T-1. Classi e oggetti

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

Fondamenti di Informatica T-1. Classi e metodi astratti

Fondamenti di Informatica T-1. Classi e array

Programmazione Orientata agli Oggetti in Linguaggio Java

Il Java Collections Framework

Un interfaccia è una classe completamente astratta, senza attributi(solo una collezione di firme di metodi pubblici e astratti)

Programmazione Orientata agli Oggetti in Linguaggio Java

Corso di Progettazione del Software

Esempio su strutture dati dinamiche: ArrayList

Collezioni in Java. Emilio Di Giacomo e Walter Didimo

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

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

Array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 11. A. Miola Dicembre 2007

Prova di Laboratorio del [ Corso A-B di Programmazione (A.A. 2004/05) Esempio: Media Modalità di consegna:

Programmazione in Java (I modulo) Lezione 20: Ereditarietà

E21 Esercizi sulle collezioni in Java

Fondamenti di Informatica T-1

Testo di Riferimento (usato nei corsi precedenti)

Classe Vettore (i) Creare una classe che consenta di gestire un vettore di N elementi reali (double), che preveda i seguenti metodi:

tipi di dato astratti

SET: specifica INTRODUZIONE. SET: esempio Si stampano i numeri casuali in ordine di generazione e il contenuto dell insieme.

COMPITO DI LABORATORIO DI PROGRAMMAZIONE Dicembre Alcune Soluzioni

Implementazione delle classi

IL CONCETTO DI CLASSE

Il TDA Map. Tabelle hash

Definizione informale. Il TDA Map memorizza coppie formate da una chiave k e da un valore v. La coppia è chiamata entry. Ogni chiave deve essere unica

Il TDA Map. Definizione informale. I metodi del TDA Map 2. I metodi del TDA Map 1. Interfaccia Map 1 NO_SUCH_KEY. Tabelle hash

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

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

java.util.map ALBERTO FERRARI

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

OLTRE LE CLASSI OLTRE LE CLASSI

Fondamenti di Informatica T-1

COMPITO DI LABORATORIO DI PROGRAMMAZIONE Dicembre 2001

Progettazione del Software Anno Accademico

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

Liste concatenate. Collezione ordinata di nodi. Carlo Paolo Simona. Anna. ciascun nodo contiene due riferimenti:

14. Java Collection Framework Le collezioni: insiemi e liste

OLTRE LE CLASSI OLTRE LE CLASSI OLTRE LE CLASSI OLTRE LE CLASSI. Alcune domande. Nella sua parte non statica, una classe

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

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

Lezione 6 programmazione in Java

INFORMATICA III Parte B -Progettazione e Algoritmi

soluzioneluglio.txt 1. Scrivere una funzione che restituisce la data dinascita di un determinato studente.

Fondamenti di Informatica T-1

Si descriva il comportamento del metodo main della classe ES2: cosa viene stampato sul video? Giustificare la risposta.

3. un metodo che restituisce l elenco delle matricole di tutti gli studenti del corso;

Capitolo 17. Animated Version

Fondamenti di Informatica T-1

Classi ed Oggetti. Fondamenti di Informatica A-K

Fondamenti di informatica Oggetti e Java. Luca Cabibbo. Collezioni++ (Aggiunte di Marco Patella) Capitolo 26.bis. aprile 2006.

Esercizi 5 CICLI. Es.5(cicli)

Algoritmi e strutture dati

L ambizione dei design pattern (letteralmente schemi di programmazione) è quella di offrire soluzioni a problemi ricorrenti che facilitano lo

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

Esercizio: Lista Circolare

Fondamenti di Informatica T-1

Sul pattern Iterator

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

Programmazione II Compitino (Vers. B)

Fondamenti di Informatica L-B Esercitazione n 6 Java: Collezioni, Classe Wrapper & Generics

Fondamenti di Informatica L-B Esercitazione n 6 Java: Collezioni, Classe Wrapper & Generics. Strutture Dati in Java

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

Programmazione Orientata agli Oggetti in Linguaggio Java

Lezione 6 Collezioni. Il concetto astratto di collezione. Servizio minimo: IContainer. Stack (pila)

Transcript:

Collezioni

Collezioni 2 Java Collection Framework (JCF): supporto a qualunque struttura dati per contenere "elementi generici". Collection: nessuna ipotesi sul tipo di collezione Set: introduce l idea di insieme di elementi (quindi, senza duplicati) List: introduce l idea di sequenza Map: introduce l idea di mappa, tabella che associa chiavi a valori

3 Collezioni JDK <=1.4: uso di Object come elemento generico JDK >=1.5: uso del tipo generico Collection Collection<X> boolean add(object o) boolean add(x o) boolean contains(object o) boolean contains(x o) boolean remove(object o) boolean remove(x o) int size() boolean isempty() Iterator iterator() int size() boolean isempty() Iterator<X> iterator()

4 Collezioni: accesso agli elementi Iteratore: strumento per "ciclare" su una collezione di elementi, determinando di volta in volta l'elemento "successivo" Iterator boolean hasnext() Object next() Iterator<X> boolean hasnext() X next() Accesso diretto ArrayList ArrayList<X> Object get(int i) X get(int i) Object set(int i, Object o) X set(int i, X o) Object remove(int i) X remove(int i) void add(int i, Object o) void add(int i, X o) int indexof(object o) int indexof(x o)

5 Mappe Tabelle a due colonne: le chiavi (1ª colonna) identificano univocamente gli elementi nella 2ª colonna. Si può accedere direttamente ad un elemento, conoscendo la chiave associata HashMap<X,Y> Y put(x k, Y v) Y get(x k) Y remove(x k) int size() boolean isempty() Set<X> keyset() Chiave Mario Rossi, Via col vento 18. Valore 051213225 Esempio elenco telefonico: Ad ogni persona (nome, cognome, indirizzo) è associato un numero di telefono Map<Persona,String> elenco = new HashMap<Persona, String>(); Persona p = new Persona("Mario","Rossi","Via col vento, 18"); elenco.put(p,"051213225"); String numerocercato = elenco.get(p);

6 Esercizio 1: piano telefonico Si scriva un programma Java che definisca opportuni classi, costruttori e metodi per un servizio di telefonia. I dati gestiti dal programma sono relativi a: Tariffe, caratterizzate dalle informazioni: codice, nome. Telefonate, caratterizzate dalle informazioni: sorgente (numero del telefono che chiama), destinazione (numero chiamato), durata, data (stringa nel formato gg/mm/aaaa). Le tariffe si suddividono in: Flat (codice F-<#progressivo>), con un canone mensile. A minuti (codice M-<#progressivo>), con costo al minuto e scatto alla risposta. Si supponga che tali informazioni siano contenute in una classe GestoreTelefonico nelle strutture dati: un vettore tariffe, contenente le tariffe (max 15); Un insieme telefonate, contenente le telefonate; una mappa tariffeutenti, che associa ad ogni numero di telefono la tariffa. Si assuma che le strutture dati siano già inizializzate con un numero imprecisato di elementi. Si definiscano i soli metodi getter e setter necessari all esecuzione del programma. Si utilizzi la programmazione generica.

Esercizio 1: piano telefonico Si definiscano i seguenti metodi, all interno dei quali non è consentita l immissione di valori da standard input (escluso il programma principale o se diversamente specificato)(n.b.: svolgere tutti i punti nel modo più efficiente): 1. metodo cercatariffa che, dato il nome di una tariffa, restituisca la tariffa corrispondente, lanciando un'eccezione se questa non viene trovata 2. metodo registrautente che, dato il numero di un utente e il nome di una tariffa, aggiunga alla mappa una nuova coppia numero-tariffa. Si utilizzi il metodo del punto 1, senza gestire l'eccezione lanciata. 3. metodo telefonatemensili che, dati il numero di telefono di un utente e una stringa contenente un mese di riferimento (nel formato mm/aaaa), restituisca la lista delle telefonate effettuate dall'utente in quel mese. 4. metodo calcolacostomensile che, dati il numero di telefono di un utente e una stringa contenente un mese di riferimento (nel formato mm/aaaa), calcoli l'importo dovuto dall'utente: se l'utente ha una tariffa flat, paga solo il canone mensile, altrimenti, l'importo è dato dalla somma dei costi delle singole telefonate (durata * costo al minuto + scatto alla risposta). Il programma principale deve, infine, svolgere seguenti punti: a) richiedere all utente numero di telefono e il nome di una tariffa e richiamare il metodo del punto 2) per la registrazione, gestendo eventuali eccezioni e richiedendo l'inserimento dei dati. b) richiedere all utente numero di telefono e un mese e richiamare il metodo del punto 4), stampando a video il risultato. 7

8 Esercizio 2: e-learning Si scriva un programma Java che definisca opportuni classi, costruttori e metodi per la gestione di una piattaforma di e-learning. I dati gestiti dal programma sono relativi a: Contenuti, caratterizzati da un codice. Studenti, caratterizzati da un nome e da una tabella che associa ad ogni test il voto ottenuto. I contenuti si suddividono in: Lezioni (codice L-<#progressivo>), caratterizzate da un testo e un insieme di argomenti. Test (codice T-<#progressivo>), con un argomento e una lista di quiz (domanda e risposta vero/falso). Si supponga che tali informazioni siano contenute in una classe Corso, in un vettore contenuti, contenente massimo 100 contenuti; Si assuma che le strutture dati siano già inizializzate con un numero imprecisato di elementi. Si definiscano i soli metodi getter e setter necessari all esecuzione del programma. Si utilizzi la programmazione generica.

9 Esercizio 2: e-learning Si definiscano i seguenti metodi, all interno dei quali non è consentita l immissione di valori da standard input (escluso il programma principale o se diversamente specificato)(n.b.: svolgere tutti i punti nel modo più efficiente): 1. metodo calcolavoto che, data una lista di risposte, le confronti con le risposte corrette ai quiz in un test, calcolando un voto in decimi ((risposte corrette/n quesiti) *10) e restituendo un voto espresso come: Insufficiente(voto<6), Sufficiente (6<=voto<7), Buono (7<=voto<8), Ottimo (voto >=8). Si lanci un eccezione se il numero di risposte date in ingresso non è uguale al numero di domande nel test. 2. metodo lezioniperargomento che, dato un argomento, restituisca la lista delle lezioni che trattano tale argomento. 3. metodo sostienitest che, dati il codice di un test, lo studente e una lista di risposte, cerchi il test corrispondente, invochi il metodo del punto 1) per calcolare il voto e lo aggiunga alla mappa dei test sostenuti dallo studente. Si rilanci l eccezione del metodo del punto 1) e si lanci un eccezione se non viene trovato nessun test relativo all argomento in ingresso. 4. metodo verificaconclusionecorso che, dato uno studente, verifichi se l utente ha sostenuto tutti i test, riportando voti non inferiori a Sufficiente. Il programma principale deve, infine, svolgere seguenti punti: a) richiedere all utente l argomento di una lezione, invocare il metodo del punto 2 e mostrare a video il codice e il testo di ogni lezione trovata. b) richiedere all utente il codice di un test e una lista di risposte, invocare i metodi del punto 3 e del punto 4 (relativamente ad uno studente creato in precedenza), mostrando a video i risultati.