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–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

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

Saved successfully!

Ooh no, something went wrong!