Programmazione a oggetti 17.07.2006 _________________________________________________________________________________________________ ESERCIZIO 1 C++ o Java (punti 15) Progettare in C++ o in Java alcune classi per realizzare un tipico gioco: Battaglia navale. Il gioco prevede per ogni giocatore un campo consistente in una matrice quadrata di posizioni. Su questo campo i due giocatori posso collocare un certo numero di navi. Una nave consiste in un numero di posizioni contigue (da uno a quattro) poste in verticale o in orizzontale. Svolgere i seguenti esercizi: 1) Progettare le classi che si ritengono necessarie per modellare le navi e il campo, nonché una classe giocatore caratterizzato da un nome, un punteggio e un campo con le navi in esso posizionate. 2) Scrivere una metodo della classe campo che, date le coordinate di una posizione, restituisca vero se la posizione è occupata da una nave, falso altrimenti. 3) Scrivere un metodo salva della classe campo che scriva su un file (il cui nome è fornito come parametro) le dimensioni del campo e i dati delle navi su di esso posizionati. Scrivere un metodo costruttore che, dato il nome di un file prodotto dal metodo salva, inizzializzi gli attributi del campo con le eventuali navi in esso contenute. _________________________________________________________________________________________________ ESERCIZIO 2 (punti 8) Progettare in C++ o in Java ( ma in un linguaggio diverso da quello usato nell'esercizio 1) una classe astratta barca da cui derivare almeno due classi per memorizzare tipi differenti di barche (es. peschereccio, transatlantico, motoscafo, etc.). ESERCIZIO 3 (punti 4) Illustrare le differenze e le analogie tra il C++ e Java nella realizzazione delle calssi interfaccia. _________________________________________________________________________________________________ ESERCIZIO 4 (punti 3) Dire se è vera o falsa la seguente affermazione e motivare la risposta: Un programma sorgente Java è compilato usando una Java Virtual Machine, che, a partire da un file sorgente, produce un altro programma in bytecode. Scrivere in modo leggibile. Numerare i fogli di bella secondo l'ordine in cui dovranno essere letti dal docente.