31.05.2013 Views

Esercizi e progetti di programmazione - Apogeo

Esercizi e progetti di programmazione - Apogeo

Esercizi e progetti di programmazione - Apogeo

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

ESERCIZI E PROGETTI DI PROGRAMMAZIONE E–13<br />

**G <strong>Esercizi</strong>o P3.22. Costruite un grafi co a barre per rappresentare i dati seguenti:<br />

Nome del ponte Campata massima<br />

(in pie<strong>di</strong>)<br />

Golden Gate 4200<br />

Brooklyn 1595<br />

Delaware Memorial 2150<br />

Mackinac 3800<br />

Disponete le barre orizzontalmente, per facilitare l’inserimento delle etichette in corrispondenza<br />

<strong>di</strong> ciascuna barra, e progettate le classi BarChartViewer e BarChartComponent.<br />

Progetti <strong>di</strong> <strong>programmazione</strong><br />

Progetto 3.1. Con questo progetto migliorerete la classe BankAccount e vedrete come<br />

l’astrazione e l’incapsulamento possano portare un cambiamento rivoluzionario nel mondo<br />

del software.<br />

Iniziate con un miglioramento molto semplice: addebitate una commissione per ogni versamento<br />

e per ogni prelievo. Consentite l’impostazione del valore della commissione e mo<strong>di</strong>fi cate i<br />

meto<strong>di</strong> deposit e withdraw in modo che venga applicata tale commissione. Collaudate la classe<br />

risultante e verifi cate che i costi delle commissioni vengano gestiti correttamente.<br />

Fate ora una mo<strong>di</strong>fi ca più complessa. La banca consentirà ogni mese un numero fi sso <strong>di</strong><br />

operazioni gratuite (versamenti o prelievi) e applicherà la commissione soltanto alle operazioni<br />

eccedenti. Le commissioni non vengono prelevate all’atto della singola operazione, ma al termine<br />

<strong>di</strong> ogni mese.<br />

Progettate e realizzate un nuovo metodo per la classe BankAccount, deductMonthlyCharge,<br />

che sottragga al saldo del conto le commissioni del mese appena trascorso, azzerando il conteggio<br />

delle operazioni. Suggerimento: usate il metodo Math.max(effettuate, gratuite).<br />

Scrivete un programma <strong>di</strong> collaudo che verifi chi la correttezza del funzionamento della classe<br />

simulando operazioni per alcuni mesi.<br />

Progetto 3.2. Con questo progetto realizzerete un’alternativa orientata agli oggetti per il programma<br />

“Hello, World!” che avete visto nel Capitolo 1.<br />

Iniziate con una semplice classe Greeter dotata <strong>di</strong> un solo metodo, sayHello, che deve restituire<br />

una stringa, senza visualizzarla. Usate BlueJ per creare due oggetti <strong>di</strong> tale classe, invocandone<br />

i relativi meto<strong>di</strong> sayHello.<br />

Ovviamente si tratta <strong>di</strong> un’attività alquanto noiosa, dal momento che entrambi gli oggetti<br />

generano il medesimo saluto.<br />

Migliorate la classe Greeter in modo che ciascun oggetto produca un saluto personalizzabile.<br />

Ad esempio, l’oggetto costruito con new Greeter(“Dave”) dovrebbe <strong>di</strong>re “Hello, Dave!” (usate<br />

il metodo concat per unire due stringhe in modo da formare una stringa più lunga, oppure date<br />

un’occhiata al Paragrafo 4.6 per vedere come si possa usare l’operatore + per ottenere lo stesso<br />

risultato).<br />

Cay Horstmann: Concetti <strong>di</strong> informatica e fondamenti <strong>di</strong> Java 5 a ed. - Copyright 2010 <strong>Apogeo</strong> srl

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!