Informatica IV

Attività 1 - Esercizio sull'ereditarietà

Segui da questo sito http://www.di.unipi.it/~lametti/Ereditarieta.html gli esercizi dall'uno al quattro. In particolare:

    • Aggiungi una classe ProdottoTest con cui provare passo passo con dei dati a piacere tutti i metodi e le classi che crei

    • Nell'esercizio 1c ridefinisci almeno equals(), toString() e clone()

Attività 2 - (T) Il porta cd in UML

Classe semplice e classe che contiene altre classi

Progetta in UML una classe CdAudio. Ogni oggetto deve avere almeno titolo, autore, numero brani e durata. La classe deve avere i seguenti metodi:

    • costruttore (titolo, autore, numero brani e durata)

    • getter e setter secondo le specifiche javabeans

    • toString

    • comparaDurata che confronta la durata di un cd con un altro

Inoltre progetta in UML una classe PortaCd che può contenere fino ad un massimo di N oggetti di tipo CD che non ha cd quando viene creata. Inoltre ha i metodi:

    • costruttore, con N parametro del massimo numero di Cd

    • getCD(i) che restituisce l'i-esimo cd

    • setCD(i) che sostituisce l'i-esimo cd

    • killCD(i) che elimina il cd presente nella posizione i

    • getN che restituisce il numero di elementi presenti nel porta cd

    • cercaCDperTitolo che restituisce la posizione nelportaCd del cd

    • toString che restituisce una stringa con il contenuto del cd

    • confrontaCollezione: consente di confrontare i CD di un PortaCd con quelli di un altro PortaCd restituendo il numero dei cd in comune

Collega le due classi

Attività 3 - (T) Il PortaCD e i Prodotti in UML al PC

Usando StarUML crea l'UML dei due esercizi precedenti prestando attenzione alla correttezza dei tipi che crei.

Attenzione in particolare alle associazioni e controlla, generando il codice java, che l'associazione che hai fatto sia corretta. Ad esempio se una classe è figlia di un'altra deve generare automaticamente "extends".

Quindi consegna su fidenia:

    • L'immagine del tuo UML del Cd/PortaCd

    • Il Java generato del Cd/PortaCd

    • L'immagine del tuo UML dei Prodotti/Alimentari/ecc...

    • Il java generato dei Prodotti/Alimentari/ecc...

Buon lavoro!

Attività 4 - LAB - La Lista della spesa grafica (in gruppi da due)

Un negozio vuole realizzare un registratore di cassa per fare pagare ai clienti lo scontrino. I prodotti che si possono registrare sono i prodotti Alimentari/NonAlimentari che abbiamo già definito nella Attività 1. Il programma gestisce lo scontrino tramite un'interfaccia grafica che deve essere il più semplice e intuitiva da utilizzare, colorata e con una grafica accattivante. Di seguito l'elenco delle funzionalità.

Nuovo scontrino

Deve essere possibile creare un nuovo scontrino, resettando i valori presenti, e decidendo se lo scontrino avrà la tessera fedeltà.

Registrazione prodotti

E' possibile aggiungere registrare i prodotti ad uno ad uno decidendo se sono Alimentari o Non Alimentari.

Calcolo totale

L'applicazione in ogni momento deve mostrare il totale dello scontrino.

Elimina prodotto

Deve essere possibile eliminare un prodotto che è stato inserito per errore.

Salva scontrino

Deve essere possibile salvare su disco il contenuto dello scontrino

Carica scontrino

Deve essere possibile caricare da disco uno scontrino precedentemente salvato e visualizzare quindi la lista dei prodotti.

Dividetevi a coppie e usate git (vedremo in classe come)... buon lavoro!

* Zhou ricopre il ruolo fondamentale di assistenza per tutti gli altri nello sviluppo e per suggerire soluzioni ai problemi.

Riepilogo requisiti generali dell'applicazione:

  • Deve avere una bella grafica

  • Il codice deve essere commentato

  • Bug Free! Ricorda che la via dei bug è infinita e imprevedibile... se ad esempio inserisco del testo nel prezzo non deve uscire l'applicazione. Di solito il modo più sicuro per trovarli è fare provare l'applicazione a qualcun altro.

Come caricare su GIT il progetto

Attività 5 - TEORIA - Le Eccezioni

1. Quali sono le classi da cui deriva la classe Exception?

2. C’è anche una interfaccia, cerca la differenza tra interfaccia e classe e cerca anche tre esempi appartenenti alle librerie Java

3. A cosa serve una eccezione? Per spiegarlo, sempre nella libreria Java, trova 6 tipi di eccezioni diverse e spiega a cosa servono

4. Scrivi per ogni metodo di lista spesa che eccezioni potresti "lanciare": aggiungiProdotto, eliminaProdotto, salva e carica

Attività 6 - TEORIA - Gli ArrayList

  1. Da cosa deriva l’oggetto ArrayList?

  2. Quali sono le interfacce che estende e a cosa servono?

  3. A cosa fa riferimento <E>?

  4. Elenca e descrivi tre comandi per rimuovere un elemento

  5. Elenca e descrivi tre comandi per aggiungere un elemento

  6. Come si sostituisce un elemento?

  7. Quale è la differenza tra un ArrayList, un Vector e Stack?

Attività 7 - TEORIA - I Modificatori

I Modifiers sono delle “parole” che si scrivono prima di metodi e attributi e ne modificano il significato. In particolare quelli che abbiamo usato finora sono private e public ma ce ne sono altri come final, che è utilizzato per definire dei valori costanti.

  1. Cerca la differenza di visibilità degli attributi tra protected, public, package e private e descrivila. Una volta trovata la definizione, prova a pensare in che situazione in cui useresti una modalità piuttosto che un’altra e fanne un esempio.

  2. Quale è lo scopo del modifier “abstract”? Cerca un esempio di utilizzo

  3. Quale è lo scopo del modifier “synchronized”? Cerca un esempio di utilizzo

  4. Cerca nella documentazione un esempio di utilizzo di final

  5. Cerca il significato di un metodo/attributo static e, cercando nella classe String, Float o JOptionPane, trova degli esempi di utilizzo che ne facciano capire il significato

  6. Math ha solo metodi di un tipo… secondo te perché?

Attività 8 - TEORIA - Slot Machine - It's Money Time

E' tempo di gioco d'azzardo! Realizza una slot machine grafica in cui viene gestita la puntata e la vincita.

Suggerimenti:

    • Puoi usare un ArrayList per memorizzare le immagini da fare scorrere o da mostrare

    • Per mostrare le immagini puoi usare canvas, label o bottoni, le immagini vanno messe in un package del progetto

    • Puoi usare Timer, TimerTask o Thread.sleep() per temporizzare il movimento della slot machine

    • Usa suoni divertenti per le vincite e per le giocate e per quello che vi viene in mente

    • Se vinci un milione la slot machine si trasforma in una Zem-Machine che ti trasporta nel tempo dove vuoi per cambiare tutti i voti brutti che hai preso

Il lavoro sarà fatto a gruppi:

  • Bordin - Torresan

  • Gallina - Franceschin - Ben

  • Basso Matteo - Grando

  • Kawkab - Fedato - Cream

  • Bertazzon - Rotaru

  • Demian - Gastaldo

    • Zandonà - Basso Andrea

    • Zanella - Bianchin

    • Bortolamiol - Nardi - Menegon

    • Zhou - Pellizzari

Attività 9 - Teoria - Le mappe

In Java oltre agli ArrayList ci sono altri titpi di "Collezioni" utilizzati molto di frequente: gli HashMap.

Dopo avere capito cosa sono guardando dal libro o da questo sito, rispondi alle seguenti domande:

    1. Cosa sono la chiave e il valore?

    2. Fai tre esempi di elenchi di dati che potresti inserire negli HashMap

    3. Quale è la differenza tra una lista ArrayList e una HashMap?

    4. Le SharedPreferences che abbiamo visto in Android sono una ArrayList o un HashMap (giustificando la risposta)?

    5. Che tipo di dati si possono usare come Chiave e Valore?

    6. Pensa a un paio di situazioni del programma delle slot machine in cui potresti usare gli HashMap

Attività 10 - Teoria - Basi di database

Dopo le mappe del'argomento precedente... non c'è niente di meglio che parlare di database. Poi per utilizzare i database da Java/Android... si useranno le mappe! Le mappe saranno utili anche per il PHP. Sì, dopo java si parlerà di PHP così farete un super stage quest'anno e sarete già pronti alla maturità.

L'obiettivo sarà anche fare una applicazione Android che comunichi con un database tramite delle pagine web (altervista, chiaro) per fare un gioco come quizduello.

Torniamo ai database!

  • Cos'è un database?

    • Cos'è una tabella?

    • Perché non utilizzare un file invece che un database per salvare i dati?

    • Cosa sono gli attributi?

    • Di che tipo possono essere?

    • Cos'è una chiave primaria?

    • Inventa una tabella che ha 5 attributi e una chiave primaria e popolala con 6 righe