Fondamenti di Informatica T-1 · utilizzata come chiave ne identi ca il genere. Fondamenti di...
Transcript of Fondamenti di Informatica T-1 · utilizzata come chiave ne identi ca il genere. Fondamenti di...
Fondamenti di Informatica T-1Mappe
Tutor:Allegra De Filippo
a.a. 2015/2016
Fondamenti di Informatica T-1 Allegra De Filippo 1 / 1
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
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
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
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
ESERCIZIO 1 (SOLUZIONE Classe Libro)
Fondamenti di Informatica T-1 Allegra De Filippo 6 / 1
ESERCIZIO 1 (SOLUZIONE Classe Libreria (1))
Fondamenti di Informatica T-1 Allegra De Filippo 7 / 1
ESERCIZIO 1 (SOLUZIONE Classe Libreria (2))
Fondamenti di Informatica T-1 Allegra De Filippo 8 / 1
ESERCIZIO 1 (SOLUZIONE Classe Main)
Fondamenti di Informatica T-1 Allegra De Filippo 9 / 1
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
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
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
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
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