Ciao,
questa è la prima parte di un vecchio compito d'esame....mi potete dire seè impostato correttamente?

Il testo dice:

Si consideri un metodo generaElementoACaso che prende in input una collezione generica di oggetti, ne estrae un iteratore, calcola e restituisce un elemento a caso della collezione.

Si richiede l'implementazione in linguaggio Java del metodo generaElementoACaso nonchè il progetto e l'implementazione in Java di tutti i tipi astratti ad esso necessari. Si utilizzi a tale scopo il metodo di istanza nextInt(), di tipo int, della classe Random.


Praticame io l'ho pensato così:

Mi definisco un'interface chiamata CollConIteratore che mi rappresenta genericissime collezioni di oggetti che hanno in comune una sola cosa: avere definito un iteratore.

Poi definisco una classe Utility che conterrà il metodo generaElementoACaso che mi si chiede di implementare sul testo dell'esercizio. Tale metodo prenderà come parametro il riferimento ad un oggetto CollConIteratore (quindi a qualsiasi oggetto istanza di una classe che implementa l'interface precedentemente definita) e restituirà al chiamante il riferimento ad un Object (ad un Object perchè sarà per forza di cose il riferimento ad un oggetto istanza di una classe che implementa l'interface CollConIteratore)

Quindi in codice qualcosa del genere:

Intereface CollConIteratore:
codice:
public interface CollConIteratore{
	Iterator enumera();
}
Classe Utility contenente il solo metodo generaElementoACaso:
codice:
public class Utility{
	
	/** REQUIRES: C != 0
		EFFECTS: Restituisce un elemento casuale presente nella collezione C
		@param: un oggetto di tipo CollConIteratore
		@retur: il riferimento ad un Object */
	public static Object get ElementoACaso(CollConIteratore c){
		
		Random r = new Random m():		// Crea un oggetto random
		Iterator it = c.enumera():		// Crea il corretto iteratore per la collezione c
		int quale = r.nextInt();		// Genera un intero casuale partendo da un oggetto random
		int i = 0;
		int quanti = 0;
		
		while(i < quale){		// Finchè il contatore i è minore del numero casuale quale precedentemente generato
			it.remove; 	// Rimuovi l'elemento dall'iteratore (non dalla collezione, passa soloal prossimo elemento dell'iteratore)
			i++;		// Incrementa i di 1
		}
		
		/* Ritorna al chiamante il prossimo elemento nella collezione che corrisponde all'elemento nella posizione quale
		   generata in maniera casuale */
		return it.next();
	}
}
Ci può stare come impostazione?

mmm tra l'altro ho vari problemi...qualche giorno fa mi sono beccato un virus devastante sul mio portatile ed ho dovuto usare avira (un antivirus bootabile) che mi ha trovato e bloccato varie porcate dentro Java...ed ora mi stà dando qualche problema a compilare questa cosa (però non sò se c'entra nulla)...ad esempio mi dà:

C:\Programmi\Crimson Editor\template\esercizi\esami\07-02-07>javac CollConIteratore.java
CollConIteratore.java:2: cannot find symbol
symbol : class Iterator
location: interface CollConIteratore
Iterator enumera();
^
1 error

Può dipendere da questi casini o ho sbagliato qualcosa io?
Altra cosa...prima quando premevo il tasto TAB nel prompt di msdos mi completava le parole già iniziate...ora no...booo

Grazie
Andrea