Esercizi e progetti di programmazione - Apogeo
Esercizi e progetti di programmazione - Apogeo
Esercizi e progetti di programmazione - Apogeo
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–49<br />
***G <strong>Esercizi</strong>o P10.14. Realizzate la classe astratta Vehicle e le sue sottoclassi concrete Car e Truck.<br />
Un veicolo occupa una posizione sullo schermo. Scrivete i meto<strong>di</strong> draw necessari per <strong>di</strong>segnare<br />
automobili e autocarri come segue:<br />
Scrivete, poi, un metodo randomVehicle che generi a caso riferimenti a oggetti <strong>di</strong> tipo Vehicle,<br />
metà dei quali siano automobili e l’altra metà autocarri, con posizioni casuali. Invocate il metodo<br />
<strong>di</strong>eci volte e <strong>di</strong>segnate tutti gli oggetti restituiti.<br />
**G <strong>Esercizi</strong>o P10.15. Scrivete un programma che, usando JOptionPane, chieda all’utente un numero<br />
intero e che, poi, <strong>di</strong>segni tanti rettangoli quanti ne sono stati richiesti dall’utente. I rettangoli<br />
devono comparire in posizioni casuali all’interno <strong>di</strong> un componente grafi co. Progettate la classe<br />
del frame usando l’ere<strong>di</strong>tarietà.<br />
**G <strong>Esercizi</strong>o P10.16. Scrivete un programma che chieda all’utente <strong>di</strong> inserire un numero intero n<br />
e, poi, <strong>di</strong>segni una scacchiera n × n. Progettate la classe del frame usando l’ere<strong>di</strong>tarietà.<br />
Progetti <strong>di</strong> <strong>programmazione</strong><br />
Progetto 10.1. Avete il compito <strong>di</strong> programmare robot con vari comportamenti, che cerchino<br />
<strong>di</strong> uscire da un labirinto (maze) <strong>di</strong> questo tipo:<br />
* *******<br />
* * *<br />
* ***** *<br />
* * * *<br />
* * *** *<br />
* * *<br />
*** * * *<br />
* * *<br />
******* *<br />
Un robot ha una posizione e un metodo void move(Maze m) che la mo<strong>di</strong>fi ca. Progettate una<br />
superclasse comune, Robot, il cui metodo move non fa nulla. Progettate le sottoclassi RandomRobot,<br />
RightHandRuleRobot e MemoryRobot, che rappresentino robot che agiscono con <strong>di</strong>fferenti<br />
strategie per uscire dai labirinti. Un RandomRobot effettua semplicemente movimenti casuali. Un<br />
RightHandRuleRobot si sposta nel labirinto in modo che la sua mano destra sia sempre in contatto<br />
con una parete. Un MemoryRobot si ricorda <strong>di</strong> tutte le posizioni in cui si è già trovato in precedenza<br />
e non imbocca mai per la seconda volta una strada che sa essere senza uscita.<br />
Progetto 10.2. Realizzate i meto<strong>di</strong> toString, equals e clone per tutte le sottoclassi della classe<br />
BankAccount, oltre che per la classe Bank vista nel Capitolo 7. Scrivete collau<strong>di</strong> <strong>di</strong> unità che verifi<br />
chino il corretto funzionamento dei meto<strong>di</strong>. Siate certi <strong>di</strong> collaudare un esemplare <strong>di</strong> Bank che<br />
contenga esemplari <strong>di</strong> conti <strong>di</strong> tipo <strong>di</strong>verso.<br />
Cay Horstmann: Concetti <strong>di</strong> informatica e fondamenti <strong>di</strong> Java 5 a ed. - Copyright 2010 <strong>Apogeo</strong> srl