Fondamenti di Informatica T-1 · La classe Libro e composta da un titolo, un numero, una casa...

22
Fondamenti di Informatica T-1 Interfaccia Comparable e Collezioni Tutor: Allegra De Filippo allegra.defi[email protected] a.a. 2015/2016 Fondamenti di Informatica T-1 Allegra De Filippo 1 / 22

Transcript of Fondamenti di Informatica T-1 · La classe Libro e composta da un titolo, un numero, una casa...

Page 1: Fondamenti di Informatica T-1 · La classe Libro e composta da un titolo, un numero, una casa editrice, un’edizione ed un prezzo. Oltre ad i metodi getter e setter, ride nire il

Fondamenti di Informatica T-1Interfaccia Comparable e Collezioni

Tutor:Allegra De Filippo

[email protected]

a.a. 2015/2016

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

Page 2: Fondamenti di Informatica T-1 · La classe Libro e composta da un titolo, un numero, una casa editrice, un’edizione ed un prezzo. Oltre ad i metodi getter e setter, ride nire il

Interfaccia <<Comparable>>

• Fa parte delle interfacce standard di Java

• Se implementata, esprime la capacita di un oggetto di poteressere confrontato con un altro dello stesso tipo secondoalcuni criteri decisi dal programmatore

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

Page 3: Fondamenti di Informatica T-1 · La classe Libro e composta da un titolo, un numero, una casa editrice, un’edizione ed un prezzo. Oltre ad i metodi getter e setter, ride nire il

Interfaccia <<Comparable>>

• Per fare cio nella classe bisogna:• Implementare l’interfaccia Comparable <T>• Ridefinire il metodo public int compareTo(T x)

• Il metodo in output deve seguire la seguente ipotesisemantica:

• 0 : gli oggetti sono uguali• +1 : this succede x• -1 : this precede x

• NB: le relazioni di precedenza non sono in senso strettamentenumerico (es. ordine alfabetico)

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

Page 4: Fondamenti di Informatica T-1 · La classe Libro e composta da un titolo, un numero, una casa editrice, un’edizione ed un prezzo. Oltre ad i metodi getter e setter, ride nire il

Interfaccia <<Collection>>

• L’interfaccia <<Collection>> introduce l’idea di collezione dielementi

• E’ estremamente generica: non si fanno ipotesi sulla naturadella collezione

• Metodi forniti:• add → aggiunge un elemento• remove → rimuove un elemento• contains → verifica se un elemento e nella collezione• isEmpty → verifica se la collezione e vuota• size → indica la cardinalita della collezione• iterator → ottiene un oggetto di tipo Iteratore• toArray → crea un array con gli stessi elementi della collezione• equals → verifica se due collezioni sono uguali

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

Page 5: Fondamenti di Informatica T-1 · La classe Libro e composta da un titolo, un numero, una casa editrice, un’edizione ed un prezzo. Oltre ad i metodi getter e setter, ride nire il

Interfaccia <<List>>

• Estende e specializza <<Collection>>

• Introduce il concetto di sequenza di elementi• Il metodo add corrisponde ad un append → aggiunge un

elemento in fondo alla lista• equals ritorna true se le liste contengono gli stessi elementi

nello stesso ordine• Vengono introdotti nuovi metodi con notazione posizionale

(es. get(int index) )

• Implementazione → ArrayList

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

Page 6: Fondamenti di Informatica T-1 · La classe Libro e composta da un titolo, un numero, una casa editrice, un’edizione ed un prezzo. Oltre ad i metodi getter e setter, ride nire il

Interfaccia <<Set>>

• Estende e specializza <<Collection>>

• Introduce il concetto di insieme di elementi (NON insequenza)

• Per sfogliarne il contenuto ci si appoggia all’utilizzo di Iteratori

• Set non ammette la duplicazione di elementi al proprio interno→ add fallisce nel caso in cui l’elemento che si sta tentando diinserire sia gia presente nell’insieme

• Per fare cio Set si appoggia al metodo equals della sua classetipo → a default confronta gli indirizzi di memoria

• Per modificare questo criterio bisogna ridefinire il metodoequals (ed il metodo public int hashCode())

• Implementazione → HashSet

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

Page 7: Fondamenti di Informatica T-1 · La classe Libro e composta da un titolo, un numero, una casa editrice, un’edizione ed un prezzo. Oltre ad i metodi getter e setter, ride nire il

ESERCIZIO 1 (SVOLTO)

Un Corridore e descritto da un nome e da una tempistica insecondi. Oltre ad i metodi getter e setter deve implementarel’interfaccia Comparable e quindi ridefinire il metodo compareTo(un atleta precede un altro quando la sua tempistica in secondi einferiore rispetto a quella di quest’ultimo).La classe Competizione e formata da un premio in denaro ed unalista di corridori. La classe deve fornire due metodi:

• public void aggiungiAtleta(Corridore a) → Si occupa diaggiungere un corridore e di mantenere la lista in ordinecrescente.

• public Corridore getVincitore() → restituisce in output ilcorridore con il tempo migliore

Scrivere infine un main di prova per testare il correttofunzionamento delle classi sopra descritte chiedendo i datiall’utente.

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

Page 8: Fondamenti di Informatica T-1 · La classe Libro e composta da un titolo, un numero, una casa editrice, un’edizione ed un prezzo. Oltre ad i metodi getter e setter, ride nire il

ESERCIZIO 1 (Esempio di output)

Provare a svolgere a casa una versione che mantenga la listaordinata man mano che si inserisce un corridore (scorrere la lista einserire l’elemento nel punto opportuno).

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

Page 9: Fondamenti di Informatica T-1 · La classe Libro e composta da un titolo, un numero, una casa editrice, un’edizione ed un prezzo. Oltre ad i metodi getter e setter, ride nire il

ESERCIZIO 1 (SOLUZIONE Classe Corridore)

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

Page 10: Fondamenti di Informatica T-1 · La classe Libro e composta da un titolo, un numero, una casa editrice, un’edizione ed un prezzo. Oltre ad i metodi getter e setter, ride nire il

ESERCIZIO 1 (SOLUZIONE Classe Competizione (1))

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

Page 11: Fondamenti di Informatica T-1 · La classe Libro e composta da un titolo, un numero, una casa editrice, un’edizione ed un prezzo. Oltre ad i metodi getter e setter, ride nire il

ESERCIZIO 1 (SOLUZIONE Classe Competizione (2))

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

Page 12: Fondamenti di Informatica T-1 · La classe Libro e composta da un titolo, un numero, una casa editrice, un’edizione ed un prezzo. Oltre ad i metodi getter e setter, ride nire il

ESERCIZIO 1 (SOLUZIONE Classe Main)

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

Page 13: Fondamenti di Informatica T-1 · La classe Libro e composta da un titolo, un numero, una casa editrice, un’edizione ed un prezzo. Oltre ad i metodi getter e setter, ride nire il

ESERCIZIO 2 (1) (SVOLTO)

Si vuole scrivere un programma per la gestione online di acquisti dilibri.

La classe Libro e composta da un titolo, un numero, una casaeditrice, un’edizione ed un prezzo.

Oltre ad i metodi getter e setter, ridefinire il metodo equals (duelibri sono considerati uguali quando hanno tutti i parametri con lostesso valore, prezzo escluso) ed il metodo hashCode().

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

Page 14: Fondamenti di Informatica T-1 · La classe Libro e composta da un titolo, un numero, una casa editrice, un’edizione ed un prezzo. Oltre ad i metodi getter e setter, ride nire il

ESERCIZIO 2 (2) (SVOLTO)

La classe CarrelloLibreria e formata da un insieme di libri. Devefornire due metodi:

• public boolean aggiungiLibro(Libro l) → prova adaggiungere un libro al carrello. Nel caso in cui il libro fosse giapresente, sostituisce il nuovo al vecchio solo in caso di prezzoinferiore. Restituisce true in caso di inserimento riuscito, falsealtrimenti.

• public double getConto() → restituisce in output la sommatotale da pagare.

Scrivere infine un main di prova per testare il correttofunzionamento delle classi sopra descritte.

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

Page 15: Fondamenti di Informatica T-1 · La classe Libro e composta da un titolo, un numero, una casa editrice, un’edizione ed un prezzo. Oltre ad i metodi getter e setter, ride nire il

ESERCIZIO 2 (Esempio di output)

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

Page 16: Fondamenti di Informatica T-1 · La classe Libro e composta da un titolo, un numero, una casa editrice, un’edizione ed un prezzo. Oltre ad i metodi getter e setter, ride nire il

ESERCIZIO 2 (SOLUZIONE Classe Libro (1))

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

Page 17: Fondamenti di Informatica T-1 · La classe Libro e composta da un titolo, un numero, una casa editrice, un’edizione ed un prezzo. Oltre ad i metodi getter e setter, ride nire il

ESERCIZIO 2 (SOLUZIONE Classe Libro (2))

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

Page 18: Fondamenti di Informatica T-1 · La classe Libro e composta da un titolo, un numero, una casa editrice, un’edizione ed un prezzo. Oltre ad i metodi getter e setter, ride nire il

ESERCIZIO 2 (SOLUZIONE Classe CarrelloLibreria)

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

Page 19: Fondamenti di Informatica T-1 · La classe Libro e composta da un titolo, un numero, una casa editrice, un’edizione ed un prezzo. Oltre ad i metodi getter e setter, ride nire il

ESERCIZIO 2 (SOLUZIONE Classe Main)

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

Page 20: Fondamenti di Informatica T-1 · La classe Libro e composta da un titolo, un numero, una casa editrice, un’edizione ed un prezzo. Oltre ad i metodi getter e setter, ride nire il

ESERCIZIO 3 (1)

Si vuole scrivere un programma per la gestione degli impegniquotidiani.

Un Impegno e caratterizzato da una stringa contenente ladescrizione di cosa fare, un orario (un intero da 1 a 24) ed unintero da 1 a 5 che ne indica l’urgenza.

Deve implementare l’interfaccia Comparable e ridefinire il metodocompareTo secondo il criterio temporale.

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

Page 21: Fondamenti di Informatica T-1 · La classe Libro e composta da un titolo, un numero, una casa editrice, un’edizione ed un prezzo. Oltre ad i metodi getter e setter, ride nire il

ESERCIZIO 3 (2)

La classe ToDoList e formata da una lista di impegni e devecontenere i seguenti metodi:

• public boolean aggiungiImpegno(Impegno impegno) →Aggiunge un impegno alla lista, preoccupandosi di mantenerlaordinata in ordine crescente secondo il criterio temporale. Incaso di sovrapposizione di impegni (impegni che capitano aduno stesso orario) deve essere mantenuto quello con maggioreurgenza. Restituisce true in caso di inserimento riuscito, falsealtrimenti.

• public List < Impegno > getUrgenti() → restituisce inoutput la lista degli impegni con urgenza massima.

Scrivere infine un main di prova per testare il correttofunzionamento delle classi sopra descritte.

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

Page 22: Fondamenti di Informatica T-1 · La classe Libro e composta da un titolo, un numero, una casa editrice, un’edizione ed un prezzo. Oltre ad i metodi getter e setter, ride nire il

ESERCIZIO 3 (Esempio di output)

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