Fondamenti di Informatica T-1 · utilizzata come chiave ne identi ca il genere. Fondamenti di...

14
Fondamenti di Informatica T-1 Mappe Tutor: Allegra De Filippo allegra.defi[email protected] a.a. 2015/2016 Fondamenti di Informatica T-1 Allegra De Filippo 1/1

Transcript of Fondamenti di Informatica T-1 · utilizzata come chiave ne identi ca il genere. Fondamenti di...

Page 1: Fondamenti di Informatica T-1 · utilizzata come chiave ne identi ca il genere. Fondamenti di Informatica T-1 Allegra De Filippo 4 / 1. ESERCIZIO 1 (SVOLTO (2)) Scrivere i seguenti

Fondamenti di Informatica T-1Mappe

Tutor:Allegra De Filippo

[email protected]

a.a. 2015/2016

Fondamenti di Informatica T-1 Allegra De Filippo 1 / 1

Page 2: Fondamenti di Informatica T-1 · utilizzata come chiave ne identi ca il genere. Fondamenti di Informatica T-1 Allegra De Filippo 4 / 1. ESERCIZIO 1 (SVOLTO (2)) Scrivere i seguenti

Mappe: definizione

• Tabelle a due colonne: le chiavi (1a colonna) identificanounivocamente i valori nella 2a colonna.

• Si puo accedere direttamente ad un valore, conoscendo lachiave associata

• Primitive:

• T2 put(T1 k, T2 v) → Inserisce una coppia chiave-valore nellamappa

• T2 get(T1 k) → Restituisce il valore associato ad unadeterminata chiave passata come argomento

• T2 remove(T1 k) → Rimuove il valore associato ad unadeterminata chiave passata come argomento

• int size() → Restituisce la cardinalita della mappa• boolean isEmpty() → Verifica se la mappa e vuota• Set< T 1 > keySet() → Restituisce il set delle chiavi

• Implementazione → HashMap

Fondamenti di Informatica T-1 Allegra De Filippo 2 / 1

Page 3: Fondamenti di Informatica T-1 · utilizzata come chiave ne identi ca il genere. Fondamenti di Informatica T-1 Allegra De Filippo 4 / 1. ESERCIZIO 1 (SVOLTO (2)) Scrivere i seguenti

Mappe: esempio

Esempio: elenco telefonico

• Ad ogni persona (nome, cognome, indirizzo) e associato unnumero di telefono

Map<Persona,String> elenco = new HashMap<Persona, String>();Persona p = new Persona(”Mario”,”Rossi”,”Via col vento, 18”);elenco.put(p,”051123456”);String numeroCercato = elenco.get(p);

Fondamenti di Informatica T-1 Allegra De Filippo 3 / 1

Page 4: Fondamenti di Informatica T-1 · utilizzata come chiave ne identi ca il genere. Fondamenti di Informatica T-1 Allegra De Filippo 4 / 1. ESERCIZIO 1 (SVOLTO (2)) Scrivere i seguenti

ESERCIZIO 1 (SVOLTO (1))

Un Libro e composto da un titolo ed un prezzo.

Oltre ad i metodi getter e setter, ridefinire i metodi equals ehashCode.

Due libri sono uguali se hanno lo stesso titolo.

Una Libreria ha un nome ed una mappa <String, Set <Libro>>che ne schematizza l’organizzazione di uno scaffale, dove la stringautilizzata come chiave ne identifica il genere.

Fondamenti di Informatica T-1 Allegra De Filippo 4 / 1

Page 5: Fondamenti di Informatica T-1 · utilizzata come chiave ne identi ca il genere. Fondamenti di Informatica T-1 Allegra De Filippo 4 / 1. ESERCIZIO 1 (SVOLTO (2)) Scrivere i seguenti

ESERCIZIO 1 (SVOLTO (2))

Scrivere i seguenti metodi:

• public boolean aggiungiLibro(Libro libro, String genere):aggiunge un libro allo scaffale adeguato. Se lo scaffale di quelpreciso genere non esiste, il metodo ne crea uno ad hoc.Restituisce in output true se l’operazione va a buon fine, falsealtrimenti.

• public String getGenerePiuEconomico(): restituisce inoutput il genere dello scaffale il cui prezzo dei libri, in media, epiu basso.

Scrivere un main di prova per testare le funzioni sopra elencate.

Fondamenti di Informatica T-1 Allegra De Filippo 5 / 1

Page 6: Fondamenti di Informatica T-1 · utilizzata come chiave ne identi ca il genere. Fondamenti di Informatica T-1 Allegra De Filippo 4 / 1. ESERCIZIO 1 (SVOLTO (2)) Scrivere i seguenti

ESERCIZIO 1 (SOLUZIONE Classe Libro)

Fondamenti di Informatica T-1 Allegra De Filippo 6 / 1

Page 7: Fondamenti di Informatica T-1 · utilizzata come chiave ne identi ca il genere. Fondamenti di Informatica T-1 Allegra De Filippo 4 / 1. ESERCIZIO 1 (SVOLTO (2)) Scrivere i seguenti

ESERCIZIO 1 (SOLUZIONE Classe Libreria (1))

Fondamenti di Informatica T-1 Allegra De Filippo 7 / 1

Page 8: Fondamenti di Informatica T-1 · utilizzata come chiave ne identi ca il genere. Fondamenti di Informatica T-1 Allegra De Filippo 4 / 1. ESERCIZIO 1 (SVOLTO (2)) Scrivere i seguenti

ESERCIZIO 1 (SOLUZIONE Classe Libreria (2))

Fondamenti di Informatica T-1 Allegra De Filippo 8 / 1

Page 9: Fondamenti di Informatica T-1 · utilizzata come chiave ne identi ca il genere. Fondamenti di Informatica T-1 Allegra De Filippo 4 / 1. ESERCIZIO 1 (SVOLTO (2)) Scrivere i seguenti

ESERCIZIO 1 (SOLUZIONE Classe Main)

Fondamenti di Informatica T-1 Allegra De Filippo 9 / 1

Page 10: Fondamenti di Informatica T-1 · utilizzata come chiave ne identi ca il genere. Fondamenti di Informatica T-1 Allegra De Filippo 4 / 1. ESERCIZIO 1 (SVOLTO (2)) Scrivere i seguenti

ESERCIZIO 2 (1)

Un Programma e composto da un titolo, un genere ed una fascia(un enum i cui valori sono VERDE, GIALLO, ROSSO).Ridefinire per questo i metodi hashCode e equals, oltre ad igetter e setter.

Due programmi sono uguali se hanno lo stesso titolo.

Un Appuntamento e composto da un’ora (un intero) ed un giornodella settimana (una stringa).Oltre ad i metodi getter e setter, ridefinire i metodi equals ehashCode.

Inoltre la classe deve implementare l’interfaccia Comparable (lafunzione compareTo deve seguire l’ordine temporale).

Fondamenti di Informatica T-1 Allegra De Filippo 10 / 1

Page 11: Fondamenti di Informatica T-1 · utilizzata come chiave ne identi ca il genere. Fondamenti di Informatica T-1 Allegra De Filippo 4 / 1. ESERCIZIO 1 (SVOLTO (2)) Scrivere i seguenti

ESERCIZIO 2 (2)

Un Canale e composto da un nome ed una mappa<Appuntamento, Programma> che ne indica la programmazione.

Definire i seguenti metodi:

• public Set <Programma> programmiPerBambini(Stringgenere) : restituisce in output il set di programmi visionabilida bambini (Fascia VERDE) per un determinato genere.

• public List <Appuntamento>programmazioneProgramma(String titolo) : restituisce inoutput la lista (ordinata) degli appuntamenti di undeterminato programma durante la settimana.

Scrivere un main di prova per testare le funzioni sopra elencate.

Fondamenti di Informatica T-1 Allegra De Filippo 11 / 1

Page 12: Fondamenti di Informatica T-1 · utilizzata come chiave ne identi ca il genere. Fondamenti di Informatica T-1 Allegra De Filippo 4 / 1. ESERCIZIO 1 (SVOLTO (2)) Scrivere i seguenti

ESERCIZIO 3 (1)

Si scriva un programma che definisca opportuni classi, costruttori emetodi per un servizio di telefonia.I dati gestiti dal programma sono relativi a:

• Tariffe, caratterizzate da: codice, nome.• Telefonate, caratterizzate da: sorgente (numero chiamante),

destinazione (numero chiamato), durata, data (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 classeGestoreTelefonico nelle strutture dati:

• un vettore tariffe, contenente le tariffe (max 15);• un insieme telefonate, contenente le telefonate;• una mappa tariffeUtenti, che associa numero-tariffa.

Fondamenti di Informatica T-1 Allegra De Filippo 12 / 1

Page 13: Fondamenti di Informatica T-1 · utilizzata come chiave ne identi ca il genere. Fondamenti di Informatica T-1 Allegra De Filippo 4 / 1. ESERCIZIO 1 (SVOLTO (2)) Scrivere i seguenti

ESERCIZIO 3 (2)

Si definiscano i seguenti metodi:

• cercaTariffa che, dato il nome di una tariffa, restituisca latariffa corrispondente

• registraUtente che, dato il numero di un utente e il nome diuna tariffa, aggiunga alla mappa una nuova coppianumero-tariffa. Si utilizzi il metodo cercaTariffa

• telefonateMensili che, dati il numero di telefono di un utentee una stringa contenente un mese di riferimento (mm/aaaa),restituisca la lista delle telefonate effettuate dall’utente in quelmese.

• calcolaCostoMensile che, dati il numero di telefono di unutente e una stringa contenente un mese di riferimento(mm/aaaa), calcoli l’importo dovuto dall’utente: se l’utenteha 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).

Fondamenti di Informatica T-1 Allegra De Filippo 13 / 1

Page 14: Fondamenti di Informatica T-1 · utilizzata come chiave ne identi ca il genere. Fondamenti di Informatica T-1 Allegra De Filippo 4 / 1. ESERCIZIO 1 (SVOLTO (2)) Scrivere i seguenti

ESERCIZIO 3 (3)

Il programma principale deve, infine, svolgere seguenti punti:

• chiedere all’utente numero di telefono e il nome di una tariffae invocare il metodo registraUtente per la registrazione

• richiedere all’utente numero di telefono e un mese e invocare ilmetodo calcolaCostoMensile, stampando a video il risultato.

Fondamenti di Informatica T-1 Allegra De Filippo 14 / 1