REGOLE VALIDE PER TUTTI GLI ESERCIZI: Per ciascuna classe scritta per risolvere il problema descritto nell'esercizio bisogna scrivere sempre una classe di collaudo che ne effettui una buona copertura, inclusi i casi limite. Per ciascuna classe, anche quelle di collaudo, bisogna scrivere commenti al codice utilizzando il formato javadoc e generare automaticamente la documentazione da allegare al codice consegnato.
Creare due rettangoli in posizioni diverse del piano. Invertirne quindi la posizione dell'angolo superiore sinistro utilizzando il metodo translate, dopo aver calcolato opportunamente lo spostamento relativo. Stampare in output le posizioni iniziali e finali di entrambi i rettangoli.
Creare una classe BankAccountNotFree che prevede l'addebito di un canone mensile e di un costo per le operazioni di prelievo e deposito dopo un certo numero di operazioni gratuite.
Il conto prevede anche un tasso di interesse attivo per l'importo eccedente 1000 EUR.
L'addebito e l'accredito vengono effettuati tramite metodi appositamente creati.
Canone mensile, numero di operazioni gratuite, costo delle operazioni e tasso d'interesse attivo possono variare da conto a conto.
Scrivere una classe BankAccountNotFreeTester che crea due conti con parametri di costruzione diversi.
Per ciascuno di essi esegue una serie di operazioni di prelievo e deposito, seguita da un addebito dei costi di gestione conto e l'accredito degli interessi.
Stampare in output i valori attesi e quelli ottenuti. (N.B. ripetere due volte per ciascun conto)
Commentare il codice utilizzando javadoc e generare la documentazione.
Suggerimento: Cercare di scrivere la classe di collaudo in maniera tale da "coprire" bene il codice.
(consegna entro il 23/10/09 alle 11:00) Scrivete un programma che chiede all'utente una sequenza di numeri interi, terminata dall'immissione della lettera 'e' maiuscola o minuscola. Gli interi vanno memorizzati in un vettore (ArrayList). Al termine dell'immissione viene chiesto all'utente di immettere un comando per calcolare la somma (s), il numero di elementi (c), la media (m), il massimo (max) ed il minimo (min), o la conversione in altra valuta (conv) in base ad un tasso di conversione costante. In ogni momento la pressione di 'q' fa uscire dal programma.
Scrivete una classe Triangolo che usa un costruttore che accetta come parametri esplciti tre punti. Scrivere un metodo che verifichi se il triangolo è un triangolo isoscele. Scrivere un metodo che verifichi se il triangolo è un triangolo rettangolo (usando il teorema di Pitagora). Scrivere un metodo che stabilisca il tipo di triangolo: rettangolo isoscele, rettangolo, isoscele, scaleno.
Scrivere una classe TriangoloTester che effettua test su vari tipi di triangolo.
In aggiunta, scrivere una classe TriangoloAutomaticTester che effettua test su vari tipi di triangolo generati automaticamente in maniera casuale usando dei metodi che "fabbricano" triangoli di vario tipo (assumendo che lo facciano in maniera corretta).
Scrivete un programma per gestire una rete urbana di autobus.
In una autorimessa ci sono degli autobus, che hanno un numero di matricola ed numero di posti fisso, stabilito dal costruttore del veicolo.
Gli autobus seguono un percorso - identico per tutti gli autobus - costituito da una serie di fermate identificate da un nome. Quando l'autobus e' giunto all'ultima fermata del percorso riprende il suo viaggio in senso inverso.
A ciascuna fermata ci sono dei passeggeri identificati da un codice che attendono l'autobus. Quando l'autobus si trova ad una fermata alcuni passeggeri scendono dall'autobus ed altri passeggeri - che si trovavano alla fermata prima dell'arrivo dell'autobus - salgono. I passeggeri che salgono e scendono sono scelti in numero e modo casuale (rispettando i vincoli di capienza dell'autobus).
Annotare i metodi della classe BankAccountNotFree con pre-condizioni e post-condizioni.
Riscrivete i test per la classe Rettangolo utilizzando JUnit.
Inserite il codice della classe Rettangolo all'interno di un package (mettendo in pratica i suggerimenti dati per la scelta del nome del package).
Spostate il codice di questo pacchetto in una nuova directory (p.e. /home/nomeutente/java-packages o c:\java-packages) ed utilizzate RettangoloTester senza metterlo nella stessa directory di Rettangolo.java
Modificate DataSetTester.java (Cap. 9) inserendo BankAccounts e Coins all'interno dello stesso DataSet. Invocate quindi i metodi getMaximum() e getAverage() sul DataSet. Cosa succede?
Scrivete una classe JUnitExceptionTester.java in cui effettuate il cast di un oggetto di tipo Rettangolo ad un oggetto di tipo Triangolo. Cosa succede? Scrivere un test JUnit per questo caso.
Scrivete un'interfaccia FiguraGeometrica che contiene due metodi getArea() e getPerimetro() per calcolare, rispettivamente, area e perimetro della figura. Modificare quindi le classi Triangolo e Rettangolo implementando tale interfaccia. Scrivete una classe SommaFigura che contiene un ArrayList di figure geometriche, un metodo sumArea() per sommarne le aree ed un metodo sumPerimetro() per sommarne i perimetri. Scrivete, come sempre, una classe di collaudo SommaFiguraTester.
Scrivete una classe Persona con attributi per il nome e l'eta. Definire alcuni costruttori per Persona. Ridefinire i metodi equals e toString di Object per Persona.
Creare una sottoclasse Studente di Persona con un'ulteriore attributo per il numero di matricola.
Creare una sottoclasse Docente di Persona con un'ulteriore attributo per la materia insegnata.
Fornire costruttori e ridefinire i metodi equals e toString nelle sottoclassi Studente e Docente riutilizzando quanto scritto per Persona.
In una classe di test definite un metodo testToStringPoly che invoca il metodo toString su tutti gli elementi di un vettore di persone. Eseguite testToStringPoly su un vettore che contiene persone, studenti e docenti.
Scrivete un programma CopyFile che copia un file in un altro. I nomi dei file sono specificati sulla riga di comando. Per esempio: java CopyFile file1.txt filedest.sav (NOTA: esercizio P11.3 del libro). Prestate attenzione alla gestione delle eccezioni.
Scrivete un programma StringManager che usa liste collegate ed iteratori su di esse per gestire un elenco di stringhe. Inizialmente la stringa è vuota.
L'utente puo' impartire comandi per aggiungere, ottenere, rimuovere elementi dall'inizio o dalla fine della lista (usando i metodi di LinkedList). L'utente può inoltre impartire comandi per aggiungere, ottenere, rimuovere elementi in una posizione generica.
Scegliete liberamente le modalità di interazione (testuale/grafica, comando e parametri inseriti congiuntamente/separatamente).
Scrivete una classe generica Tripla che memorizzi tre elementi di tipo ignoto a priori. Il primo ed il terzo elemento sono dello stesso tipo. Il secondo elemento deve implementare l'interfaccia Comparable.
Scrivere i metodi di accesso ed un metodo invertiElementi per scambiare il primo con il terzo elemento.
Scrivere una classe di test TriplaTest in cui si testano i metodi definiti in Tripla e si usa un metodo che restituisce la tripla con il valore massimo del secondo elemento da un vettore di triple.