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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

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

metodo addInterest (privo <strong>di</strong> parametri espliciti) che aggiunga gli interessi al conto. Scrivete poi<br />

una classe SavingsAccountTester che costruisca uno <strong>di</strong> tali “conti <strong>di</strong> risparmio” con saldo iniziale<br />

<strong>di</strong> $ 1000 e tasso <strong>di</strong> interesse del 10%. Applicate, infi ne, per cinque volte il metodo addInterest,<br />

visualizzando il saldo fi nale e il suo valore previsto, dopo averlo calcolato manualmente.<br />

*** <strong>Esercizi</strong>o P3.4. Dotate la classe CashRegister della capacità <strong>di</strong> calcolare le tasse relative alla<br />

ven<strong>di</strong>ta effettuata, con il tasso <strong>di</strong> interesse fornito al costruttore della classe. Aggiungete i meto<strong>di</strong><br />

recordTaxablePurchase e getTotalTax (quanto viene aggiunto con recordPurchase non è<br />

soggetto a tassazione). Il metodo giveChange deve tener conto in modo corretto delle tasse applicate<br />

agli acquisti soggetti a tassazione.<br />

** <strong>Esercizi</strong>o P3.5. Dopo la chiusura, il gestore del negozio vorrebbe conoscere il volume totale<br />

<strong>di</strong> ven<strong>di</strong>te effettuate nella giornata: mo<strong>di</strong>fi cate la classe CashRegister in modo che lo possa fare,<br />

aggiungendo i meto<strong>di</strong> getSalesTotal e getSalesCount, che restituiscono l’incasso totale e il<br />

numero totale <strong>di</strong> ven<strong>di</strong>te effettuate, oltre al metodo reset che azzera tutto, in modo che le operazioni<br />

funzionino correttamente il giorno successivo.<br />

** <strong>Esercizi</strong>o P3.6. Realizzate una classe Employee (<strong>di</strong>pendente). Ogni <strong>di</strong>pendente ha un nome (una<br />

stringa) e uno stipen<strong>di</strong>o (<strong>di</strong> tipo double). Scrivete un costruttore con due parametri<br />

public Employee(String employeeName, double currentSalary)<br />

e i meto<strong>di</strong><br />

public String getName()<br />

public double getSalary()<br />

public void raiseSalary(double byPercent)<br />

Tali meto<strong>di</strong> forniscono il nome e lo stipen<strong>di</strong>o del <strong>di</strong>pendente e ne aumentano il salario della<br />

percentuale in<strong>di</strong>cata. Ecco un esempio <strong>di</strong> utilizzo:<br />

Employee harry = new Employee(“Hacker, Harry”, 50000);<br />

harry.raiseSalary(10); // Harry ottiene un aumento del 10%<br />

Progettate anche una classe EmployeeTester che collau<strong>di</strong> tutti i meto<strong>di</strong>.<br />

** <strong>Esercizi</strong>o P3.7. Realizzate una classe Car (automobile). Un’automobile è caratterizzata da un<br />

consumo <strong>di</strong> carburante (misurato in miglia/gallone o in litri/chilometro, a vostra scelta) e una<br />

certa quantità <strong>di</strong> carburante nel serbatoio. Il consumo è specifi cato nel costruttore e inizialmente<br />

il serbatoio è vuoto. Progettate: un metodo drive per simulare il percorso <strong>di</strong> un’automobile per<br />

una determinata <strong>di</strong>stanza, riducendo conseguentemente il livello <strong>di</strong> carburante nel suo serbatoio;<br />

un metodo getGasInTank, per ispezionare il livello del carburante; un metodo addGas, per fare<br />

rifornimento. Ecco un esempio <strong>di</strong> utilizzo:<br />

Car myHybrid = new Car(50); // 50 miglia per gallone<br />

myHybrid.addGas(20); // aggiungi 20 galloni <strong>di</strong> carburante<br />

myHybrid.drive(100); // viaggia per 100 miglia<br />

double gasLeft = myHybrid.getGasInTank()); // quantità <strong>di</strong> carburante rimasto<br />

Potete ipotizzare che il metodo drive non venga mai invocato per una <strong>di</strong>stanza maggiore <strong>di</strong> quella<br />

percorribile con il carburante <strong>di</strong>sponibile. Progettate anche una classe CarTester che collau<strong>di</strong> tutti<br />

i meto<strong>di</strong>.<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!