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
Da cosa deriva l’oggetto ArrayList?
Quali sono le interfacce che estende e a cosa servono?
A cosa fa riferimento <E>?
Elenca e descrivi tre comandi per rimuovere un elemento
Elenca e descrivi tre comandi per aggiungere un elemento
Come si sostituisce un elemento?
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.
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.
Quale è lo scopo del modifier “abstract”? Cerca un esempio di utilizzo
Quale è lo scopo del modifier “synchronized”? Cerca un esempio di utilizzo
Cerca nella documentazione un esempio di utilizzo di final
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
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:
Cosa sono la chiave e il valore?
Fai tre esempi di elenchi di dati che potresti inserire negli HashMap
Quale è la differenza tra una lista ArrayList e una HashMap?
Le SharedPreferences che abbiamo visto in Android sono una ArrayList o un HashMap (giustificando la risposta)?
Che tipo di dati si possono usare come Chiave e Valore?
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