Slide esercizi

Download Report

Transcript Slide esercizi

Esercizi di ripasso
Esercizio 1
I
Supponendo che sia definita la classe:
1 public class Matrix{
2
3
public int rows(){ /∗∗/}
4
public int columns(){ /∗∗/}
5
6
public float element(int row, int column){/∗∗/}
7 }
I
Si scriva in Java un opportuno iteratore che gestisca l’accesso
sequenziale (per riga) agli elementi della matrice
Esercizio 2
I
Supponendo che sia definita la classe:
1 public class InsiemeInteri{
2
private int[] insieme;
3 }
I
Si scriva in Java un opportuno iteratore che restituisca in
sequenza i numeri primi contenuti nell’array, definendo sia il
metodo primi() di InsiemeNumeri che restituisce l’iteratore,
sia la classe PrimiGen che definisce l’iteratore (ossia il
generatore).
I
L’iteratore deve scandire gli elementi dell’array e restituire solo i
numeri primi. Ad esempio, se l’array contenesse i numeri 5, 7,
23, 45, 13, 48, 17, l’iteratore dovrebbe restituire i numeri 5, 7,
23, 13, e 17.
Esercizio 3
I
Un Orto contiene diversi ortaggi (definiti dalla classe Ortaggio).
I
Normalmente gli ortaggi sono disponibili tutto l’anno (ortaggi
“generici”), ma alcuni sono stagionali (OrtaggioStagionale).
I
Le due tipologie d’ortaggio definiscono un metodo raccogli()
senza parametri per raccogliere l’ortaggio destinatario del
messaggio di invocazione.
I
Si vuole discutere se, rispettando il principio di sostituzione,
OrtaggioStagionale debba essere definito come sotto-classe di
Ortaggio o vice-versa.
I
Nella discussione, si può introdurre se necessario un metodo
pubblico e puro pronto() che restituisce vero se l’ortaggio è
pronto per essere raccolto.
Esercizio 3
I
Si considerino, in particolare, le seguenti alternative per
l’operazione raccogli():
1. Se raccogli dovesse essere sempre definita come funzione
“totale”, ovvero venisse restituita un’eccezione qualora l’ortaggio
non fosse pronto per il raccolto, quale gerarchia di ereditarietà
potremmo immaginare? Perchè? Come si esprimerebbe in JML
la specifica di raccogli() nelle due classi?
2. Se si preferisse invece definire raccogli come una funzione
parziale nel caso si volesse raccogliere un OrtaggioStagionale
fuori stagione, quale gerarchia di ereditarietà potremmo
immaginare? Perchè? Come si scriverebbe in JML la specifica
di raccogli() nelle due classi?