Esercizio 8A (Ereditarietà)
Realizzare una classe Animale di cui interessa memorizzare il
nome.
Le operazioni di interesse sono:
Animale che crea un oggetto Animale, il cui nome è
passato come parametro; emettiVerso che stampa il verso dell'animale generico (ad
esempio la stringa "@#%&").Particolari tipi di animali sono il cane, il gatto e il pappagallo. Per
ciascuno di essi, realizzare un'opportuna classe Java avente un costruttore
(che crea un oggetto opportuno con il nome associato ) e il metodo
emettiVerso che stampa il verso opportuno. La classe associata al
pappagallo ha in più un metodo ripeti che stampa la
stringa passata come parametro, ripetuta due volte.
Infine, si realizzino due classi associate alle razze di cane Chiwawa e
Rottweiler, aventi un costruttore e il metodo emettiVerso che
stampa, rispettivamente, "bau!" e "BAU".
Esercizio 8B (Matrici)
Si vuole realizzare una variante del gioco Battaglia Navale. Battaglia Navale si gioca su di una matrice di 10x10 celle. Nella nostra variante l'avversario è il computer, che non può mai sparare. Esso dispone una certa quantità di navi, che occupano le cella della matrice in modo casuale. Il giocatore tenta di distruggerle. Ad ogni turno il giocatore può sparare con due tipi di arma: il cannone ed il siluro. Se spara con il cannone sulla cella in posizione (riga,colonna), ha l'effetto di colpire la cella stessa, mentre se spara con il siluro da una posizione (riga,colonna) e con una certa direzione (che può assumere solo i valori -1,0 1), colpisce tutte le celle allineate lungo la direzione la cui colonna cc è maggiore o uguale a c, come mostrato in figura.

Parte 1
Realizzare una classe Cella, che rappresenta una cella del
campo di gioco. Ciascuna cella è caratterizzata dalle seguenti
informazioni:
Cella deve essere provvista dei seguenti metodi:
toString che si comporta come segue:
" ";"X";"#".Parte 2
Realizzare una classe BattagliaNavale, che contiene una
matrice di 10x10 celle. La classe deve implementare i seguenti metodi:
random() della classe Math: se il
risultato è minore di 0.2, la cella è impostata ad
occupata, altrimenti è impostata a
non occupata).numeroNavi che restituisce il numero di celle occupate e non
colpite;
spara, che dati due interi riga e colonna,
modifica lo stato della cella di coordinate (riga,colonna), come
colpita;lanciaSiluro, che dati due interi che rappresentano la
posizione (riga,colonna) di partenza del siluro e un intero
direzione compreso tra {-1,0,1} che rappresenta la direzione, ha
l'effetto di colpire una serie di caselle allineate come descritto
sopra.toString, che restituisce la stringa rappresentante il campo
di gioco, dove per ogni cella viene stampato " ", "X" o
"#", a seconda che essa sia non colpita, colpita ed
occupata, o colpita e libera.Parte 3
Realizzare un cliente della classeBattagliaNavale che:
System.in.
Tra i commandi ci sono: